{
  "name": "java",
  "word": "identifier",
  "rules": {
    "program": {
      "type": "REPEAT",
      "content": {
        "type": "SYMBOL",
        "name": "statement"
      }
    },
    "_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "decimal_integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "hex_integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "octal_integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "binary_integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "decimal_floating_point_literal"
        },
        {
          "type": "SYMBOL",
          "name": "hex_floating_point_literal"
        },
        {
          "type": "SYMBOL",
          "name": "true"
        },
        {
          "type": "SYMBOL",
          "name": "false"
        },
        {
          "type": "SYMBOL",
          "name": "character_literal"
        },
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "null_literal"
        }
      ]
    },
    "decimal_integer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "TOKEN",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[0-9]+"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "_+"
                      },
                      {
                        "type": "PATTERN",
                        "value": "[0-9]+"
                      }
                    ]
                  }
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "l"
                  },
                  {
                    "type": "STRING",
                    "value": "L"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "hex_integer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "0x"
              },
              {
                "type": "STRING",
                "value": "0X"
              }
            ]
          },
          {
            "type": "TOKEN",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[A-Fa-f0-9]+"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "_"
                      },
                      {
                        "type": "PATTERN",
                        "value": "[A-Fa-f0-9]+"
                      }
                    ]
                  }
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "l"
                  },
                  {
                    "type": "STRING",
                    "value": "L"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "octal_integer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "0o"
              },
              {
                "type": "STRING",
                "value": "0O"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "[0-7]+"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "_"
                    },
                    {
                      "type": "PATTERN",
                      "value": "[0-7]+"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "l"
                  },
                  {
                    "type": "STRING",
                    "value": "L"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "binary_integer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "0b"
              },
              {
                "type": "STRING",
                "value": "0B"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "[01]+"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "_"
                    },
                    {
                      "type": "PATTERN",
                      "value": "[01]+"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "l"
                  },
                  {
                    "type": "STRING",
                    "value": "L"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "decimal_floating_point_literal": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "TOKEN",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "_+"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9]+"
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "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": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[eE]"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "-"
                              },
                              {
                                "type": "STRING",
                                "value": "+"
                              }
                            ]
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "TOKEN",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "PATTERN",
                              "value": "[0-9]+"
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "_+"
                                  },
                                  {
                                    "type": "PATTERN",
                                    "value": "[0-9]+"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[fFdD]"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "TOKEN",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "_+"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9]+"
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[eE]"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "-"
                              },
                              {
                                "type": "STRING",
                                "value": "+"
                              }
                            ]
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "TOKEN",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "PATTERN",
                              "value": "[0-9]+"
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "_+"
                                  },
                                  {
                                    "type": "PATTERN",
                                    "value": "[0-9]+"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[fFdD]"
                  },
                  {
                    "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": "[eEpP]"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "-"
                      },
                      {
                        "type": "STRING",
                        "value": "+"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "TOKEN",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "_+"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9]+"
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[fFdD]"
                  },
                  {
                    "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": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[eE]"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "-"
                              },
                              {
                                "type": "STRING",
                                "value": "+"
                              }
                            ]
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "TOKEN",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "PATTERN",
                              "value": "[0-9]+"
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "_+"
                                  },
                                  {
                                    "type": "PATTERN",
                                    "value": "[0-9]+"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[fFdD]"
              }
            ]
          }
        ]
      }
    },
    "hex_floating_point_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "0x"
              },
              {
                "type": "STRING",
                "value": "0X"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "TOKEN",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "PATTERN",
                          "value": "[A-Fa-f0-9]+"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "_"
                              },
                              {
                                "type": "PATTERN",
                                "value": "[A-Fa-f0-9]+"
                              }
                            ]
                          }
                        }
                      ]
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "."
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "TOKEN",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "PATTERN",
                              "value": "[A-Fa-f0-9]+"
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": "_"
                                  },
                                  {
                                    "type": "PATTERN",
                                    "value": "[A-Fa-f0-9]+"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "STRING",
                    "value": "."
                  },
                  {
                    "type": "TOKEN",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "PATTERN",
                          "value": "[A-Fa-f0-9]+"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "_"
                              },
                              {
                                "type": "PATTERN",
                                "value": "[A-Fa-f0-9]+"
                              }
                            ]
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eEpP]"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "-"
                          },
                          {
                            "type": "STRING",
                            "value": "+"
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "TOKEN",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "PATTERN",
                          "value": "[0-9]+"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "_+"
                              },
                              {
                                "type": "PATTERN",
                                "value": "[0-9]+"
                              }
                            ]
                          }
                        }
                      ]
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[fFdD]"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "true": {
      "type": "STRING",
      "value": "true"
    },
    "false": {
      "type": "STRING",
      "value": "false"
    },
    "character_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "'"
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[^\\\\'\\n]"
                },
                {
                  "type": "PATTERN",
                  "value": "\\\\."
                },
                {
                  "type": "PATTERN",
                  "value": "\\\\\\n"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "'"
          }
        ]
      }
    },
    "string_literal": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "\""
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[^\\\\\"\\n]"
                    },
                    {
                      "type": "PATTERN",
                      "value": "\\\\(.|\\n)"
                    }
                  ]
                }
              },
              {
                "type": "STRING",
                "value": "\""
              }
            ]
          }
        ]
      }
    },
    "null_literal": {
      "type": "STRING",
      "value": "null"
    },
    "expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "assignment_expression"
        },
        {
          "type": "SYMBOL",
          "name": "binary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "instanceof_expression"
        },
        {
          "type": "SYMBOL",
          "name": "lambda_expression"
        },
        {
          "type": "SYMBOL",
          "name": "ternary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "update_expression"
        },
        {
          "type": "SYMBOL",
          "name": "primary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "cast_expression"
        },
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SYMBOL",
            "name": "switch_expression"
          }
        }
      ]
    },
    "cast_expression": {
      "type": "PREC",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "type",
                "content": {
                  "type": "SYMBOL",
                  "name": "_type"
                }
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "&"
                    },
                    {
                      "type": "FIELD",
                      "name": "type",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_type"
                      }
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "FIELD",
            "name": "value",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          }
        ]
      }
    },
    "assignment_expression": {
      "type": "PREC_RIGHT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "_reserved_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "field_access"
                },
                {
                  "type": "SYMBOL",
                  "name": "array_access"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "STRING",
                  "value": "+="
                },
                {
                  "type": "STRING",
                  "value": "-="
                },
                {
                  "type": "STRING",
                  "value": "*="
                },
                {
                  "type": "STRING",
                  "value": "/="
                },
                {
                  "type": "STRING",
                  "value": "&="
                },
                {
                  "type": "STRING",
                  "value": "|="
                },
                {
                  "type": "STRING",
                  "value": "^="
                },
                {
                  "type": "STRING",
                  "value": "%="
                },
                {
                  "type": "STRING",
                  "value": "<<="
                },
                {
                  "type": "STRING",
                  "value": ">>="
                },
                {
                  "type": "STRING",
                  "value": ">>>="
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          }
        ]
      }
    },
    "binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "=="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "!="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "||"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 12,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "+"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 12,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "-"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 13,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "*"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 13,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "/"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "|"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "^"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 13,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "%"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<<"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">>"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">>>"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        }
      ]
    },
    "instanceof_expression": {
      "type": "PREC",
      "value": 10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": "instanceof"
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "_type"
            }
          }
        ]
      }
    },
    "lambda_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "formal_parameters"
              },
              {
                "type": "SYMBOL",
                "name": "inferred_parameters"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "->"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "SYMBOL",
                "name": "block"
              }
            ]
          }
        }
      ]
    },
    "inferred_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "ternary_expression": {
      "type": "PREC_RIGHT",
      "value": 3,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": "?"
          },
          {
            "type": "FIELD",
            "name": "consequence",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          }
        ]
      }
    },
    "unary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "+"
                }
              },
              {
                "type": "FIELD",
                "name": "operand",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "-"
                }
              },
              {
                "type": "FIELD",
                "name": "operand",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "!"
                }
              },
              {
                "type": "FIELD",
                "name": "operand",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "~"
                }
              },
              {
                "type": "FIELD",
                "name": "operand",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        }
      ]
    },
    "update_expression": {
      "type": "PREC_LEFT",
      "value": 15,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "STRING",
                "value": "++"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "STRING",
                "value": "--"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "++"
              },
              {
                "type": "SYMBOL",
                "name": "expression"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "--"
              },
              {
                "type": "SYMBOL",
                "name": "expression"
              }
            ]
          }
        ]
      }
    },
    "primary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_literal"
        },
        {
          "type": "SYMBOL",
          "name": "class_literal"
        },
        {
          "type": "SYMBOL",
          "name": "this"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_reserved_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "object_creation_expression"
        },
        {
          "type": "SYMBOL",
          "name": "field_access"
        },
        {
          "type": "SYMBOL",
          "name": "array_access"
        },
        {
          "type": "SYMBOL",
          "name": "method_invocation"
        },
        {
          "type": "SYMBOL",
          "name": "method_reference"
        },
        {
          "type": "SYMBOL",
          "name": "array_creation_expression"
        }
      ]
    },
    "array_creation_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "new"
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "_simple_type"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "dimensions",
                    "content": {
                      "type": "REPEAT1",
                      "content": {
                        "type": "SYMBOL",
                        "name": "dimensions_expr"
                      }
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "dimensions",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "dimensions"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "dimensions",
                    "content": {
                      "type": "SYMBOL",
                      "name": "dimensions"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "value",
                    "content": {
                      "type": "SYMBOL",
                      "name": "array_initializer"
                    }
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "dimensions_expr": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_annotation"
          }
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "class_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_unannotated_type"
        },
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "STRING",
          "value": "class"
        }
      ]
    },
    "object_creation_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_unqualified_object_creation_expression"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "primary_expression"
            },
            {
              "type": "STRING",
              "value": "."
            },
            {
              "type": "SYMBOL",
              "name": "_unqualified_object_creation_expression"
            }
          ]
        }
      ]
    },
    "_unqualified_object_creation_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "new"
          },
          {
            "type": "FIELD",
            "name": "type_arguments",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type_arguments"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "_simple_type"
            }
          },
          {
            "type": "FIELD",
            "name": "arguments",
            "content": {
              "type": "SYMBOL",
              "name": "argument_list"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "class_body"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "field_access": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "object",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "primary_expression"
              },
              {
                "type": "SYMBOL",
                "name": "super"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "."
                },
                {
                  "type": "SYMBOL",
                  "name": "super"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "FIELD",
          "name": "field",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "_reserved_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "this"
              }
            ]
          }
        }
      ]
    },
    "array_access": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "array",
          "content": {
            "type": "SYMBOL",
            "name": "primary_expression"
          }
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "FIELD",
          "name": "index",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "method_invocation": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_reserved_identifier"
                  }
                ]
              }
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "object",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "primary_expression"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "super"
                      }
                    ]
                  }
                },
                {
                  "type": "STRING",
                  "value": "."
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "super"
                        },
                        {
                          "type": "STRING",
                          "value": "."
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "FIELD",
                  "name": "type_arguments",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "type_arguments"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                },
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_reserved_identifier"
                      }
                    ]
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "arguments",
          "content": {
            "type": "SYMBOL",
            "name": "argument_list"
          }
        }
      ]
    },
    "argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "expression"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "expression"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "method_reference": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "SYMBOL",
              "name": "primary_expression"
            },
            {
              "type": "SYMBOL",
              "name": "super"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "::"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_arguments"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "new"
            },
            {
              "type": "SYMBOL",
              "name": "identifier"
            }
          ]
        }
      ]
    },
    "type_arguments": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_type"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "wildcard"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_type"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "wildcard"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "wildcard": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_annotation"
          }
        },
        {
          "type": "STRING",
          "value": "?"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_wildcard_bounds"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_wildcard_bounds": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "extends"
            },
            {
              "type": "SYMBOL",
              "name": "_type"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "super"
            },
            {
              "type": "SYMBOL",
              "name": "_type"
            }
          ]
        }
      ]
    },
    "dimensions": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_annotation"
              }
            },
            {
              "type": "STRING",
              "value": "["
            },
            {
              "type": "STRING",
              "value": "]"
            }
          ]
        }
      }
    },
    "switch_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "switch"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "switch_block"
          }
        }
      ]
    },
    "switch_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "switch_block_statement_group"
              }
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "switch_rule"
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "switch_block_statement_group": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "REPEAT1",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "switch_label"
                },
                {
                  "type": "STRING",
                  "value": ":"
                }
              ]
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "statement"
            }
          }
        ]
      }
    },
    "switch_rule": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "switch_label"
        },
        {
          "type": "STRING",
          "value": "->"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "expression_statement"
            },
            {
              "type": "SYMBOL",
              "name": "throw_statement"
            },
            {
              "type": "SYMBOL",
              "name": "block"
            }
          ]
        }
      ]
    },
    "switch_label": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "case"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "expression"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "expression"
                      }
                    ]
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": "default"
        }
      ]
    },
    "statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "declaration"
        },
        {
          "type": "SYMBOL",
          "name": "expression_statement"
        },
        {
          "type": "SYMBOL",
          "name": "labeled_statement"
        },
        {
          "type": "SYMBOL",
          "name": "if_statement"
        },
        {
          "type": "SYMBOL",
          "name": "while_statement"
        },
        {
          "type": "SYMBOL",
          "name": "for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "enhanced_for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        },
        {
          "type": "STRING",
          "value": ";"
        },
        {
          "type": "SYMBOL",
          "name": "assert_statement"
        },
        {
          "type": "SYMBOL",
          "name": "do_statement"
        },
        {
          "type": "SYMBOL",
          "name": "break_statement"
        },
        {
          "type": "SYMBOL",
          "name": "continue_statement"
        },
        {
          "type": "SYMBOL",
          "name": "return_statement"
        },
        {
          "type": "SYMBOL",
          "name": "yield_statement"
        },
        {
          "type": "SYMBOL",
          "name": "switch_expression"
        },
        {
          "type": "SYMBOL",
          "name": "synchronized_statement"
        },
        {
          "type": "SYMBOL",
          "name": "local_variable_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "throw_statement"
        },
        {
          "type": "SYMBOL",
          "name": "try_statement"
        },
        {
          "type": "SYMBOL",
          "name": "try_with_resources_statement"
        }
      ]
    },
    "block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "expression_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "labeled_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "statement"
        }
      ]
    },
    "assert_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "assert"
            },
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "assert"
            },
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "STRING",
              "value": ":"
            },
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        }
      ]
    },
    "do_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "do"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        },
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "break_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "break"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "continue_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "continue"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "return_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "return"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "yield_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "yield"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "synchronized_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "synchronized"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "throw_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "throw"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "try_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "try"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "REPEAT1",
              "content": {
                "type": "SYMBOL",
                "name": "catch_clause"
              }
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SYMBOL",
                    "name": "catch_clause"
                  }
                },
                {
                  "type": "SYMBOL",
                  "name": "finally_clause"
                }
              ]
            }
          ]
        }
      ]
    },
    "catch_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "catch"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "catch_formal_parameter"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "catch_formal_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "catch_type"
        },
        {
          "type": "SYMBOL",
          "name": "_variable_declarator_id"
        }
      ]
    },
    "catch_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_unannotated_type"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "|"
              },
              {
                "type": "SYMBOL",
                "name": "_unannotated_type"
              }
            ]
          }
        }
      ]
    },
    "finally_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "finally"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "try_with_resources_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "try"
        },
        {
          "type": "FIELD",
          "name": "resources",
          "content": {
            "type": "SYMBOL",
            "name": "resource_specification"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "catch_clause"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "finally_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "resource_specification": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "resource"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ";"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "resource"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "resource": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "modifiers"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "type",
              "content": {
                "type": "SYMBOL",
                "name": "_unannotated_type"
              }
            },
            {
              "type": "SYMBOL",
              "name": "_variable_declarator_id"
            },
            {
              "type": "STRING",
              "value": "="
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "SYMBOL",
                "name": "expression"
              }
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "field_access"
        }
      ]
    },
    "if_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "parenthesized_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "consequence",
            "content": {
              "type": "SYMBOL",
              "name": "statement"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "else"
                  },
                  {
                    "type": "FIELD",
                    "name": "alternative",
                    "content": {
                      "type": "SYMBOL",
                      "name": "statement"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "while_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "init",
              "content": {
                "type": "SYMBOL",
                "name": "local_variable_declaration"
              }
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "FIELD",
                          "name": "init",
                          "content": {
                            "type": "SYMBOL",
                            "name": "expression"
                          }
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "FIELD",
                                "name": "init",
                                "content": {
                                  "type": "SYMBOL",
                                  "name": "expression"
                                }
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": ";"
                }
              ]
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ";"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "update",
                  "content": {
                    "type": "SYMBOL",
                    "name": "expression"
                  }
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "FIELD",
                        "name": "update",
                        "content": {
                          "type": "SYMBOL",
                          "name": "expression"
                        }
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "enhanced_for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_unannotated_type"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_variable_declarator_id"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "_annotation": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "marker_annotation"
        },
        {
          "type": "SYMBOL",
          "name": "annotation"
        }
      ]
    },
    "marker_annotation": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_name"
          }
        }
      ]
    },
    "annotation": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_name"
          }
        },
        {
          "type": "FIELD",
          "name": "arguments",
          "content": {
            "type": "SYMBOL",
            "name": "annotation_argument_list"
          }
        }
      ]
    },
    "annotation_argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_element_value"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "element_value_pair"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "element_value_pair"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "element_value_pair": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "key",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_element_value"
          }
        }
      ]
    },
    "_element_value": {
      "type": "PREC",
      "value": 2,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "expression"
          },
          {
            "type": "SYMBOL",
            "name": "element_value_array_initializer"
          },
          {
            "type": "SYMBOL",
            "name": "_annotation"
          }
        ]
      }
    },
    "element_value_array_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_element_value"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_element_value"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "declaration": {
      "type": "PREC",
      "value": 2,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "module_declaration"
          },
          {
            "type": "SYMBOL",
            "name": "package_declaration"
          },
          {
            "type": "SYMBOL",
            "name": "import_declaration"
          },
          {
            "type": "SYMBOL",
            "name": "class_declaration"
          },
          {
            "type": "SYMBOL",
            "name": "interface_declaration"
          },
          {
            "type": "SYMBOL",
            "name": "annotation_type_declaration"
          },
          {
            "type": "SYMBOL",
            "name": "enum_declaration"
          }
        ]
      }
    },
    "module_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_annotation"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "open"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "module"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_name"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "module_body"
          }
        }
      ]
    },
    "module_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "module_directive"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "module_directive": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "requires"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SYMBOL",
                    "name": "requires_modifier"
                  }
                },
                {
                  "type": "SYMBOL",
                  "name": "_name"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "exports"
                },
                {
                  "type": "SYMBOL",
                  "name": "_name"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "to"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_name"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_name"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "opens"
                },
                {
                  "type": "SYMBOL",
                  "name": "_name"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "to"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_name"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_name"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "uses"
                },
                {
                  "type": "SYMBOL",
                  "name": "_name"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "provides"
                },
                {
                  "type": "SYMBOL",
                  "name": "_name"
                },
                {
                  "type": "STRING",
                  "value": "with"
                },
                {
                  "type": "SYMBOL",
                  "name": "_name"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_name"
                      }
                    ]
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "requires_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "transitive"
        },
        {
          "type": "STRING",
          "value": "static"
        }
      ]
    },
    "package_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_annotation"
          }
        },
        {
          "type": "STRING",
          "value": "package"
        },
        {
          "type": "SYMBOL",
          "name": "_name"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "import_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "import"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "static"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "."
                },
                {
                  "type": "SYMBOL",
                  "name": "asterisk"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "asterisk": {
      "type": "STRING",
      "value": "*"
    },
    "enum_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "enum"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "interfaces",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "super_interfaces"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "enum_body"
          }
        }
      ]
    },
    "enum_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "enum_constant"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "enum_constant"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "enum_body_declarations"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "enum_body_declarations": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ";"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_class_body_declaration"
          }
        }
      ]
    },
    "enum_constant": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "arguments",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "argument_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "class_body"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        }
      ]
    },
    "class_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "class"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "type_parameters",
              "content": {
                "type": "SYMBOL",
                "name": "type_parameters"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "superclass",
              "content": {
                "type": "SYMBOL",
                "name": "superclass"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "interfaces",
              "content": {
                "type": "SYMBOL",
                "name": "super_interfaces"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "class_body"
          }
        }
      ]
    },
    "modifiers": {
      "type": "REPEAT1",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_annotation"
          },
          {
            "type": "STRING",
            "value": "public"
          },
          {
            "type": "STRING",
            "value": "protected"
          },
          {
            "type": "STRING",
            "value": "private"
          },
          {
            "type": "STRING",
            "value": "abstract"
          },
          {
            "type": "STRING",
            "value": "static"
          },
          {
            "type": "STRING",
            "value": "final"
          },
          {
            "type": "STRING",
            "value": "strictfp"
          },
          {
            "type": "STRING",
            "value": "default"
          },
          {
            "type": "STRING",
            "value": "synchronized"
          },
          {
            "type": "STRING",
            "value": "native"
          },
          {
            "type": "STRING",
            "value": "transient"
          },
          {
            "type": "STRING",
            "value": "volatile"
          }
        ]
      }
    },
    "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": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_annotation"
          }
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_bound"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "type_bound": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "extends"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "&"
              },
              {
                "type": "SYMBOL",
                "name": "_type"
              }
            ]
          }
        }
      ]
    },
    "superclass": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "extends"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        }
      ]
    },
    "super_interfaces": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "implements"
        },
        {
          "type": "SYMBOL",
          "name": "interface_type_list"
        }
      ]
    },
    "interface_type_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "_type"
              }
            ]
          }
        }
      ]
    },
    "class_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_class_body_declaration"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_class_body_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "field_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "record_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "method_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "class_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "interface_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "annotation_type_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "enum_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        },
        {
          "type": "SYMBOL",
          "name": "static_initializer"
        },
        {
          "type": "SYMBOL",
          "name": "constructor_declaration"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "static_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "static"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "constructor_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_constructor_declarator"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "throws"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "constructor_body"
          }
        }
      ]
    },
    "_constructor_declarator": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameters"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "formal_parameters"
          }
        }
      ]
    },
    "constructor_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "explicit_constructor_invocation"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "explicit_constructor_invocation": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "type_arguments",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "type_arguments"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                },
                {
                  "type": "FIELD",
                  "name": "constructor",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "this"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "super"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "object",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "primary_expression"
                      }
                    ]
                  }
                },
                {
                  "type": "STRING",
                  "value": "."
                },
                {
                  "type": "FIELD",
                  "name": "type_arguments",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "type_arguments"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                },
                {
                  "type": "FIELD",
                  "name": "constructor",
                  "content": {
                    "type": "SYMBOL",
                    "name": "super"
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "arguments",
          "content": {
            "type": "SYMBOL",
            "name": "argument_list"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "_name": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_reserved_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "scoped_identifier"
        }
      ]
    },
    "scoped_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "scope",
          "content": {
            "type": "SYMBOL",
            "name": "_name"
          }
        },
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        }
      ]
    },
    "field_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_unannotated_type"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_variable_declarator_list"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "record_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "record"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "formal_parameters"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "class_body"
          }
        }
      ]
    },
    "annotation_type_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "@interface"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "annotation_type_body"
          }
        }
      ]
    },
    "annotation_type_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "annotation_type_element_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "constant_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "class_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "interface_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "annotation_type_declaration"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "annotation_type_element_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_unannotated_type"
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "dimensions",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "dimensions"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_default_value"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "_default_value": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "default"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_element_value"
          }
        }
      ]
    },
    "interface_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "interface"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameters"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "extends_interfaces"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "interface_body"
          }
        }
      ]
    },
    "extends_interfaces": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "extends"
        },
        {
          "type": "SYMBOL",
          "name": "interface_type_list"
        }
      ]
    },
    "interface_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "constant_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "enum_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "method_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "class_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "interface_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "annotation_type_declaration"
              },
              {
                "type": "STRING",
                "value": ";"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "constant_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_unannotated_type"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_variable_declarator_list"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "_variable_declarator_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "SYMBOL",
            "name": "variable_declarator"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "FIELD",
                "name": "declarator",
                "content": {
                  "type": "SYMBOL",
                  "name": "variable_declarator"
                }
              }
            ]
          }
        }
      ]
    },
    "variable_declarator": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_variable_declarator_id"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_variable_initializer"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_variable_declarator_id": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "_reserved_identifier"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "dimensions",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "dimensions"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        }
      ]
    },
    "_variable_initializer": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "SYMBOL",
          "name": "array_initializer"
        }
      ]
    },
    "array_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_variable_initializer"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_variable_initializer"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_unannotated_type"
        },
        {
          "type": "SYMBOL",
          "name": "annotated_type"
        }
      ]
    },
    "_unannotated_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_simple_type"
        },
        {
          "type": "SYMBOL",
          "name": "array_type"
        }
      ]
    },
    "_simple_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "void_type"
        },
        {
          "type": "SYMBOL",
          "name": "integral_type"
        },
        {
          "type": "SYMBOL",
          "name": "floating_point_type"
        },
        {
          "type": "SYMBOL",
          "name": "boolean_type"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "type_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "scoped_type_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "generic_type"
        }
      ]
    },
    "annotated_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "_annotation"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_unannotated_type"
        }
      ]
    },
    "scoped_type_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              },
              "named": true,
              "value": "type_identifier"
            },
            {
              "type": "SYMBOL",
              "name": "scoped_type_identifier"
            },
            {
              "type": "SYMBOL",
              "name": "generic_type"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_annotation"
          }
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "type_identifier"
        }
      ]
    },
    "generic_type": {
      "type": "PREC_DYNAMIC",
      "value": 10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                "named": true,
                "value": "type_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "scoped_type_identifier"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "type_arguments"
          }
        ]
      }
    },
    "array_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "element",
          "content": {
            "type": "SYMBOL",
            "name": "_unannotated_type"
          }
        },
        {
          "type": "FIELD",
          "name": "dimensions",
          "content": {
            "type": "SYMBOL",
            "name": "dimensions"
          }
        }
      ]
    },
    "integral_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "byte"
        },
        {
          "type": "STRING",
          "value": "short"
        },
        {
          "type": "STRING",
          "value": "int"
        },
        {
          "type": "STRING",
          "value": "long"
        },
        {
          "type": "STRING",
          "value": "char"
        }
      ]
    },
    "floating_point_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "float"
        },
        {
          "type": "STRING",
          "value": "double"
        }
      ]
    },
    "boolean_type": {
      "type": "STRING",
      "value": "boolean"
    },
    "void_type": {
      "type": "STRING",
      "value": "void"
    },
    "_method_header": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "type_parameters",
                  "content": {
                    "type": "SYMBOL",
                    "name": "type_parameters"
                  }
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_annotation"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_unannotated_type"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_method_declarator"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "throws"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_method_declarator": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "_reserved_identifier"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "formal_parameters"
          }
        },
        {
          "type": "FIELD",
          "name": "dimensions",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "dimensions"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        }
      ]
    },
    "formal_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "receiver_parameter"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "formal_parameter"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "spread_parameter"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "formal_parameter"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "spread_parameter"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "formal_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_unannotated_type"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_variable_declarator_id"
        }
      ]
    },
    "receiver_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_annotation"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_unannotated_type"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "STRING",
                  "value": "."
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "this"
        }
      ]
    },
    "spread_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_unannotated_type"
        },
        {
          "type": "STRING",
          "value": "..."
        },
        {
          "type": "SYMBOL",
          "name": "variable_declarator"
        }
      ]
    },
    "throws": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "throws"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_type"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "local_variable_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_unannotated_type"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_variable_declarator_list"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "method_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_method_header"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "block"
              }
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        }
      ]
    },
    "_reserved_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "open"
          },
          {
            "type": "STRING",
            "value": "module"
          }
        ]
      },
      "named": true,
      "value": "identifier"
    },
    "this": {
      "type": "STRING",
      "value": "this"
    },
    "super": {
      "type": "STRING",
      "value": "super"
    },
    "identifier": {
      "type": "PATTERN",
      "value": "[\\p{L}_$][\\p{L}\\p{Nd}_$]*"
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": 0,
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "//"
                },
                {
                  "type": "PATTERN",
                  "value": ".*"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "/*"
                },
                {
                  "type": "PATTERN",
                  "value": "[^*]*\\*+([^/*][^*]*\\*+)*"
                },
                {
                  "type": "STRING",
                  "value": "/"
                }
              ]
            }
          ]
        }
      }
    }
  },
  "extras": [
    {
      "type": "SYMBOL",
      "name": "comment"
    },
    {
      "type": "PATTERN",
      "value": "\\s"
    }
  ],
  "conflicts": [
    [
      "modifiers",
      "annotated_type",
      "receiver_parameter"
    ],
    [
      "modifiers",
      "annotated_type",
      "module_declaration",
      "package_declaration"
    ],
    [
      "_unannotated_type",
      "primary_expression",
      "inferred_parameters"
    ],
    [
      "_unannotated_type",
      "primary_expression"
    ],
    [
      "_unannotated_type",
      "primary_expression",
      "scoped_type_identifier"
    ],
    [
      "_unannotated_type",
      "scoped_type_identifier"
    ],
    [
      "_unannotated_type",
      "generic_type"
    ],
    [
      "generic_type",
      "primary_expression"
    ],
    [
      "lambda_expression",
      "primary_expression"
    ]
  ],
  "precedences": [],
  "externals": [],
  "inline": [
    "_name",
    "_simple_type",
    "_reserved_identifier",
    "_class_body_declaration",
    "_variable_initializer"
  ],
  "supertypes": [
    "expression",
    "declaration",
    "statement",
    "primary_expression",
    "_literal",
    "_type",
    "_simple_type",
    "_unannotated_type"
  ]
}

