tree-sitter-mozcpp 0.20.2

Mozcpp grammar for the tree-sitter parsing library
Documentation
[
  {
    "type": "_abstract_declarator",
    "named": true,
    "subtypes": [
      {
        "type": "abstract_array_declarator",
        "named": true
      },
      {
        "type": "abstract_function_declarator",
        "named": true
      },
      {
        "type": "abstract_parenthesized_declarator",
        "named": true
      },
      {
        "type": "abstract_pointer_declarator",
        "named": true
      },
      {
        "type": "abstract_reference_declarator",
        "named": true
      }
    ]
  },
  {
    "type": "_declarator",
    "named": true,
    "subtypes": [
      {
        "type": "array_declarator",
        "named": true
      },
      {
        "type": "attributed_declarator",
        "named": true
      },
      {
        "type": "destructor_name",
        "named": true
      },
      {
        "type": "function_declarator",
        "named": true
      },
      {
        "type": "identifier",
        "named": true
      },
      {
        "type": "operator_name",
        "named": true
      },
      {
        "type": "parenthesized_declarator",
        "named": true
      },
      {
        "type": "pointer_declarator",
        "named": true
      },
      {
        "type": "qualified_identifier",
        "named": true
      },
      {
        "type": "reference_declarator",
        "named": true
      },
      {
        "type": "structured_binding_declarator",
        "named": true
      },
      {
        "type": "template_function",
        "named": true
      }
    ]
  },
  {
    "type": "_expression",
    "named": true,
    "subtypes": [
      {
        "type": "assignment_expression",
        "named": true
      },
      {
        "type": "binary_expression",
        "named": true
      },
      {
        "type": "call_expression",
        "named": true
      },
      {
        "type": "cast_expression",
        "named": true
      },
      {
        "type": "char_literal",
        "named": true
      },
      {
        "type": "co_await_expression",
        "named": true
      },
      {
        "type": "compound_literal_expression",
        "named": true
      },
      {
        "type": "concatenated_string",
        "named": true
      },
      {
        "type": "conditional_expression",
        "named": true
      },
      {
        "type": "delete_expression",
        "named": true
      },
      {
        "type": "false",
        "named": true
      },
      {
        "type": "field_expression",
        "named": true
      },
      {
        "type": "identifier",
        "named": true
      },
      {
        "type": "lambda_expression",
        "named": true
      },
      {
        "type": "new_expression",
        "named": true
      },
      {
        "type": "null",
        "named": true
      },
      {
        "type": "nullptr",
        "named": true
      },
      {
        "type": "number_literal",
        "named": true
      },
      {
        "type": "parameter_pack_expansion",
        "named": true
      },
      {
        "type": "parenthesized_expression",
        "named": true
      },
      {
        "type": "pointer_expression",
        "named": true
      },
      {
        "type": "qualified_identifier",
        "named": true
      },
      {
        "type": "raw_string_literal",
        "named": true
      },
      {
        "type": "sizeof_expression",
        "named": true
      },
      {
        "type": "string_literal",
        "named": true
      },
      {
        "type": "subscript_expression",
        "named": true
      },
      {
        "type": "template_function",
        "named": true
      },
      {
        "type": "this",
        "named": true
      },
      {
        "type": "true",
        "named": true
      },
      {
        "type": "unary_expression",
        "named": true
      },
      {
        "type": "update_expression",
        "named": true
      },
      {
        "type": "user_defined_literal",
        "named": true
      }
    ]
  },
  {
    "type": "_field_declarator",
    "named": true,
    "subtypes": [
      {
        "type": "array_declarator",
        "named": true
      },
      {
        "type": "attributed_declarator",
        "named": true
      },
      {
        "type": "field_identifier",
        "named": true
      },
      {
        "type": "function_declarator",
        "named": true
      },
      {
        "type": "operator_name",
        "named": true
      },
      {
        "type": "parenthesized_declarator",
        "named": true
      },
      {
        "type": "pointer_declarator",
        "named": true
      },
      {
        "type": "reference_declarator",
        "named": true
      },
      {
        "type": "template_method",
        "named": true
      }
    ]
  },
  {
    "type": "_statement",
    "named": true,
    "subtypes": [
      {
        "type": "attributed_statement",
        "named": true
      },
      {
        "type": "break_statement",
        "named": true
      },
      {
        "type": "case_statement",
        "named": true
      },
      {
        "type": "co_return_statement",
        "named": true
      },
      {
        "type": "co_yield_statement",
        "named": true
      },
      {
        "type": "compound_statement",
        "named": true
      },
      {
        "type": "continue_statement",
        "named": true
      },
      {
        "type": "do_statement",
        "named": true
      },
      {
        "type": "expression_statement",
        "named": true
      },
      {
        "type": "for_range_loop",
        "named": true
      },
      {
        "type": "for_statement",
        "named": true
      },
      {
        "type": "goto_statement",
        "named": true
      },
      {
        "type": "if_statement",
        "named": true
      },
      {
        "type": "labeled_statement",
        "named": true
      },
      {
        "type": "return_statement",
        "named": true
      },
      {
        "type": "switch_statement",
        "named": true
      },
      {
        "type": "throw_statement",
        "named": true
      },
      {
        "type": "try_statement",
        "named": true
      },
      {
        "type": "while_statement",
        "named": true
      }
    ]
  },
  {
    "type": "_type_declarator",
    "named": true,
    "subtypes": [
      {
        "type": "array_declarator",
        "named": true
      },
      {
        "type": "attributed_declarator",
        "named": true
      },
      {
        "type": "function_declarator",
        "named": true
      },
      {
        "type": "parenthesized_declarator",
        "named": true
      },
      {
        "type": "pointer_declarator",
        "named": true
      },
      {
        "type": "type_identifier",
        "named": true
      }
    ]
  },
  {
    "type": "_type_specifier",
    "named": true,
    "subtypes": [
      {
        "type": "auto",
        "named": true
      },
      {
        "type": "class_specifier",
        "named": true
      },
      {
        "type": "decltype",
        "named": true
      },
      {
        "type": "dependent_type",
        "named": true
      },
      {
        "type": "enum_specifier",
        "named": true
      },
      {
        "type": "primitive_type",
        "named": true
      },
      {
        "type": "qualified_identifier",
        "named": true
      },
      {
        "type": "sized_type_specifier",
        "named": true
      },
      {
        "type": "struct_specifier",
        "named": true
      },
      {
        "type": "template_type",
        "named": true
      },
      {
        "type": "type_identifier",
        "named": true
      },
      {
        "type": "union_specifier",
        "named": true
      }
    ]
  },
  {
    "type": "abstract_array_declarator",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_abstract_declarator",
            "named": true
          }
        ]
      },
      "size": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "*",
            "named": false
          },
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "type_qualifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "abstract_function_declarator",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_abstract_declarator",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "parameter_list",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "noexcept",
          "named": true
        },
        {
          "type": "ref_qualifier",
          "named": true
        },
        {
          "type": "throw_specifier",
          "named": true
        },
        {
          "type": "trailing_return_type",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "abstract_parenthesized_declarator",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_abstract_declarator",
          "named": true
        }
      ]
    }
  },
  {
    "type": "abstract_pointer_declarator",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_abstract_declarator",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "type_qualifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "abstract_reference_declarator",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_abstract_declarator",
          "named": true
        }
      ]
    }
  },
  {
    "type": "access_specifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "alias_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_descriptor",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "alone_macro_call",
    "named": true,
    "fields": {}
  },
  {
    "type": "argument_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "initializer_list",
          "named": true
        },
        {
          "type": "preproc_defined",
          "named": true
        }
      ]
    }
  },
  {
    "type": "array_declarator",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_declarator",
            "named": true
          },
          {
            "type": "_field_declarator",
            "named": true
          },
          {
            "type": "_type_declarator",
            "named": true
          }
        ]
      },
      "size": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "*",
            "named": false
          },
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "type_qualifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "assignment_expression",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "field_expression",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "parenthesized_expression",
            "named": true
          },
          {
            "type": "pointer_expression",
            "named": true
          },
          {
            "type": "qualified_identifier",
            "named": true
          },
          {
            "type": "subscript_expression",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "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
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "attribute",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "prefix": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "attribute_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "attribute",
          "named": true
        }
      ]
    }
  },
  {
    "type": "attribute_specifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "attributed_declarator",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_declarator",
          "named": true
        },
        {
          "type": "_field_declarator",
          "named": true
        },
        {
          "type": "_type_declarator",
          "named": true
        },
        {
          "type": "attribute_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "attributed_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_statement",
          "named": true
        },
        {
          "type": "attribute_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "base_class_clause",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "qualified_identifier",
          "named": true
        },
        {
          "type": "template_type",
          "named": true
        },
        {
          "type": "type_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "binary_expression",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "preproc_defined",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "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": ">>",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "||",
            "named": false
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "preproc_defined",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "bitfield_clause",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "break_statement",
    "named": true,
    "fields": {}
  },
  {
    "type": "call_expression",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "argument_list",
            "named": true
          },
          {
            "type": "initializer_list",
            "named": true
          },
          {
            "type": "parameter_declaration",
            "named": true
          }
        ]
      },
      "function": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "CACHE_TRY_INSPECT",
            "named": false
          },
          {
            "type": "CACHE_TRY_UNWRAP",
            "named": false
          },
          {
            "type": "FORWARD",
            "named": false
          },
          {
            "type": "FORWARD_SET_ATTRIBUTE",
            "named": false
          },
          {
            "type": "IDB_TRY_INSPECT",
            "named": false
          },
          {
            "type": "IDB_TRY_UNWRAP",
            "named": false
          },
          {
            "type": "LS_TRY_INSPECT",
            "named": false
          },
          {
            "type": "LS_TRY_UNWRAP",
            "named": false
          },
          {
            "type": "PS_GET",
            "named": false
          },
          {
            "type": "PS_GET_AND_SET",
            "named": false
          },
          {
            "type": "PS_GET_LOCKLESS",
            "named": false
          },
          {
            "type": "QM_NOTEONLY_TRY_UNWRAP",
            "named": false
          },
          {
            "type": "QM_TRY_INSPECT",
            "named": false
          },
          {
            "type": "QM_TRY_UNWRAP",
            "named": false
          },
          {
            "type": "QM_WARNONLY_TRY_UNWRAP",
            "named": false
          },
          {
            "type": "SDB_TRY_INSPECT",
            "named": false
          },
          {
            "type": "SDB_TRY_UNWRAP",
            "named": false
          },
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "primitive_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "case_statement",
    "named": true,
    "fields": {
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attributed_statement",
          "named": true
        },
        {
          "type": "break_statement",
          "named": true
        },
        {
          "type": "co_return_statement",
          "named": true
        },
        {
          "type": "co_yield_statement",
          "named": true
        },
        {
          "type": "compound_statement",
          "named": true
        },
        {
          "type": "continue_statement",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "do_statement",
          "named": true
        },
        {
          "type": "expression_statement",
          "named": true
        },
        {
          "type": "for_range_loop",
          "named": true
        },
        {
          "type": "for_statement",
          "named": true
        },
        {
          "type": "goto_statement",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "labeled_statement",
          "named": true
        },
        {
          "type": "return_statement",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "throw_statement",
          "named": true
        },
        {
          "type": "try_statement",
          "named": true
        },
        {
          "type": "type_definition",
          "named": true
        },
        {
          "type": "while_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "cast_expression",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_descriptor",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "catch_clause",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "compound_statement",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "parameter_list",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "char_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "escape_sequence",
          "named": true
        }
      ]
    }
  },
  {
    "type": "class_specifier",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "field_declaration_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "qualified_identifier",
            "named": true
          },
          {
            "type": "template_type",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "base_class_clause",
          "named": true
        },
        {
          "type": "macro_annotation",
          "named": true
        },
        {
          "type": "virtual_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "co_await_expression",
    "named": true,
    "fields": {
      "argument": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "co_await",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "co_return_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "co_yield_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "comma_expression",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "comma_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "compound_literal_expression",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "qualified_identifier",
            "named": true
          },
          {
            "type": "template_type",
            "named": true
          },
          {
            "type": "type_descriptor",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "initializer_list",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "compound_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        },
        {
          "type": "_type_specifier",
          "named": true
        },
        {
          "type": "alias_declaration",
          "named": true
        },
        {
          "type": "alone_macro",
          "named": true
        },
        {
          "type": "alone_macro_call",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "linkage_specification",
          "named": true
        },
        {
          "type": "namespace_definition",
          "named": true
        },
        {
          "type": "preproc_call",
          "named": true
        },
        {
          "type": "preproc_def",
          "named": true
        },
        {
          "type": "preproc_function_def",
          "named": true
        },
        {
          "type": "preproc_if",
          "named": true
        },
        {
          "type": "preproc_ifdef",
          "named": true
        },
        {
          "type": "preproc_include",
          "named": true
        },
        {
          "type": "static_assert_declaration",
          "named": true
        },
        {
          "type": "template_declaration",
          "named": true
        },
        {
          "type": "template_instantiation",
          "named": true
        },
        {
          "type": "type_definition",
          "named": true
        },
        {
          "type": "using_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "concatenated_string",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "condition_clause",
    "named": true,
    "fields": {
      "initializer": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "declaration",
            "named": true
          },
          {
            "type": "expression_statement",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "comma_expression",
            "named": true
          },
          {
            "type": "declaration",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "conditional_expression",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "continue_statement",
    "named": true,
    "fields": {}
  },
  {
    "type": "declaration",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "_declarator",
            "named": true
          },
          {
            "type": "init_declarator",
            "named": true
          },
          {
            "type": "operator_cast",
            "named": true
          }
        ]
      },
      "default_value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "initializer_list",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_declaration",
          "named": true
        },
        {
          "type": "attribute_specifier",
          "named": true
        },
        {
          "type": "explicit_function_specifier",
          "named": true
        },
        {
          "type": "ms_declspec_modifier",
          "named": true
        },
        {
          "type": "storage_class_specifier",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        },
        {
          "type": "virtual_function_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "declaration_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        },
        {
          "type": "_type_specifier",
          "named": true
        },
        {
          "type": "alias_declaration",
          "named": true
        },
        {
          "type": "alone_macro",
          "named": true
        },
        {
          "type": "alone_macro_call",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "linkage_specification",
          "named": true
        },
        {
          "type": "namespace_definition",
          "named": true
        },
        {
          "type": "preproc_call",
          "named": true
        },
        {
          "type": "preproc_def",
          "named": true
        },
        {
          "type": "preproc_function_def",
          "named": true
        },
        {
          "type": "preproc_if",
          "named": true
        },
        {
          "type": "preproc_ifdef",
          "named": true
        },
        {
          "type": "preproc_include",
          "named": true
        },
        {
          "type": "static_assert_declaration",
          "named": true
        },
        {
          "type": "template_declaration",
          "named": true
        },
        {
          "type": "template_instantiation",
          "named": true
        },
        {
          "type": "type_definition",
          "named": true
        },
        {
          "type": "using_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "decltype",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "default_method_clause",
    "named": true,
    "fields": {}
  },
  {
    "type": "delete_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "delete_method_clause",
    "named": true,
    "fields": {}
  },
  {
    "type": "dependent_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "template_function",
          "named": true
        },
        {
          "type": "template_method",
          "named": true
        },
        {
          "type": "template_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "dependent_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "destructor_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "do_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_statement",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "parenthesized_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "enum_specifier",
    "named": true,
    "fields": {
      "base": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "qualified_identifier",
            "named": true
          },
          {
            "type": "sized_type_specifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "enumerator_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "qualified_identifier",
            "named": true
          },
          {
            "type": "template_type",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "enumerator",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "enumerator_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "enumerator",
          "named": true
        }
      ]
    }
  },
  {
    "type": "explicit_function_specifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "expression_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "comma_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_declaration",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_field_declarator",
            "named": true
          }
        ]
      },
      "default_value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "initializer_list",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_declaration",
          "named": true
        },
        {
          "type": "attribute_specifier",
          "named": true
        },
        {
          "type": "bitfield_clause",
          "named": true
        },
        {
          "type": "ms_declspec_modifier",
          "named": true
        },
        {
          "type": "storage_class_specifier",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        },
        {
          "type": "virtual_function_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_declaration_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "access_specifier",
          "named": true
        },
        {
          "type": "alias_declaration",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "field_declaration",
          "named": true
        },
        {
          "type": "friend_declaration",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "macro_statement",
          "named": true
        },
        {
          "type": "preproc_call",
          "named": true
        },
        {
          "type": "preproc_def",
          "named": true
        },
        {
          "type": "preproc_function_def",
          "named": true
        },
        {
          "type": "preproc_if",
          "named": true
        },
        {
          "type": "preproc_ifdef",
          "named": true
        },
        {
          "type": "static_assert_declaration",
          "named": true
        },
        {
          "type": "template_declaration",
          "named": true
        },
        {
          "type": "type_definition",
          "named": true
        },
        {
          "type": "using_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_designator",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "field_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_expression",
    "named": true,
    "fields": {
      "argument": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "field": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "dependent_name",
            "named": true
          },
          {
            "type": "destructor_name",
            "named": true
          },
          {
            "type": "field_identifier",
            "named": true
          },
          {
            "type": "template_method",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "->",
            "named": false
          },
          {
            "type": ".",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "field_initializer",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "argument_list",
          "named": true
        },
        {
          "type": "field_identifier",
          "named": true
        },
        {
          "type": "initializer_list",
          "named": true
        },
        {
          "type": "qualified_identifier",
          "named": true
        },
        {
          "type": "template_method",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_initializer_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "field_initializer",
          "named": true
        }
      ]
    }
  },
  {
    "type": "for_range_loop",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_statement",
            "named": true
          }
        ]
      },
      "declarator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_declarator",
            "named": true
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "initializer_list",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_declaration",
          "named": true
        },
        {
          "type": "attribute_specifier",
          "named": true
        },
        {
          "type": "ms_declspec_modifier",
          "named": true
        },
        {
          "type": "storage_class_specifier",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        },
        {
          "type": "virtual_function_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "for_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_statement",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "comma_expression",
            "named": true
          }
        ]
      },
      "initializer": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "comma_expression",
            "named": true
          },
          {
            "type": "declaration",
            "named": true
          }
        ]
      },
      "update": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "comma_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "friend_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "qualified_identifier",
          "named": true
        },
        {
          "type": "template_type",
          "named": true
        },
        {
          "type": "type_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_declarator",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_declarator",
            "named": true
          },
          {
            "type": "_field_declarator",
            "named": true
          },
          {
            "type": "_type_declarator",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "parameter_list",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_specifier",
          "named": true
        },
        {
          "type": "noexcept",
          "named": true
        },
        {
          "type": "ref_qualifier",
          "named": true
        },
        {
          "type": "throw_specifier",
          "named": true
        },
        {
          "type": "trailing_return_type",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        },
        {
          "type": "virtual_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_definition",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "compound_statement",
            "named": true
          }
        ]
      },
      "declarator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_declarator",
            "named": true
          },
          {
            "type": "_field_declarator",
            "named": true
          },
          {
            "type": "operator_cast",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_declaration",
          "named": true
        },
        {
          "type": "attribute_specifier",
          "named": true
        },
        {
          "type": "default_method_clause",
          "named": true
        },
        {
          "type": "delete_method_clause",
          "named": true
        },
        {
          "type": "explicit_function_specifier",
          "named": true
        },
        {
          "type": "field_initializer_list",
          "named": true
        },
        {
          "type": "ms_call_modifier",
          "named": true
        },
        {
          "type": "ms_declspec_modifier",
          "named": true
        },
        {
          "type": "storage_class_specifier",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        },
        {
          "type": "virtual_function_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "goto_statement",
    "named": true,
    "fields": {
      "label": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "statement_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "if_statement",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_statement",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "condition_clause",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_statement",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "init_declarator",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_declarator",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "argument_list",
            "named": true
          },
          {
            "type": "initializer_list",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "initializer_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "initializer_list",
          "named": true
        },
        {
          "type": "initializer_pair",
          "named": true
        }
      ]
    }
  },
  {
    "type": "initializer_pair",
    "named": true,
    "fields": {
      "designator": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "field_designator",
            "named": true
          },
          {
            "type": "subscript_designator",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "initializer_list",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "labeled_statement",
    "named": true,
    "fields": {
      "label": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "statement_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lambda_capture_specifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "lambda_default_capture",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lambda_default_capture",
    "named": true,
    "fields": {}
  },
  {
    "type": "lambda_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "compound_statement",
            "named": true
          }
        ]
      },
      "captures": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "lambda_capture_specifier",
            "named": true
          }
        ]
      },
      "declarator": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "abstract_function_declarator",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "linkage_specification",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "declaration",
            "named": true
          },
          {
            "type": "declaration_list",
            "named": true
          },
          {
            "type": "function_definition",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "string_literal",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "macro_annotation",
    "named": true,
    "fields": {}
  },
  {
    "type": "macro_statement",
    "named": true,
    "fields": {}
  },
  {
    "type": "ms_based_modifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ms_call_modifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "ms_declspec_modifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ms_pointer_modifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "ms_restrict_modifier",
          "named": true
        },
        {
          "type": "ms_signed_ptr_modifier",
          "named": true
        },
        {
          "type": "ms_unaligned_ptr_modifier",
          "named": true
        },
        {
          "type": "ms_unsigned_ptr_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ms_unaligned_ptr_modifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "namespace_definition",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "declaration_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "namespace_definition_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "namespace_definition_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "namespace_definition_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "new_declarator",
    "named": true,
    "fields": {
      "length": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "new_declarator",
          "named": true
        }
      ]
    }
  },
  {
    "type": "new_expression",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "argument_list",
            "named": true
          },
          {
            "type": "initializer_list",
            "named": true
          }
        ]
      },
      "declarator": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "new_declarator",
            "named": true
          }
        ]
      },
      "placement": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "argument_list",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "noexcept",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "operator_cast",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_abstract_declarator",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_declaration",
          "named": true
        },
        {
          "type": "attribute_specifier",
          "named": true
        },
        {
          "type": "ms_declspec_modifier",
          "named": true
        },
        {
          "type": "storage_class_specifier",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        },
        {
          "type": "virtual_function_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "operator_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "optional_parameter_declaration",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_declarator",
            "named": true
          }
        ]
      },
      "default_value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_declaration",
          "named": true
        },
        {
          "type": "attribute_specifier",
          "named": true
        },
        {
          "type": "ms_declspec_modifier",
          "named": true
        },
        {
          "type": "storage_class_specifier",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        },
        {
          "type": "virtual_function_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "optional_type_parameter_declaration",
    "named": true,
    "fields": {
      "default_type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "parameter_declaration",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_abstract_declarator",
            "named": true
          },
          {
            "type": "_declarator",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_declaration",
          "named": true
        },
        {
          "type": "attribute_specifier",
          "named": true
        },
        {
          "type": "ms_declspec_modifier",
          "named": true
        },
        {
          "type": "storage_class_specifier",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        },
        {
          "type": "virtual_function_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parameter_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "macro_annotation",
          "named": true
        },
        {
          "type": "optional_parameter_declaration",
          "named": true
        },
        {
          "type": "parameter_declaration",
          "named": true
        },
        {
          "type": "variadic_parameter_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parameter_pack_expansion",
    "named": true,
    "fields": {
      "pattern": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "type_descriptor",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "parenthesized_declarator",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_declarator",
          "named": true
        },
        {
          "type": "_field_declarator",
          "named": true
        },
        {
          "type": "_type_declarator",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parenthesized_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "comma_expression",
          "named": true
        },
        {
          "type": "preproc_defined",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pointer_declarator",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_declarator",
            "named": true
          },
          {
            "type": "_field_declarator",
            "named": true
          },
          {
            "type": "_type_declarator",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "ms_based_modifier",
          "named": true
        },
        {
          "type": "ms_pointer_modifier",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pointer_expression",
    "named": true,
    "fields": {
      "argument": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "preproc_call",
    "named": true,
    "fields": {
      "argument": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "preproc_arg",
            "named": true
          }
        ]
      },
      "directive": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "preproc_directive",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "preproc_def",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "preproc_arg",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "preproc_defined",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "preproc_elif",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "preproc_elif",
            "named": true
          },
          {
            "type": "preproc_else",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "char_literal",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "number_literal",
            "named": true
          },
          {
            "type": "parenthesized_expression",
            "named": true
          },
          {
            "type": "preproc_defined",
            "named": true
          },
          {
            "type": "unary_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        },
        {
          "type": "_type_specifier",
          "named": true
        },
        {
          "type": "access_specifier",
          "named": true
        },
        {
          "type": "alias_declaration",
          "named": true
        },
        {
          "type": "alone_macro",
          "named": true
        },
        {
          "type": "alone_macro_call",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "field_declaration",
          "named": true
        },
        {
          "type": "friend_declaration",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "linkage_specification",
          "named": true
        },
        {
          "type": "macro_statement",
          "named": true
        },
        {
          "type": "namespace_definition",
          "named": true
        },
        {
          "type": "preproc_call",
          "named": true
        },
        {
          "type": "preproc_def",
          "named": true
        },
        {
          "type": "preproc_function_def",
          "named": true
        },
        {
          "type": "preproc_if",
          "named": true
        },
        {
          "type": "preproc_ifdef",
          "named": true
        },
        {
          "type": "preproc_include",
          "named": true
        },
        {
          "type": "static_assert_declaration",
          "named": true
        },
        {
          "type": "template_declaration",
          "named": true
        },
        {
          "type": "template_instantiation",
          "named": true
        },
        {
          "type": "type_definition",
          "named": true
        },
        {
          "type": "using_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "preproc_else",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        },
        {
          "type": "_type_specifier",
          "named": true
        },
        {
          "type": "access_specifier",
          "named": true
        },
        {
          "type": "alias_declaration",
          "named": true
        },
        {
          "type": "alone_macro",
          "named": true
        },
        {
          "type": "alone_macro_call",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "field_declaration",
          "named": true
        },
        {
          "type": "friend_declaration",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "linkage_specification",
          "named": true
        },
        {
          "type": "macro_statement",
          "named": true
        },
        {
          "type": "namespace_definition",
          "named": true
        },
        {
          "type": "preproc_call",
          "named": true
        },
        {
          "type": "preproc_def",
          "named": true
        },
        {
          "type": "preproc_function_def",
          "named": true
        },
        {
          "type": "preproc_if",
          "named": true
        },
        {
          "type": "preproc_ifdef",
          "named": true
        },
        {
          "type": "preproc_include",
          "named": true
        },
        {
          "type": "static_assert_declaration",
          "named": true
        },
        {
          "type": "template_declaration",
          "named": true
        },
        {
          "type": "template_instantiation",
          "named": true
        },
        {
          "type": "type_definition",
          "named": true
        },
        {
          "type": "using_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "preproc_function_def",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "preproc_params",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "preproc_arg",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "preproc_if",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "preproc_elif",
            "named": true
          },
          {
            "type": "preproc_else",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "char_literal",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "number_literal",
            "named": true
          },
          {
            "type": "parenthesized_expression",
            "named": true
          },
          {
            "type": "preproc_defined",
            "named": true
          },
          {
            "type": "unary_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        },
        {
          "type": "_type_specifier",
          "named": true
        },
        {
          "type": "access_specifier",
          "named": true
        },
        {
          "type": "alias_declaration",
          "named": true
        },
        {
          "type": "alone_macro",
          "named": true
        },
        {
          "type": "alone_macro_call",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "field_declaration",
          "named": true
        },
        {
          "type": "friend_declaration",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "linkage_specification",
          "named": true
        },
        {
          "type": "macro_statement",
          "named": true
        },
        {
          "type": "namespace_definition",
          "named": true
        },
        {
          "type": "preproc_call",
          "named": true
        },
        {
          "type": "preproc_def",
          "named": true
        },
        {
          "type": "preproc_function_def",
          "named": true
        },
        {
          "type": "preproc_if",
          "named": true
        },
        {
          "type": "preproc_ifdef",
          "named": true
        },
        {
          "type": "preproc_include",
          "named": true
        },
        {
          "type": "static_assert_declaration",
          "named": true
        },
        {
          "type": "template_declaration",
          "named": true
        },
        {
          "type": "template_instantiation",
          "named": true
        },
        {
          "type": "type_definition",
          "named": true
        },
        {
          "type": "using_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "preproc_ifdef",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "preproc_elif",
            "named": true
          },
          {
            "type": "preproc_else",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        },
        {
          "type": "_type_specifier",
          "named": true
        },
        {
          "type": "access_specifier",
          "named": true
        },
        {
          "type": "alias_declaration",
          "named": true
        },
        {
          "type": "alone_macro",
          "named": true
        },
        {
          "type": "alone_macro_call",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "field_declaration",
          "named": true
        },
        {
          "type": "friend_declaration",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "linkage_specification",
          "named": true
        },
        {
          "type": "macro_statement",
          "named": true
        },
        {
          "type": "namespace_definition",
          "named": true
        },
        {
          "type": "preproc_call",
          "named": true
        },
        {
          "type": "preproc_def",
          "named": true
        },
        {
          "type": "preproc_function_def",
          "named": true
        },
        {
          "type": "preproc_if",
          "named": true
        },
        {
          "type": "preproc_ifdef",
          "named": true
        },
        {
          "type": "preproc_include",
          "named": true
        },
        {
          "type": "static_assert_declaration",
          "named": true
        },
        {
          "type": "template_declaration",
          "named": true
        },
        {
          "type": "template_instantiation",
          "named": true
        },
        {
          "type": "type_definition",
          "named": true
        },
        {
          "type": "using_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "preproc_include",
    "named": true,
    "fields": {
      "path": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "string_literal",
            "named": true
          },
          {
            "type": "system_lib_string",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "preproc_params",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "qualified_identifier",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "dependent_name",
            "named": true
          },
          {
            "type": "destructor_name",
            "named": true
          },
          {
            "type": "field_identifier",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "operator_cast",
            "named": true
          },
          {
            "type": "operator_name",
            "named": true
          },
          {
            "type": "qualified_identifier",
            "named": true
          },
          {
            "type": "template_function",
            "named": true
          },
          {
            "type": "template_method",
            "named": true
          },
          {
            "type": "template_type",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "scope": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "dependent_name",
            "named": true
          },
          {
            "type": "namespace_identifier",
            "named": true
          },
          {
            "type": "template_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "ref_qualifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "reference_declarator",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_declarator",
          "named": true
        },
        {
          "type": "_field_declarator",
          "named": true
        },
        {
          "type": "variadic_declarator",
          "named": true
        }
      ]
    }
  },
  {
    "type": "return_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "comma_expression",
          "named": true
        },
        {
          "type": "initializer_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "sized_type_specifier",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "primitive_type",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "sizeof_expression",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_descriptor",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "static_assert_declaration",
    "named": true,
    "fields": {
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "message": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "concatenated_string",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "string_literal",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "storage_class_specifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "macro_annotation",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "escape_sequence",
          "named": true
        }
      ]
    }
  },
  {
    "type": "struct_specifier",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "field_declaration_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "qualified_identifier",
            "named": true
          },
          {
            "type": "template_type",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "base_class_clause",
          "named": true
        },
        {
          "type": "macro_annotation",
          "named": true
        },
        {
          "type": "virtual_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "structured_binding_declarator",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "subscript_designator",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "subscript_expression",
    "named": true,
    "fields": {
      "argument": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "index": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "initializer_list",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "switch_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "compound_statement",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "condition_clause",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "template_argument_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "type_descriptor",
          "named": true
        }
      ]
    }
  },
  {
    "type": "template_declaration",
    "named": true,
    "fields": {
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "template_parameter_list",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type_specifier",
          "named": true
        },
        {
          "type": "alias_declaration",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "template_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "template_function",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "template_argument_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "template_instantiation",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_declarator",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_declaration",
          "named": true
        },
        {
          "type": "attribute_specifier",
          "named": true
        },
        {
          "type": "ms_declspec_modifier",
          "named": true
        },
        {
          "type": "storage_class_specifier",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        },
        {
          "type": "virtual_function_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "template_method",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "template_argument_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "field_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "template_parameter_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "optional_parameter_declaration",
          "named": true
        },
        {
          "type": "optional_type_parameter_declaration",
          "named": true
        },
        {
          "type": "parameter_declaration",
          "named": true
        },
        {
          "type": "template_template_parameter_declaration",
          "named": true
        },
        {
          "type": "type_parameter_declaration",
          "named": true
        },
        {
          "type": "variadic_parameter_declaration",
          "named": true
        },
        {
          "type": "variadic_type_parameter_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "template_template_parameter_declaration",
    "named": true,
    "fields": {
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "template_parameter_list",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "optional_type_parameter_declaration",
          "named": true
        },
        {
          "type": "type_parameter_declaration",
          "named": true
        },
        {
          "type": "variadic_type_parameter_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "template_type",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "template_argument_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "throw_specifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "type_descriptor",
          "named": true
        }
      ]
    }
  },
  {
    "type": "throw_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "trailing_return_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_abstract_declarator",
          "named": true
        },
        {
          "type": "_type_specifier",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "translation_unit",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        },
        {
          "type": "_type_specifier",
          "named": true
        },
        {
          "type": "alias_declaration",
          "named": true
        },
        {
          "type": "alone_macro",
          "named": true
        },
        {
          "type": "alone_macro_call",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "linkage_specification",
          "named": true
        },
        {
          "type": "namespace_definition",
          "named": true
        },
        {
          "type": "preproc_call",
          "named": true
        },
        {
          "type": "preproc_def",
          "named": true
        },
        {
          "type": "preproc_function_def",
          "named": true
        },
        {
          "type": "preproc_if",
          "named": true
        },
        {
          "type": "preproc_ifdef",
          "named": true
        },
        {
          "type": "preproc_include",
          "named": true
        },
        {
          "type": "static_assert_declaration",
          "named": true
        },
        {
          "type": "template_declaration",
          "named": true
        },
        {
          "type": "template_instantiation",
          "named": true
        },
        {
          "type": "type_definition",
          "named": true
        },
        {
          "type": "using_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "try_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "compound_statement",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "catch_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_definition",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "_type_declarator",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "type_qualifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_descriptor",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_abstract_declarator",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "type_qualifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_parameter_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "type_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_qualifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "unary_expression",
    "named": true,
    "fields": {
      "argument": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "preproc_defined",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "!",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "union_specifier",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "field_declaration_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "qualified_identifier",
            "named": true
          },
          {
            "type": "template_type",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "base_class_clause",
          "named": true
        },
        {
          "type": "ms_declspec_modifier",
          "named": true
        },
        {
          "type": "virtual_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "update_expression",
    "named": true,
    "fields": {
      "argument": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "++",
            "named": false
          },
          {
            "type": "--",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "user_defined_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "char_literal",
          "named": true
        },
        {
          "type": "concatenated_string",
          "named": true
        },
        {
          "type": "literal_suffix",
          "named": true
        },
        {
          "type": "number_literal",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "using_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "qualified_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variadic_declarator",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variadic_parameter_declaration",
    "named": true,
    "fields": {
      "declarator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "reference_declarator",
            "named": true
          },
          {
            "type": "variadic_declarator",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type_specifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_declaration",
          "named": true
        },
        {
          "type": "attribute_specifier",
          "named": true
        },
        {
          "type": "ms_declspec_modifier",
          "named": true
        },
        {
          "type": "storage_class_specifier",
          "named": true
        },
        {
          "type": "type_qualifier",
          "named": true
        },
        {
          "type": "virtual_function_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variadic_type_parameter_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "type_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "virtual_function_specifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "virtual_specifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "while_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_statement",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "condition_clause",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "\n",
    "named": false
  },
  {
    "type": "!",
    "named": false
  },
  {
    "type": "!=",
    "named": false
  },
  {
    "type": "\"",
    "named": false
  },
  {
    "type": "\"\"",
    "named": false
  },
  {
    "type": "#define",
    "named": false
  },
  {
    "type": "#elif",
    "named": false
  },
  {
    "type": "#else",
    "named": false
  },
  {
    "type": "#endif",
    "named": false
  },
  {
    "type": "#if",
    "named": false
  },
  {
    "type": "#ifdef",
    "named": false
  },
  {
    "type": "#ifndef",
    "named": false
  },
  {
    "type": "#include",
    "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": ",",
    "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": "<<=",
    "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": "CACHE_TRY_INSPECT",
    "named": false
  },
  {
    "type": "CACHE_TRY_UNWRAP",
    "named": false
  },
  {
    "type": "FORWARD",
    "named": false
  },
  {
    "type": "FORWARD_SET_ATTRIBUTE",
    "named": false
  },
  {
    "type": "IDB_TRY_INSPECT",
    "named": false
  },
  {
    "type": "IDB_TRY_UNWRAP",
    "named": false
  },
  {
    "type": "JS_PUBLIC_API",
    "named": false
  },
  {
    "type": "L\"",
    "named": false
  },
  {
    "type": "L'",
    "named": false
  },
  {
    "type": "LS_TRY_INSPECT",
    "named": false
  },
  {
    "type": "LS_TRY_UNWRAP",
    "named": false
  },
  {
    "type": "MOZ_ALLOCATOR",
    "named": false
  },
  {
    "type": "MOZ_ALLOW_TEMPORARY",
    "named": false
  },
  {
    "type": "MOZ_ALWAYS_INLINE",
    "named": false
  },
  {
    "type": "MOZ_ALWAYS_INLINE_EVEN_DEBUG",
    "named": false
  },
  {
    "type": "MOZ_ASAN_BLACKLIST",
    "named": false
  },
  {
    "type": "MOZ_CAN_RUN_SCRIPT",
    "named": false
  },
  {
    "type": "MOZ_CAN_RUN_SCRIPT_BOUNDARY",
    "named": false
  },
  {
    "type": "MOZ_CAN_RUN_SCRIPT_FOR_DEFINITION",
    "named": false
  },
  {
    "type": "MOZ_COLD",
    "named": false
  },
  {
    "type": "MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER",
    "named": false
  },
  {
    "type": "MOZ_FALLTHROUGH",
    "named": false
  },
  {
    "type": "MOZ_FORMAT_PRINTF",
    "named": false
  },
  {
    "type": "MOZ_HAVE_ANALYZER_NORETURN",
    "named": false
  },
  {
    "type": "MOZ_HAVE_ASAN_BLACKLIST",
    "named": false
  },
  {
    "type": "MOZ_HAVE_NEVER_INLINE",
    "named": false
  },
  {
    "type": "MOZ_HAVE_NORETURN",
    "named": false
  },
  {
    "type": "MOZ_HAVE_NORETURN_PTR",
    "named": false
  },
  {
    "type": "MOZ_HAVE_NO_SANITIZE_ATTR",
    "named": false
  },
  {
    "type": "MOZ_HAVE_SIGNED_OVERFLOW_SANITIZE_ATTR",
    "named": false
  },
  {
    "type": "MOZ_HAVE_UNSIGNED_OVERFLOW_SANITIZE_ATTR",
    "named": false
  },
  {
    "type": "MOZ_HEAP_ALLOCATOR",
    "named": false
  },
  {
    "type": "MOZ_HEAP_CLASS",
    "named": false
  },
  {
    "type": "MOZ_IMPLICIT",
    "named": false
  },
  {
    "type": "MOZ_INHERIT_TYPE_ANNOTATIONS_FROM_TEMPLATE_ARGS",
    "named": false
  },
  {
    "type": "MOZ_INIT_OUTSIDE_CTOR",
    "named": false
  },
  {
    "type": "MOZ_IS_CLASS_INIT",
    "named": false
  },
  {
    "type": "MOZ_IS_REFPTR",
    "named": false
  },
  {
    "type": "MOZ_IS_SMARTPTR_TO_REFCOUNTED",
    "named": false
  },
  {
    "type": "MOZ_MAYBE_UNUSED",
    "named": false
  },
  {
    "type": "MOZ_MAY_CALL_AFTER_MUST_RETURN",
    "named": false
  },
  {
    "type": "MOZ_MUST_OVERRIDE",
    "named": false
  },
  {
    "type": "MOZ_MUST_RETURN_FROM_CALLER_IF_THIS_IS_ARG",
    "named": false
  },
  {
    "type": "MOZ_MUST_USE",
    "named": false
  },
  {
    "type": "MOZ_MUST_USE_TYPE",
    "named": false
  },
  {
    "type": "MOZ_NEEDS_MEMMOVABLE_MEMBERS",
    "named": false
  },
  {
    "type": "MOZ_NEEDS_MEMMOVABLE_TYPE",
    "named": false
  },
  {
    "type": "MOZ_NEEDS_NO_VTABLE_TYPE",
    "named": false
  },
  {
    "type": "MOZ_NEVER_INLINE",
    "named": false
  },
  {
    "type": "MOZ_NEVER_INLINE_DEBUG",
    "named": false
  },
  {
    "type": "MOZ_NONHEAP_CLASS",
    "named": false
  },
  {
    "type": "MOZ_NONNULL",
    "named": false
  },
  {
    "type": "MOZ_NONNULL_RETURN",
    "named": false
  },
  {
    "type": "MOZ_NON_AUTOABLE",
    "named": false
  },
  {
    "type": "MOZ_NON_MEMMOVABLE",
    "named": false
  },
  {
    "type": "MOZ_NON_OWNING_REF",
    "named": false
  },
  {
    "type": "MOZ_NON_PARAM",
    "named": false
  },
  {
    "type": "MOZ_NON_TEMPORARY_CLASS",
    "named": false
  },
  {
    "type": "MOZ_NORETURN",
    "named": false
  },
  {
    "type": "MOZ_NORETURN_PTR",
    "named": false
  },
  {
    "type": "MOZ_NO_ADDREF_RELEASE_ON_RETURN",
    "named": false
  },
  {
    "type": "MOZ_NO_ARITHMETIC_EXPR_IN_ARGUMENT",
    "named": false
  },
  {
    "type": "MOZ_NO_DANGLING_ON_TEMPORARIES",
    "named": false
  },
  {
    "type": "MOZ_NO_SANITIZE_SIGNED_OVERFLOW",
    "named": false
  },
  {
    "type": "MOZ_NO_SANITIZE_UNSIGNED_OVERFLOW",
    "named": false
  },
  {
    "type": "MOZ_ONLY_USED_TO_AVOID_STATIC_CONSTRUCTORS",
    "named": false
  },
  {
    "type": "MOZ_OWNING_REF",
    "named": false
  },
  {
    "type": "MOZ_POP_DISABLE_NONTRIVIAL_UNION_WARNINGS",
    "named": false
  },
  {
    "type": "MOZ_PRETEND_NORETURN_FOR_STATIC_ANALYSIS",
    "named": false
  },
  {
    "type": "MOZ_PUSH_DISABLE_NONTRIVIAL_UNION_WARNINGS",
    "named": false
  },
  {
    "type": "MOZ_RAII",
    "named": false
  },
  {
    "type": "MOZ_REQUIRED_BASE_METHOD",
    "named": false
  },
  {
    "type": "MOZ_STACK_CLASS",
    "named": false
  },
  {
    "type": "MOZ_STATIC_CLASS",
    "named": false
  },
  {
    "type": "MOZ_STATIC_LOCAL_CLASS",
    "named": false
  },
  {
    "type": "MOZ_TEMPORARY_CLASS",
    "named": false
  },
  {
    "type": "MOZ_TRIVIAL_CTOR_DTOR",
    "named": false
  },
  {
    "type": "MOZ_TSAN_BLACKLIST",
    "named": false
  },
  {
    "type": "MOZ_UNSAFE_REF",
    "named": false
  },
  {
    "type": "MOZ_XPCOM_ABI",
    "named": false
  },
  {
    "type": "PS_GET",
    "named": false
  },
  {
    "type": "PS_GET_AND_SET",
    "named": false
  },
  {
    "type": "PS_GET_LOCKLESS",
    "named": false
  },
  {
    "type": "QM_NOTEONLY_TRY_UNWRAP",
    "named": false
  },
  {
    "type": "QM_TRY_INSPECT",
    "named": false
  },
  {
    "type": "QM_TRY_UNWRAP",
    "named": false
  },
  {
    "type": "QM_WARNONLY_TRY_UNWRAP",
    "named": false
  },
  {
    "type": "SDB_TRY_INSPECT",
    "named": false
  },
  {
    "type": "SDB_TRY_UNWRAP",
    "named": false
  },
  {
    "type": "U\"",
    "named": false
  },
  {
    "type": "U'",
    "named": false
  },
  {
    "type": "[",
    "named": false
  },
  {
    "type": "[[",
    "named": false
  },
  {
    "type": "[]",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "]]",
    "named": false
  },
  {
    "type": "^",
    "named": false
  },
  {
    "type": "^=",
    "named": false
  },
  {
    "type": "_Atomic",
    "named": false
  },
  {
    "type": "__attribute__",
    "named": false
  },
  {
    "type": "__based",
    "named": false
  },
  {
    "type": "__cdecl",
    "named": false
  },
  {
    "type": "__clrcall",
    "named": false
  },
  {
    "type": "__declspec",
    "named": false
  },
  {
    "type": "__fastcall",
    "named": false
  },
  {
    "type": "__stdcall",
    "named": false
  },
  {
    "type": "__thiscall",
    "named": false
  },
  {
    "type": "__unaligned",
    "named": false
  },
  {
    "type": "__vectorcall",
    "named": false
  },
  {
    "type": "_unaligned",
    "named": false
  },
  {
    "type": "alone_macro",
    "named": true
  },
  {
    "type": "auto",
    "named": true
  },
  {
    "type": "break",
    "named": false
  },
  {
    "type": "case",
    "named": false
  },
  {
    "type": "catch",
    "named": false
  },
  {
    "type": "class",
    "named": false
  },
  {
    "type": "co_await",
    "named": false
  },
  {
    "type": "co_return",
    "named": false
  },
  {
    "type": "co_yield",
    "named": false
  },
  {
    "type": "comment",
    "named": true
  },
  {
    "type": "const",
    "named": false
  },
  {
    "type": "constexpr",
    "named": false
  },
  {
    "type": "continue",
    "named": false
  },
  {
    "type": "decltype",
    "named": false
  },
  {
    "type": "default",
    "named": false
  },
  {
    "type": "defined",
    "named": false
  },
  {
    "type": "delete",
    "named": false
  },
  {
    "type": "do",
    "named": false
  },
  {
    "type": "else",
    "named": false
  },
  {
    "type": "enum",
    "named": false
  },
  {
    "type": "escape_sequence",
    "named": true
  },
  {
    "type": "explicit",
    "named": false
  },
  {
    "type": "extern",
    "named": false
  },
  {
    "type": "false",
    "named": true
  },
  {
    "type": "field_identifier",
    "named": true
  },
  {
    "type": "final",
    "named": false
  },
  {
    "type": "for",
    "named": false
  },
  {
    "type": "friend",
    "named": false
  },
  {
    "type": "goto",
    "named": false
  },
  {
    "type": "identifier",
    "named": true
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "inline",
    "named": false
  },
  {
    "type": "literal_suffix",
    "named": true
  },
  {
    "type": "long",
    "named": false
  },
  {
    "type": "ms_restrict_modifier",
    "named": true
  },
  {
    "type": "ms_signed_ptr_modifier",
    "named": true
  },
  {
    "type": "ms_unsigned_ptr_modifier",
    "named": true
  },
  {
    "type": "mutable",
    "named": false
  },
  {
    "type": "namespace",
    "named": false
  },
  {
    "type": "namespace_identifier",
    "named": true
  },
  {
    "type": "new",
    "named": false
  },
  {
    "type": "noexcept",
    "named": false
  },
  {
    "type": "null",
    "named": true
  },
  {
    "type": "nullptr",
    "named": true
  },
  {
    "type": "number_literal",
    "named": true
  },
  {
    "type": "operator",
    "named": false
  },
  {
    "type": "override",
    "named": false
  },
  {
    "type": "preproc_arg",
    "named": true
  },
  {
    "type": "preproc_directive",
    "named": true
  },
  {
    "type": "primitive_type",
    "named": true
  },
  {
    "type": "private",
    "named": false
  },
  {
    "type": "protected",
    "named": false
  },
  {
    "type": "public",
    "named": false
  },
  {
    "type": "raw_string_literal",
    "named": true
  },
  {
    "type": "register",
    "named": false
  },
  {
    "type": "restrict",
    "named": false
  },
  {
    "type": "return",
    "named": false
  },
  {
    "type": "short",
    "named": false
  },
  {
    "type": "signed",
    "named": false
  },
  {
    "type": "sizeof",
    "named": false
  },
  {
    "type": "statement_identifier",
    "named": true
  },
  {
    "type": "static",
    "named": false
  },
  {
    "type": "static_assert",
    "named": false
  },
  {
    "type": "struct",
    "named": false
  },
  {
    "type": "switch",
    "named": false
  },
  {
    "type": "system_lib_string",
    "named": true
  },
  {
    "type": "template",
    "named": false
  },
  {
    "type": "this",
    "named": true
  },
  {
    "type": "thread_local",
    "named": false
  },
  {
    "type": "throw",
    "named": false
  },
  {
    "type": "true",
    "named": true
  },
  {
    "type": "try",
    "named": false
  },
  {
    "type": "type_identifier",
    "named": true
  },
  {
    "type": "typedef",
    "named": false
  },
  {
    "type": "typename",
    "named": false
  },
  {
    "type": "u\"",
    "named": false
  },
  {
    "type": "u'",
    "named": false
  },
  {
    "type": "u8\"",
    "named": false
  },
  {
    "type": "u8'",
    "named": false
  },
  {
    "type": "union",
    "named": false
  },
  {
    "type": "unsigned",
    "named": false
  },
  {
    "type": "using",
    "named": false
  },
  {
    "type": "virtual",
    "named": false
  },
  {
    "type": "volatile",
    "named": false
  },
  {
    "type": "while",
    "named": false
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "|=",
    "named": false
  },
  {
    "type": "||",
    "named": false
  },
  {
    "type": "}",
    "named": false
  },
  {
    "type": "~",
    "named": false
  }
]