[
  {
    "type": "block_lit",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "constant",
          "named": true
        },
        {
          "type": "full_ident",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "bool",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "false",
          "named": true
        },
        {
          "type": "true",
          "named": true
        }
      ]
    }
  },
  {
    "type": "constant",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "block_lit",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "float_lit",
          "named": true
        },
        {
          "type": "full_ident",
          "named": true
        },
        {
          "type": "int_lit",
          "named": true
        },
        {
          "type": "string",
          "named": true
        }
      ]
    }
  },
  {
    "type": "edition",
    "named": true,
    "fields": {
      "year": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "string",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "empty_statement",
    "named": true,
    "fields": {}
  },
  {
    "type": "enum",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "enum_body",
          "named": true
        },
        {
          "type": "enum_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "empty_statement",
          "named": true
        },
        {
          "type": "enum_field",
          "named": true
        },
        {
          "type": "option",
          "named": true
        },
        {
          "type": "reserved",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_field",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "enum_value_option",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "int_lit",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_value_option",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "constant",
          "named": true
        },
        {
          "type": "full_ident",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "extend",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "full_ident",
          "named": true
        },
        {
          "type": "message_body",
          "named": true
        }
      ]
    }
  },
  {
    "type": "extensions",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "ranges",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "field_number",
          "named": true
        },
        {
          "type": "field_options",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_number",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "int_lit",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_option",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "constant",
          "named": true
        },
        {
          "type": "full_ident",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_options",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "field_option",
          "named": true
        }
      ]
    }
  },
  {
    "type": "full_ident",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "group",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "field_number",
          "named": true
        },
        {
          "type": "message_body",
          "named": true
        },
        {
          "type": "message_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "import",
    "named": true,
    "fields": {
      "path": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "string",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "int_lit",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "decimal_lit",
          "named": true
        },
        {
          "type": "hex_lit",
          "named": true
        },
        {
          "type": "octal_lit",
          "named": true
        }
      ]
    }
  },
  {
    "type": "key_type",
    "named": true,
    "fields": {}
  },
  {
    "type": "map_field",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "field_number",
          "named": true
        },
        {
          "type": "field_options",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "key_type",
          "named": true
        },
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "message",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "message_body",
          "named": true
        },
        {
          "type": "message_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "message_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "empty_statement",
          "named": true
        },
        {
          "type": "enum",
          "named": true
        },
        {
          "type": "extend",
          "named": true
        },
        {
          "type": "extensions",
          "named": true
        },
        {
          "type": "field",
          "named": true
        },
        {
          "type": "group",
          "named": true
        },
        {
          "type": "map_field",
          "named": true
        },
        {
          "type": "message",
          "named": true
        },
        {
          "type": "oneof",
          "named": true
        },
        {
          "type": "option",
          "named": true
        },
        {
          "type": "reserved",
          "named": true
        }
      ]
    }
  },
  {
    "type": "message_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "message_or_enum_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "oneof",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "empty_statement",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "oneof_field",
          "named": true
        },
        {
          "type": "option",
          "named": true
        }
      ]
    }
  },
  {
    "type": "oneof_field",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "field_number",
          "named": true
        },
        {
          "type": "field_options",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "option",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "constant",
          "named": true
        },
        {
          "type": "full_ident",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "package",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "full_ident",
          "named": true
        }
      ]
    }
  },
  {
    "type": "range",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "int_lit",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ranges",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "range",
          "named": true
        }
      ]
    }
  },
  {
    "type": "reserved",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "ranges",
          "named": true
        },
        {
          "type": "reserved_field_names",
          "named": true
        }
      ]
    }
  },
  {
    "type": "reserved_field_names",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "reserved_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "rpc",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "empty_statement",
          "named": true
        },
        {
          "type": "message_or_enum_type",
          "named": true
        },
        {
          "type": "option",
          "named": true
        },
        {
          "type": "rpc_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "rpc_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "service",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "empty_statement",
          "named": true
        },
        {
          "type": "option",
          "named": true
        },
        {
          "type": "rpc",
          "named": true
        },
        {
          "type": "service_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "service_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "source_file",
    "named": true,
    "root": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "edition",
          "named": true
        },
        {
          "type": "empty_statement",
          "named": true
        },
        {
          "type": "enum",
          "named": true
        },
        {
          "type": "extend",
          "named": true
        },
        {
          "type": "import",
          "named": true
        },
        {
          "type": "message",
          "named": true
        },
        {
          "type": "option",
          "named": true
        },
        {
          "type": "package",
          "named": true
        },
        {
          "type": "service",
          "named": true
        },
        {
          "type": "syntax",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "escape_sequence",
          "named": true
        }
      ]
    }
  },
  {
    "type": "syntax",
    "named": true,
    "fields": {}
  },
  {
    "type": "type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "message_or_enum_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "\"",
    "named": false
  },
  {
    "type": "\"proto2\"",
    "named": false
  },
  {
    "type": "\"proto3\"",
    "named": false
  },
  {
    "type": "'",
    "named": false
  },
  {
    "type": "(",
    "named": false
  },
  {
    "type": ")",
    "named": false
  },
  {
    "type": "+",
    "named": false
  },
  {
    "type": ",",
    "named": false
  },
  {
    "type": "-",
    "named": false
  },
  {
    "type": ".",
    "named": false
  },
  {
    "type": ":",
    "named": false
  },
  {
    "type": ";",
    "named": false
  },
  {
    "type": "<",
    "named": false
  },
  {
    "type": "=",
    "named": false
  },
  {
    "type": ">",
    "named": false
  },
  {
    "type": "[",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "bool",
    "named": false
  },
  {
    "type": "bytes",
    "named": false
  },
  {
    "type": "comment",
    "named": true
  },
  {
    "type": "decimal_lit",
    "named": true
  },
  {
    "type": "double",
    "named": false
  },
  {
    "type": "edition",
    "named": false
  },
  {
    "type": "enum",
    "named": false
  },
  {
    "type": "escape_sequence",
    "named": true
  },
  {
    "type": "export",
    "named": false
  },
  {
    "type": "extend",
    "named": false
  },
  {
    "type": "extensions",
    "named": false
  },
  {
    "type": "false",
    "named": true
  },
  {
    "type": "fixed32",
    "named": false
  },
  {
    "type": "fixed64",
    "named": false
  },
  {
    "type": "float",
    "named": false
  },
  {
    "type": "float_lit",
    "named": true
  },
  {
    "type": "group",
    "named": false
  },
  {
    "type": "hex_lit",
    "named": true
  },
  {
    "type": "identifier",
    "named": true
  },
  {
    "type": "import",
    "named": false
  },
  {
    "type": "int32",
    "named": false
  },
  {
    "type": "int64",
    "named": false
  },
  {
    "type": "local",
    "named": false
  },
  {
    "type": "map",
    "named": false
  },
  {
    "type": "max",
    "named": false
  },
  {
    "type": "message",
    "named": false
  },
  {
    "type": "octal_lit",
    "named": true
  },
  {
    "type": "oneof",
    "named": false
  },
  {
    "type": "option",
    "named": false
  },
  {
    "type": "optional",
    "named": false
  },
  {
    "type": "package",
    "named": false
  },
  {
    "type": "public",
    "named": false
  },
  {
    "type": "repeated",
    "named": false
  },
  {
    "type": "required",
    "named": false
  },
  {
    "type": "reserved",
    "named": false
  },
  {
    "type": "reserved_identifier",
    "named": true
  },
  {
    "type": "returns",
    "named": false
  },
  {
    "type": "rpc",
    "named": false
  },
  {
    "type": "service",
    "named": false
  },
  {
    "type": "sfixed32",
    "named": false
  },
  {
    "type": "sfixed64",
    "named": false
  },
  {
    "type": "sint32",
    "named": false
  },
  {
    "type": "sint64",
    "named": false
  },
  {
    "type": "stream",
    "named": false
  },
  {
    "type": "string",
    "named": false
  },
  {
    "type": "syntax",
    "named": false
  },
  {
    "type": "to",
    "named": false
  },
  {
    "type": "true",
    "named": true
  },
  {
    "type": "uint32",
    "named": false
  },
  {
    "type": "uint64",
    "named": false
  },
  {
    "type": "weak",
    "named": false
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "}",
    "named": false
  }
]