[
  {
    "type": "attribute_decl",
    "named": true,
    "fields": {
      "attribute_name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "bool_constant",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "false",
          "named": true
        },
        {
          "type": "true",
          "named": true
        }
      ]
    }
  },
  {
    "type": "decimal_lit",
    "named": true,
    "fields": {}
  },
  {
    "type": "enum_decl",
    "named": true,
    "fields": {
      "documentation": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "documentation",
            "named": true
          }
        ]
      },
      "enum_name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "enum_type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      },
      "enum_val_decl": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "enum_val_decl",
            "named": true
          }
        ]
      },
      "metadata": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "metadata",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "enum_val_decl",
    "named": true,
    "fields": {
      "documentation": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "documentation",
            "named": true
          }
        ]
      },
      "enum_int_constant": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "int_constant",
            "named": true
          }
        ]
      },
      "enum_key": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "field_and_value",
    "named": true,
    "fields": {
      "field_key": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "field_value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "single_value",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "field_decl",
    "named": true,
    "fields": {
      "documentation": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "documentation",
            "named": true
          }
        ]
      },
      "field_key": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "field_type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      },
      "field_value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "value",
            "named": true
          }
        ]
      },
      "metadata": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "metadata",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "file_extension_decl",
    "named": true,
    "fields": {
      "file_extension_constant": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "string_constant",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "file_identifier_decl",
    "named": true,
    "fields": {
      "file_identifier_constant": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "string_constant",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "float_constant",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "float_lit",
          "named": true
        },
        {
          "type": "plus_minus_constant",
          "named": true
        }
      ]
    }
  },
  {
    "type": "float_lit",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "inf_token",
          "named": true
        },
        {
          "type": "nan_token",
          "named": true
        }
      ]
    }
  },
  {
    "type": "full_ident",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "include",
    "named": true,
    "fields": {
      "include_name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "string_constant",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "inf_token",
    "named": true,
    "fields": {}
  },
  {
    "type": "int_constant",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "int_lit",
          "named": true
        },
        {
          "type": "plus_minus_constant",
          "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": "metadata",
    "named": true,
    "fields": {
      "field_and_value": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "field_and_value",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "namespace_decl",
    "named": true,
    "fields": {
      "namespace_ident": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "full_ident",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "object",
    "named": true,
    "fields": {
      "documentation": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "documentation",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "plus_minus_constant",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "minus_token",
          "named": true
        },
        {
          "type": "plus_token",
          "named": true
        }
      ]
    }
  },
  {
    "type": "root_decl",
    "named": true,
    "fields": {
      "root_type_ident": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "rpc_decl",
    "named": true,
    "fields": {
      "documentation": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "documentation",
            "named": true
          }
        ]
      },
      "rpc_method": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "rpc_method",
            "named": true
          }
        ]
      },
      "rpc_name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "rpc_method",
    "named": true,
    "fields": {
      "documentation": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "documentation",
            "named": true
          }
        ]
      },
      "metadata": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "metadata",
            "named": true
          }
        ]
      },
      "rpc_method_name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "rpc_parameter": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "rpc_return_type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "scalar",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "bool_constant",
          "named": true
        },
        {
          "type": "float_constant",
          "named": true
        },
        {
          "type": "int_constant",
          "named": true
        }
      ]
    }
  },
  {
    "type": "single_value",
    "named": true,
    "fields": {
      "full_ident": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "full_ident",
            "named": true
          }
        ]
      },
      "scalar_value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "scalar",
            "named": true
          }
        ]
      },
      "string_constant": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "string_constant",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "source_file",
    "named": true,
    "root": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_decl",
          "named": true
        },
        {
          "type": "enum_decl",
          "named": true
        },
        {
          "type": "file_extension_decl",
          "named": true
        },
        {
          "type": "file_identifier_decl",
          "named": true
        },
        {
          "type": "include",
          "named": true
        },
        {
          "type": "namespace_decl",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "root_decl",
          "named": true
        },
        {
          "type": "rpc_decl",
          "named": true
        },
        {
          "type": "type_decl",
          "named": true
        },
        {
          "type": "union_decl",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string_constant",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "escape_sequence",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type",
    "named": true,
    "fields": {
      "array_type": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "[",
            "named": false
          },
          {
            "type": "]",
            "named": false
          },
          {
            "type": "type",
            "named": true
          }
        ]
      },
      "full_ident": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "full_ident",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "type_decl",
    "named": true,
    "fields": {
      "documentation": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "documentation",
            "named": true
          }
        ]
      },
      "metadata": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "metadata",
            "named": true
          }
        ]
      },
      "table_or_struct_name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "field_decl",
          "named": true
        }
      ]
    }
  },
  {
    "type": "union_decl",
    "named": true,
    "fields": {
      "documentation": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "documentation",
            "named": true
          }
        ]
      },
      "field_without_type": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "full_ident",
            "named": true
          }
        ]
      },
      "metadata": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "metadata",
            "named": true
          }
        ]
      },
      "union_field_decl": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "union_field_decl",
            "named": true
          }
        ]
      },
      "union_name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "union_field_decl",
    "named": true,
    "fields": {
      "documentation": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "documentation",
            "named": true
          }
        ]
      },
      "union_field_key": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "union_field_value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "value",
    "named": true,
    "fields": {
      "array_value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "[",
            "named": false
          },
          {
            "type": "]",
            "named": false
          },
          {
            "type": "value",
            "named": true
          }
        ]
      },
      "array_value_item": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "value",
            "named": true
          }
        ]
      },
      "object_value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "object",
            "named": true
          }
        ]
      },
      "single_value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "single_value",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "\"",
    "named": false
  },
  {
    "type": "(",
    "named": false
  },
  {
    "type": ")",
    "named": false
  },
  {
    "type": ",",
    "named": false
  },
  {
    "type": ".",
    "named": false
  },
  {
    "type": "0",
    "named": false
  },
  {
    "type": ":",
    "named": false
  },
  {
    "type": ";",
    "named": false
  },
  {
    "type": "=",
    "named": false
  },
  {
    "type": "[",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "attribute",
    "named": false
  },
  {
    "type": "bool",
    "named": false
  },
  {
    "type": "byte",
    "named": false
  },
  {
    "type": "comment",
    "named": true
  },
  {
    "type": "documentation",
    "named": true
  },
  {
    "type": "double",
    "named": false
  },
  {
    "type": "enum",
    "named": false
  },
  {
    "type": "escape_sequence",
    "named": true
  },
  {
    "type": "false",
    "named": true
  },
  {
    "type": "file_extension",
    "named": false
  },
  {
    "type": "file_identifier",
    "named": false
  },
  {
    "type": "float",
    "named": false
  },
  {
    "type": "float32",
    "named": false
  },
  {
    "type": "float64",
    "named": false
  },
  {
    "type": "hex_lit",
    "named": true
  },
  {
    "type": "identifier",
    "named": true
  },
  {
    "type": "include",
    "named": false
  },
  {
    "type": "inf",
    "named": false
  },
  {
    "type": "infinity",
    "named": false
  },
  {
    "type": "int",
    "named": false
  },
  {
    "type": "int16",
    "named": false
  },
  {
    "type": "int32",
    "named": false
  },
  {
    "type": "int64",
    "named": false
  },
  {
    "type": "int8",
    "named": false
  },
  {
    "type": "long",
    "named": false
  },
  {
    "type": "minus_token",
    "named": true
  },
  {
    "type": "namespace",
    "named": false
  },
  {
    "type": "nan_token",
    "named": true
  },
  {
    "type": "plus_token",
    "named": true
  },
  {
    "type": "root_type",
    "named": false
  },
  {
    "type": "rpc_service",
    "named": false
  },
  {
    "type": "short",
    "named": false
  },
  {
    "type": "string",
    "named": false
  },
  {
    "type": "struct",
    "named": false
  },
  {
    "type": "table",
    "named": false
  },
  {
    "type": "true",
    "named": true
  },
  {
    "type": "ubyte",
    "named": false
  },
  {
    "type": "uint",
    "named": false
  },
  {
    "type": "uint16",
    "named": false
  },
  {
    "type": "uint32",
    "named": false
  },
  {
    "type": "uint64",
    "named": false
  },
  {
    "type": "uint8",
    "named": false
  },
  {
    "type": "ulong",
    "named": false
  },
  {
    "type": "union",
    "named": false
  },
  {
    "type": "ushort",
    "named": false
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "}",
    "named": false
  }
]