pub const NODE_TYPES: &str = "[\n  {\n    \"type\": \"_arity_value\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"integer\",\n        \"named\": true\n      },\n      {\n        \"type\": \"macro_call_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"var\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_bit_expr\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"_expr_max\",\n        \"named\": true\n      },\n      {\n        \"type\": \"binary_op_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"unary_op_expr\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_bit_type\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"_name\",\n        \"named\": true\n      },\n      {\n        \"type\": \"bit_type_unit\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_catch_pat\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"_expr_max\",\n        \"named\": true\n      },\n      {\n        \"type\": \"binary_op_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"map_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"record_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"record_index_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"unary_op_expr\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_concatable\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"macro_call_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"macro_string\",\n        \"named\": true\n      },\n      {\n        \"type\": \"string\",\n        \"named\": true\n      },\n      {\n        \"type\": \"var\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_cr_clause_or_macro\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"cr_clause\",\n        \"named\": true\n      },\n      {\n        \"type\": \"macro_call_expr\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_deprecated_details\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"deprecated_fa\",\n        \"named\": true\n      },\n      {\n        \"type\": \"deprecated_fas\",\n        \"named\": true\n      },\n      {\n        \"type\": \"deprecated_module\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_deprecated_fun_arity\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"deprecated_wildcard\",\n        \"named\": true\n      },\n      {\n        \"type\": \"integer\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_desc\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"atom\",\n        \"named\": true\n      },\n      {\n        \"type\": \"multi_string\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_expr\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"_expr_max\",\n        \"named\": true\n      },\n      {\n        \"type\": \"ann_type\",\n        \"named\": true\n      },\n      {\n        \"type\": \"binary_op_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"call\",\n        \"named\": true\n      },\n      {\n        \"type\": \"catch_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"cond_match_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"dotdotdot\",\n        \"named\": true\n      },\n      {\n        \"type\": \"map_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"map_expr_update\",\n        \"named\": true\n      },\n      {\n        \"type\": \"match_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"pipe\",\n        \"named\": true\n      },\n      {\n        \"type\": \"range_type\",\n        \"named\": true\n      },\n      {\n        \"type\": \"record_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"record_field_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"record_index_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"record_update_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"remote\",\n        \"named\": true\n      },\n      {\n        \"type\": \"unary_op_expr\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_expr_max\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"anonymous_fun\",\n        \"named\": true\n      },\n      {\n        \"type\": \"atom\",\n        \"named\": true\n      },\n      {\n        \"type\": \"binary\",\n        \"named\": true\n      },\n      {\n        \"type\": \"binary_comprehension\",\n        \"named\": true\n      },\n      {\n        \"type\": \"block_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"case_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"char\",\n        \"named\": true\n      },\n      {\n        \"type\": \"concatables\",\n        \"named\": true\n      },\n      {\n        \"type\": \"external_fun\",\n        \"named\": true\n      },\n      {\n        \"type\": \"float\",\n        \"named\": true\n      },\n      {\n        \"type\": \"fun_type\",\n        \"named\": true\n      },\n      {\n        \"type\": \"if_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"integer\",\n        \"named\": true\n      },\n      {\n        \"type\": \"internal_fun\",\n        \"named\": true\n      },\n      {\n        \"type\": \"list\",\n        \"named\": true\n      },\n      {\n        \"type\": \"list_comprehension\",\n        \"named\": true\n      },\n      {\n        \"type\": \"macro_call_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"macro_string\",\n        \"named\": true\n      },\n      {\n        \"type\": \"map_comprehension\",\n        \"named\": true\n      },\n      {\n        \"type\": \"maybe_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"paren_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"receive_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"string\",\n        \"named\": true\n      },\n      {\n        \"type\": \"try_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"tuple\",\n        \"named\": true\n      },\n      {\n        \"type\": \"var\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_form\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"_preprocessor_directive\",\n        \"named\": true\n      },\n      {\n        \"type\": \"behaviour_attribute\",\n        \"named\": true\n      },\n      {\n        \"type\": \"callback\",\n        \"named\": true\n      },\n      {\n        \"type\": \"compile_options_attribute\",\n        \"named\": true\n      },\n      {\n        \"type\": \"deprecated_attribute\",\n        \"named\": true\n      },\n      {\n        \"type\": \"export_attribute\",\n        \"named\": true\n      },\n      {\n        \"type\": \"export_type_attribute\",\n        \"named\": true\n      },\n      {\n        \"type\": \"feature_attribute\",\n        \"named\": true\n      },\n      {\n        \"type\": \"file_attribute\",\n        \"named\": true\n      },\n      {\n        \"type\": \"fun_decl\",\n        \"named\": true\n      },\n      {\n        \"type\": \"import_attribute\",\n        \"named\": true\n      },\n      {\n        \"type\": \"module_attribute\",\n        \"named\": true\n      },\n      {\n        \"type\": \"opaque\",\n        \"named\": true\n      },\n      {\n        \"type\": \"optional_callbacks_attribute\",\n        \"named\": true\n      },\n      {\n        \"type\": \"record_decl\",\n        \"named\": true\n      },\n      {\n        \"type\": \"shebang\",\n        \"named\": true\n      },\n      {\n        \"type\": \"spec\",\n        \"named\": true\n      },\n      {\n        \"type\": \"ssr_definition\",\n        \"named\": true\n      },\n      {\n        \"type\": \"type_alias\",\n        \"named\": true\n      },\n      {\n        \"type\": \"wild_attribute\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_function_or_macro_clause\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"function_clause\",\n        \"named\": true\n      },\n      {\n        \"type\": \"macro_call_expr\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_include_detail\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"macro_call_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"string\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_lc_expr\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"b_generator\",\n        \"named\": true\n      },\n      {\n        \"type\": \"generator\",\n        \"named\": true\n      },\n      {\n        \"type\": \"map_generator\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_macro_def_replacement\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"replacement_cr_clauses\",\n        \"named\": true\n      },\n      {\n        \"type\": \"replacement_expr_guard\",\n        \"named\": true\n      },\n      {\n        \"type\": \"replacement_function_clauses\",\n        \"named\": true\n      },\n      {\n        \"type\": \"replacement_guard_and\",\n        \"named\": true\n      },\n      {\n        \"type\": \"replacement_guard_or\",\n        \"named\": true\n      },\n      {\n        \"type\": \"replacement_parens\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_macro_name\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"atom\",\n        \"named\": true\n      },\n      {\n        \"type\": \"var\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_map_expr_base\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"_expr_max\",\n        \"named\": true\n      },\n      {\n        \"type\": \"map_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"map_expr_update\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_name\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"atom\",\n        \"named\": true\n      },\n      {\n        \"type\": \"macro_call_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"var\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_preprocessor_directive\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"pp_define\",\n        \"named\": true\n      },\n      {\n        \"type\": \"pp_elif\",\n        \"named\": true\n      },\n      {\n        \"type\": \"pp_else\",\n        \"named\": true\n      },\n      {\n        \"type\": \"pp_endif\",\n        \"named\": true\n      },\n      {\n        \"type\": \"pp_if\",\n        \"named\": true\n      },\n      {\n        \"type\": \"pp_ifdef\",\n        \"named\": true\n      },\n      {\n        \"type\": \"pp_ifndef\",\n        \"named\": true\n      },\n      {\n        \"type\": \"pp_include\",\n        \"named\": true\n      },\n      {\n        \"type\": \"pp_include_lib\",\n        \"named\": true\n      },\n      {\n        \"type\": \"pp_undef\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_record_expr_base\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"_expr_max\",\n        \"named\": true\n      },\n      {\n        \"type\": \"record_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"record_field_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"record_index_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"record_update_expr\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"_string_like\",\n    \"named\": true,\n    \"subtypes\": [\n      {\n        \"type\": \"macro_call_expr\",\n        \"named\": true\n      },\n      {\n        \"type\": \"macro_string\",\n        \"named\": true\n      },\n      {\n        \"type\": \"string\",\n        \"named\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"ann_type\",\n    \"named\": true,\n    \"fields\": {\n      \"ty\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"var\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ann_var\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"ann_var\",\n    \"named\": true,\n    \"fields\": {\n      \"var\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"var\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"anonymous_fun\",\n    \"named\": true,\n    \"fields\": {\n      \"clauses\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"fun_clause\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"arity\",\n    \"named\": true,\n    \"fields\": {\n      \"value\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_arity_value\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"attr_name\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"b_generator\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"behaviour_attribute\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"bin_element\",\n    \"named\": true,\n    \"fields\": {\n      \"element\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_bit_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"size\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"bit_size_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"types\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"bit_type_list\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"binary\",\n    \"named\": true,\n    \"fields\": {\n      \"elements\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"bin_element\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"binary_comprehension\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr_max\",\n            \"named\": true\n          }\n        ]\n      },\n      \"lc_exprs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"lc_exprs\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"binary_op_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_catch_pat\",\n            \"named\": true\n          },\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_catch_pat\",\n            \"named\": true\n          },\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"bit_size_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"size\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_bit_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"bit_type_list\",\n    \"named\": true,\n    \"fields\": {\n      \"types\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_bit_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"bit_type_unit\",\n    \"named\": true,\n    \"fields\": {\n      \"size\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_arity_value\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"block_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"exprs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"call\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"expr_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"callback\",\n    \"named\": true,\n    \"fields\": {\n      \"fun\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      },\n      \"module\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"module\",\n            \"named\": true\n          }\n        ]\n      },\n      \"sigs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"type_sig\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"case_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"clauses\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"_cr_clause_or_macro\",\n            \"named\": true\n          }\n        ]\n      },\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"catch_clause\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"clause_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"class\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"try_class\",\n            \"named\": true\n          }\n        ]\n      },\n      \"guard\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"guard\",\n            \"named\": true\n          }\n        ]\n      },\n      \"pat\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_catch_pat\",\n            \"named\": true\n          }\n        ]\n      },\n      \"stack\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"try_stack\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"catch_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"clause_body\",\n    \"named\": true,\n    \"fields\": {\n      \"exprs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"compile_options_attribute\",\n    \"named\": true,\n    \"fields\": {\n      \"options\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"concatables\",\n    \"named\": true,\n    \"fields\": {\n      \"elems\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_concatable\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"cond_match_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"cr_clause\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"clause_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"guard\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"guard\",\n            \"named\": true\n          }\n        ]\n      },\n      \"pat\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"deprecated_attribute\",\n    \"named\": true,\n    \"fields\": {\n      \"attr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_deprecated_details\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"deprecated_fa\",\n    \"named\": true,\n    \"fields\": {\n      \"arity\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_deprecated_fun_arity\",\n            \"named\": true\n          }\n        ]\n      },\n      \"desc\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"deprecation_desc\",\n            \"named\": true\n          }\n        ]\n      },\n      \"fun\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"atom\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"deprecated_fas\",\n    \"named\": true,\n    \"fields\": {\n      \"fa\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"deprecated_fa\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"deprecated_module\",\n    \"named\": true,\n    \"fields\": {\n      \"module\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"atom\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"deprecation_desc\",\n    \"named\": true,\n    \"fields\": {\n      \"desc\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_desc\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"export_attribute\",\n    \"named\": true,\n    \"fields\": {\n      \"funs\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"fa\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"export_type_attribute\",\n    \"named\": true,\n    \"fields\": {\n      \"types\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"fa\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"expr_args\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"external_fun\",\n    \"named\": true,\n    \"fields\": {\n      \"arity\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"arity\",\n            \"named\": true\n          }\n        ]\n      },\n      \"fun\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      },\n      \"module\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"module\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"fa\",\n    \"named\": true,\n    \"fields\": {\n      \"arity\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"arity\",\n            \"named\": true\n          }\n        ]\n      },\n      \"fun\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"feature_attribute\",\n    \"named\": true,\n    \"fields\": {\n      \"feature\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"flag\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"field_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"field_type\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"file_attribute\",\n    \"named\": true,\n    \"fields\": {\n      \"original_file\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"string\",\n            \"named\": true\n          }\n        ]\n      },\n      \"original_line\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"integer\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"fun_clause\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"expr_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"clause_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"guard\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"guard\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"var\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"fun_decl\",\n    \"named\": true,\n    \"fields\": {\n      \"clause\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_function_or_macro_clause\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"fun_type\",\n    \"named\": true,\n    \"fields\": {\n      \"sig\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"fun_type_sig\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"fun_type_sig\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"expr_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"ty\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"function_clause\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"expr_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"clause_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"guard\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"guard\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"generator\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"guard\",\n    \"named\": true,\n    \"fields\": {\n      \"clauses\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"guard_clause\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"guard_clause\",\n    \"named\": true,\n    \"fields\": {\n      \"exprs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"if_clause\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"clause_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"guard\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"guard\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"if_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"clauses\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"if_clause\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"import_attribute\",\n    \"named\": true,\n    \"fields\": {\n      \"funs\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"fa\",\n            \"named\": true\n          }\n        ]\n      },\n      \"module\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"internal_fun\",\n    \"named\": true,\n    \"fields\": {\n      \"arity\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"arity\",\n            \"named\": true\n          }\n        ]\n      },\n      \"fun\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"lc_exprs\",\n    \"named\": true,\n    \"fields\": {\n      \"exprs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_lc_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"list\",\n    \"named\": true,\n    \"fields\": {\n      \"exprs\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"list_comprehension\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"lc_exprs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"lc_exprs\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"macro_call_args\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"macro_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"macro_call_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"macro_call_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_macro_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"macro_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"guard\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"macro_lhs\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"var_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_macro_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"macro_string\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_macro_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"map_comprehension\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"map_field\",\n            \"named\": true\n          }\n        ]\n      },\n      \"lc_exprs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"lc_exprs\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"map_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"fields\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"map_field\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"map_expr_update\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_map_expr_base\",\n            \"named\": true\n          }\n        ]\n      },\n      \"fields\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"map_field\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"map_field\",\n    \"named\": true,\n    \"fields\": {\n      \"key\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"map_generator\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"map_field\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"match_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"maybe_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"clauses\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"_cr_clause_or_macro\",\n            \"named\": true\n          }\n        ]\n      },\n      \"exprs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"module\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"module_attribute\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"multi_string\",\n    \"named\": true,\n    \"fields\": {\n      \"elems\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_string_like\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"opaque\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"type_name\",\n            \"named\": true\n          }\n        ]\n      },\n      \"ty\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"optional_callbacks_attribute\",\n    \"named\": true,\n    \"fields\": {\n      \"callbacks\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"fa\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"paren_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"pipe\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"pp_define\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"macro_lhs\",\n            \"named\": true\n          }\n        ]\n      },\n      \"replacement\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"_macro_def_replacement\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"pp_elif\",\n    \"named\": true,\n    \"fields\": {\n      \"cond\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"pp_else\",\n    \"named\": true,\n    \"fields\": {\n    }\n  },\n  {\n    \"type\": \"pp_endif\",\n    \"named\": true,\n    \"fields\": {\n    }\n  },\n  {\n    \"type\": \"pp_if\",\n    \"named\": true,\n    \"fields\": {\n      \"cond\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"pp_ifdef\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_macro_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"pp_ifndef\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_macro_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"pp_include\",\n    \"named\": true,\n    \"fields\": {\n      \"file\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_include_detail\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"pp_include_lib\",\n    \"named\": true,\n    \"fields\": {\n      \"file\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_include_detail\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"pp_undef\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_macro_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"range_type\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"receive_after\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"clause_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"receive_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"after\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"receive_after\",\n            \"named\": true\n          }\n        ]\n      },\n      \"clauses\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"_cr_clause_or_macro\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"record_decl\",\n    \"named\": true,\n    \"fields\": {\n      \"fields\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"record_field\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"record_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"fields\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"record_field\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"record_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"record_field\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"field_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      },\n      \"ty\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"field_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"record_field_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_record_expr_base\",\n            \"named\": true\n          }\n        ]\n      },\n      \"field\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"record_field_name\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"record_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"record_field_name\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"record_index_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"field\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"record_field_name\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"record_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"record_name\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"record_update_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_record_expr_base\",\n            \"named\": true\n          }\n        ]\n      },\n      \"fields\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"record_field\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"record_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"remote\",\n    \"named\": true,\n    \"fields\": {\n      \"fun\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr_max\",\n            \"named\": true\n          }\n        ]\n      },\n      \"module\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"remote_module\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"remote_module\",\n    \"named\": true,\n    \"fields\": {\n      \"module\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr_max\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"replacement_cr_clauses\",\n    \"named\": true,\n    \"fields\": {\n      \"clauses\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_cr_clause_or_macro\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"replacement_expr_guard\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"guard\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"guard\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"replacement_function_clauses\",\n    \"named\": true,\n    \"fields\": {\n      \"clauses\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_function_or_macro_clause\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"replacement_guard_and\",\n    \"named\": true,\n    \"fields\": {\n      \"guard\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"replacement_guard_or\",\n    \"named\": true,\n    \"fields\": {\n      \"guard\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"replacement_guard_and\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"replacement_parens\",\n    \"named\": true,\n    \"fields\": {\n    }\n  },\n  {\n    \"type\": \"source_file\",\n    \"named\": true,\n    \"fields\": {\n      \"exprs\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \".\",\n            \"named\": false\n          },\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"forms_only\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"_form\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"spec\",\n    \"named\": true,\n    \"fields\": {\n      \"fun\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      },\n      \"module\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"module\",\n            \"named\": true\n          }\n        ]\n      },\n      \"sigs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"type_sig\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"ssr_definition\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"ssr_replacement\",\n            \"named\": true\n          }\n        ]\n      },\n      \"when\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"ssr_when\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"ssr_replacement\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"ssr_when\",\n    \"named\": true,\n    \"fields\": {\n      \"guard\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"guard\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"string\",\n    \"named\": true,\n    \"fields\": {\n    }\n  },\n  {\n    \"type\": \"try_after\",\n    \"named\": true,\n    \"fields\": {\n      \"exprs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"try_class\",\n    \"named\": true,\n    \"fields\": {\n      \"class\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"try_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"after\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"try_after\",\n            \"named\": true\n          }\n        ]\n      },\n      \"catch\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"catch_clause\",\n            \"named\": true\n          }\n        ]\n      },\n      \"clauses\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"_cr_clause_or_macro\",\n            \"named\": true\n          }\n        ]\n      },\n      \"exprs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"try_stack\",\n    \"named\": true,\n    \"fields\": {\n      \"class\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"var\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"tuple\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"type_alias\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"type_name\",\n            \"named\": true\n          }\n        ]\n      },\n      \"ty\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"type_guards\",\n    \"named\": true,\n    \"fields\": {\n      \"guards\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ann_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"type_name\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"var_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_name\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"type_sig\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"expr_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"guard\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"type_guards\",\n            \"named\": true\n          }\n        ]\n      },\n      \"ty\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"unary_op_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"operand\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"var_args\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"var\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"wild_attribute\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"attr_name\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"_expr\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"!\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#\",\n    \"named\": false\n  },\n  {\n    \"type\": \"(\",\n    \"named\": false\n  },\n  {\n    \"type\": \")\",\n    \"named\": false\n  },\n  {\n    \"type\": \"*\",\n    \"named\": false\n  },\n  {\n    \"type\": \"+\",\n    \"named\": false\n  },\n  {\n    \"type\": \"++\",\n    \"named\": false\n  },\n  {\n    \"type\": \",\",\n    \"named\": false\n  },\n  {\n    \"type\": \"-\",\n    \"named\": false\n  },\n  {\n    \"type\": \"--\",\n    \"named\": false\n  },\n  {\n    \"type\": \"->\",\n    \"named\": false\n  },\n  {\n    \"type\": \".\",\n    \"named\": false\n  },\n  {\n    \"type\": \"..\",\n    \"named\": false\n  },\n  {\n    \"type\": \"/\",\n    \"named\": false\n  },\n  {\n    \"type\": \"/=\",\n    \"named\": false\n  },\n  {\n    \"type\": \":\",\n    \"named\": false\n  },\n  {\n    \"type\": \"::\",\n    \"named\": false\n  },\n  {\n    \"type\": \":=\",\n    \"named\": false\n  },\n  {\n    \"type\": \";\",\n    \"named\": false\n  },\n  {\n    \"type\": \"<\",\n    \"named\": false\n  },\n  {\n    \"type\": \"<-\",\n    \"named\": false\n  },\n  {\n    \"type\": \"<:-\",\n    \"named\": false\n  },\n  {\n    \"type\": \"<:=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"<<\",\n    \"named\": false\n  },\n  {\n    \"type\": \"<=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"=/=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"=:=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"=<\",\n    \"named\": false\n  },\n  {\n    \"type\": \"==\",\n    \"named\": false\n  },\n  {\n    \"type\": \"==>>\",\n    \"named\": false\n  },\n  {\n    \"type\": \"=>\",\n    \"named\": false\n  },\n  {\n    \"type\": \">\",\n    \"named\": false\n  },\n  {\n    \"type\": \">=\",\n    \"named\": false\n  },\n  {\n    \"type\": \">>\",\n    \"named\": false\n  },\n  {\n    \"type\": \"?\",\n    \"named\": false\n  },\n  {\n    \"type\": \"?=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"[\",\n    \"named\": false\n  },\n  {\n    \"type\": \"]\",\n    \"named\": false\n  },\n  {\n    \"type\": \"after\",\n    \"named\": false\n  },\n  {\n    \"type\": \"and\",\n    \"named\": false\n  },\n  {\n    \"type\": \"andalso\",\n    \"named\": false\n  },\n  {\n    \"type\": \"atom\",\n    \"named\": true\n  },\n  {\n    \"type\": \"band\",\n    \"named\": false\n  },\n  {\n    \"type\": \"begin\",\n    \"named\": false\n  },\n  {\n    \"type\": \"behavior\",\n    \"named\": false\n  },\n  {\n    \"type\": \"behaviour\",\n    \"named\": false\n  },\n  {\n    \"type\": \"bnot\",\n    \"named\": false\n  },\n  {\n    \"type\": \"bor\",\n    \"named\": false\n  },\n  {\n    \"type\": \"bsl\",\n    \"named\": false\n  },\n  {\n    \"type\": \"bsr\",\n    \"named\": false\n  },\n  {\n    \"type\": \"bxor\",\n    \"named\": false\n  },\n  {\n    \"type\": \"callback\",\n    \"named\": false\n  },\n  {\n    \"type\": \"case\",\n    \"named\": false\n  },\n  {\n    \"type\": \"catch\",\n    \"named\": false\n  },\n  {\n    \"type\": \"char\",\n    \"named\": true\n  },\n  {\n    \"type\": \"comment\",\n    \"named\": true\n  },\n  {\n    \"type\": \"compile\",\n    \"named\": false\n  },\n  {\n    \"type\": \"define\",\n    \"named\": false\n  },\n  {\n    \"type\": \"deprecated\",\n    \"named\": false\n  },\n  {\n    \"type\": \"deprecated_wildcard\",\n    \"named\": true\n  },\n  {\n    \"type\": \"div\",\n    \"named\": false\n  },\n  {\n    \"type\": \"dotdotdot\",\n    \"named\": true\n  },\n  {\n    \"type\": \"elif\",\n    \"named\": false\n  },\n  {\n    \"type\": \"else\",\n    \"named\": false\n  },\n  {\n    \"type\": \"end\",\n    \"named\": false\n  },\n  {\n    \"type\": \"endif\",\n    \"named\": false\n  },\n  {\n    \"type\": \"export\",\n    \"named\": false\n  },\n  {\n    \"type\": \"export_type\",\n    \"named\": false\n  },\n  {\n    \"type\": \"feature\",\n    \"named\": false\n  },\n  {\n    \"type\": \"file\",\n    \"named\": false\n  },\n  {\n    \"type\": \"float\",\n    \"named\": true\n  },\n  {\n    \"type\": \"fun\",\n    \"named\": false\n  },\n  {\n    \"type\": \"if\",\n    \"named\": false\n  },\n  {\n    \"type\": \"ifdef\",\n    \"named\": false\n  },\n  {\n    \"type\": \"ifndef\",\n    \"named\": false\n  },\n  {\n    \"type\": \"import\",\n    \"named\": false\n  },\n  {\n    \"type\": \"include\",\n    \"named\": false\n  },\n  {\n    \"type\": \"include_lib\",\n    \"named\": false\n  },\n  {\n    \"type\": \"integer\",\n    \"named\": true\n  },\n  {\n    \"type\": \"maybe\",\n    \"named\": false\n  },\n  {\n    \"type\": \"module\",\n    \"named\": false\n  },\n  {\n    \"type\": \"not\",\n    \"named\": false\n  },\n  {\n    \"type\": \"of\",\n    \"named\": false\n  },\n  {\n    \"type\": \"opaque\",\n    \"named\": false\n  },\n  {\n    \"type\": \"optional_callbacks\",\n    \"named\": false\n  },\n  {\n    \"type\": \"or\",\n    \"named\": false\n  },\n  {\n    \"type\": \"orelse\",\n    \"named\": false\n  },\n  {\n    \"type\": \"receive\",\n    \"named\": false\n  },\n  {\n    \"type\": \"record\",\n    \"named\": false\n  },\n  {\n    \"type\": \"rem\",\n    \"named\": false\n  },\n  {\n    \"type\": \"shebang\",\n    \"named\": true\n  },\n  {\n    \"type\": \"spec\",\n    \"named\": false\n  },\n  {\n    \"type\": \"ssr\",\n    \"named\": false\n  },\n  {\n    \"type\": \"try\",\n    \"named\": false\n  },\n  {\n    \"type\": \"type\",\n    \"named\": false\n  },\n  {\n    \"type\": \"undef\",\n    \"named\": false\n  },\n  {\n    \"type\": \"unit\",\n    \"named\": false\n  },\n  {\n    \"type\": \"var\",\n    \"named\": true\n  },\n  {\n    \"type\": \"when\",\n    \"named\": false\n  },\n  {\n    \"type\": \"xor\",\n    \"named\": false\n  },\n  {\n    \"type\": \"{\",\n    \"named\": false\n  },\n  {\n    \"type\": \"|\",\n    \"named\": false\n  },\n  {\n    \"type\": \"||\",\n    \"named\": false\n  },\n  {\n    \"type\": \"}\",\n    \"named\": false\n  },\n  {\n    \"@generated\": true\n  }\n]";
Expand description

The content of the node-types.json file for this grammar.