pub const NODE_TYPES: &'static str = "[\n  {\n    \"type\": \"add_sub_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      },\n      \"op\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"+\",\n            \"named\": false\n          },\n          {\n            \"type\": \"-\",\n            \"named\": false\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"and_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"assign_op\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"assign_stmt\",\n    \"named\": true,\n    \"fields\": {\n      \"op\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"assign_op\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"add_sub_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"and_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"decimal_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"grouped_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ident\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"member_access_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"mult_div_mod_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"named_args_fn_call_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"none_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"or_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"pos_args_fn_call_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"query_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"struct_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"table_lookup_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_struct_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unary_neg_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unary_not_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unit_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"vec_val\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"builtin_type\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"comparison_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      },\n      \"op\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\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      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"contract_defn\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"fn_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"bases\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"extends\",\n            \"named\": false\n          },\n          {\n            \"type\": \"ident_list\",\n            \"named\": true\n          }\n        ]\n      },\n      \"body\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"enum_variant_struct\",\n            \"named\": true\n          },\n          {\n            \"type\": \"enum_variant_tuple\",\n            \"named\": true\n          },\n          {\n            \"type\": \"enum_variant_unit\",\n            \"named\": true\n          },\n          {\n            \"type\": \"error\",\n            \"named\": false\n          },\n          {\n            \"type\": \"error_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"event\",\n            \"named\": false\n          },\n          {\n            \"type\": \"event_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exec\",\n            \"named\": false\n          },\n          {\n            \"type\": \"exec_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fn_args\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fn_body\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fn_return_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"instantiate_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"migrate_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query\",\n            \"named\": false\n          },\n          {\n            \"type\": \"query_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"state\",\n            \"named\": false\n          },\n          {\n            \"type\": \"state_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"state_item\",\n            \"named\": true\n          },\n          {\n            \"type\": \"state_map\",\n            \"named\": true\n          },\n          {\n            \"type\": \"{\",\n            \"named\": false\n          },\n          {\n            \"type\": \"}\",\n            \"named\": false\n          }\n        ]\n      },\n      \"interfaces\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"ident_list\",\n            \"named\": true\n          },\n          {\n            \"type\": \"implements\",\n            \"named\": false\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      },\n      \"return_type\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"fn_return_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"cwscript_src\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"contract_defn\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"else_clause\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"fn_body\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"else_if_clause\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"if_clause\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"emit_stmt\",\n    \"named\": true,\n    \"fields\": {\n      \"arg\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"enum_body\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"enum_variant_struct\",\n          \"named\": true\n        },\n        {\n          \"type\": \"enum_variant_tuple\",\n          \"named\": true\n        },\n        {\n          \"type\": \"enum_variant_unit\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"enum_defn\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"enum_body\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"enum_variant_struct\",\n    \"named\": true,\n    \"fields\": {\n      \"members\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"struct_member\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"struct_member\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"enum_variant_tuple\",\n    \"named\": true,\n    \"fields\": {\n      \"members\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"builtin_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"enum_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infer_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_option_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_vec_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_alias_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_path\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"enum_variant_unit\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"equality_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      },\n      \"op\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"==\",\n            \"named\": false\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"error_defn\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"enum_variant_struct\",\n          \"named\": true\n        },\n        {\n          \"type\": \"enum_variant_tuple\",\n          \"named\": true\n        },\n        {\n          \"type\": \"enum_variant_unit\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"event_defn\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"enum_variant_struct\",\n          \"named\": true\n        },\n        {\n          \"type\": \"enum_variant_tuple\",\n          \"named\": true\n        },\n        {\n          \"type\": \"enum_variant_unit\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"exec_defn\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"fn_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"fn_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      },\n      \"return_type\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"fn_return_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"exec_stmt\",\n    \"named\": true,\n    \"fields\": {\n      \"arg\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"fail_stmt\",\n    \"named\": true,\n    \"fields\": {\n      \"arg\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"fn_arg\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"builtin_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"enum_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infer_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_option_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_vec_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_alias_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_path\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"fn_args\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"fn_arg\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"fn_body\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"assign_stmt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"emit_stmt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exec_stmt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fail_stmt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"for_stmt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"if_stmt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"let_stmt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"return_stmt\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"fn_return_type\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"builtin_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"enum_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infer_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"short_option_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"short_vec_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"struct_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_alias_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_path\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"for_stmt\",\n    \"named\": true,\n    \"fields\": {\n      \"bindings\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident_binding\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_unpack_binding\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"add_sub_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"and_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"decimal_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fn_body\",\n          \"named\": true\n        },\n        {\n          \"type\": \"grouped_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ident\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"member_access_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"mult_div_mod_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"named_args_fn_call_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"none_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"or_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"pos_args_fn_call_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"query_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"struct_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"table_lookup_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_struct_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unary_neg_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unary_not_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unit_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"vec_val\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"grouped_expr\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"add_sub_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"and_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"decimal_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"grouped_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ident\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"member_access_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"mult_div_mod_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"named_args_fn_call_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"none_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"or_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"pos_args_fn_call_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"query_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"struct_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"table_lookup_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_struct_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unary_neg_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unary_not_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unit_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"vec_val\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"ident_binding\",\n    \"named\": true,\n    \"fields\": {\n      \"type\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"builtin_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"enum_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infer_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_option_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_vec_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_alias_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_path\",\n            \"named\": true\n          }\n        ]\n      },\n      \"var_name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"ident_list\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"ident\",\n          \"named\": true\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\": \"fn_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"predicate\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"if_stmt\",\n    \"named\": true,\n    \"fields\": {\n      \"else_clause\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"else_clause\",\n            \"named\": true\n          }\n        ]\n      },\n      \"else_if_clauses\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"else_if_clause\",\n            \"named\": true\n          }\n        ]\n      },\n      \"if_clause\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"if_clause\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"instantiate_defn\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"fn_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"fn_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"return_type\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"fn_return_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"let_stmt\",\n    \"named\": true,\n    \"fields\": {\n      \"bindings\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident_binding\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_unpack_binding\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"add_sub_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"and_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"decimal_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fn_body\",\n          \"named\": true\n        },\n        {\n          \"type\": \"grouped_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ident\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"member_access_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"mult_div_mod_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"named_args_fn_call_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"none_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"or_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"pos_args_fn_call_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"query_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"struct_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"table_lookup_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_struct_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unary_neg_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unary_not_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unit_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"vec_val\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"map_key\",\n    \"named\": true,\n    \"fields\": {\n      \"key_name\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      },\n      \"key_type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"builtin_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"enum_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infer_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_option_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_vec_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_alias_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_path\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"member_access_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      },\n      \"member\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"migrate_defn\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"fn_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"fn_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"return_type\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"fn_return_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"mult_div_mod_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      },\n      \"op\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"%\",\n            \"named\": false\n          },\n          {\n            \"type\": \"*\",\n            \"named\": false\n          },\n          {\n            \"type\": \"/\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"named_args_fn_call_expr\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"add_sub_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"and_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"decimal_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"grouped_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ident\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"member_access_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"mult_div_mod_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"named_args_fn_call_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"named_call_arg\",\n          \"named\": true\n        },\n        {\n          \"type\": \"none_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"or_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"pos_args_fn_call_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"query_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"struct_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"table_lookup_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_struct_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unary_neg_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unary_not_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unit_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"vec_val\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"named_call_arg\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"or_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"pos_args_fn_call_expr\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"add_sub_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"and_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"decimal_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"grouped_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ident\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"member_access_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"mult_div_mod_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"named_args_fn_call_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"none_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"or_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"pos_args_fn_call_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"query_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"struct_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"table_lookup_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_struct_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unary_neg_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unary_not_expr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unit_val\",\n          \"named\": true\n        },\n        {\n          \"type\": \"vec_val\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"query_defn\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"fn_args\",\n            \"named\": true\n          }\n        ]\n      },\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"fn_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      },\n      \"return_type\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"fn_return_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"query_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"arg\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"return_stmt\",\n    \"named\": true,\n    \"fields\": {\n      \"arg\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"short_option_type\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"builtin_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"enum_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infer_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"short_option_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"short_vec_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"struct_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_alias_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_path\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"short_vec_type\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"builtin_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"enum_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infer_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"short_option_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"short_vec_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"struct_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_alias_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_path\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"state_defn\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"state_item\",\n          \"named\": true\n        },\n        {\n          \"type\": \"state_map\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"state_item\",\n    \"named\": true,\n    \"fields\": {\n      \"key\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"builtin_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"enum_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infer_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_option_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_vec_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_alias_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_path\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"state_map\",\n    \"named\": true,\n    \"fields\": {\n      \"key\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"builtin_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"enum_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infer_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_option_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_vec_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_alias_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_path\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"map_key\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"struct_body\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"struct_member\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"struct_defn\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"struct_body\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"struct_member\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"builtin_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"enum_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infer_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_option_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_vec_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_alias_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_path\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"struct_unpack_binding\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"ident_binding\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"struct_val\",\n    \"named\": true,\n    \"fields\": {\n      \"members_vals\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"struct_val_member\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"builtin_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"enum_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infer_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_option_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_vec_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_alias_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_path\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"struct_val_member\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"table_lookup_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"index\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      },\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"tuple_struct_val\",\n    \"named\": true,\n    \"fields\": {\n      \"member_vals\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"builtin_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"enum_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infer_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_option_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"short_vec_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_alias_defn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_path\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"tuple_type\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"builtin_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"enum_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infer_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"short_option_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"short_vec_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"struct_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_alias_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_path\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"type_alias_defn\",\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    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"builtin_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"enum_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infer_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"short_option_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"short_vec_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"struct_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_alias_defn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_path\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"type_path\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"ident\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_name\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"unary_neg_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"arg\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"unary_not_expr\",\n    \"named\": true,\n    \"fields\": {\n      \"arg\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"vec_val\",\n    \"named\": true,\n    \"fields\": {\n      \"vals\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"add_sub_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"and_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"decimal_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"false\",\n            \"named\": false\n          },\n          {\n            \"type\": \"grouped_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ident\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"member_access_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"mult_div_mod_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"named_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"none_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"or_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"pos_args_fn_call_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"query_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"table_lookup_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"true\",\n            \"named\": false\n          },\n          {\n            \"type\": \"tuple_struct_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_neg_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unary_not_expr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unit_val\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vec_val\",\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\": \"and\",\n    \"named\": false\n  },\n  {\n    \"type\": \"bool\",\n    \"named\": false\n  },\n  {\n    \"type\": \"byte\",\n    \"named\": false\n  },\n  {\n    \"type\": \"contract\",\n    \"named\": false\n  },\n  {\n    \"type\": \"decimal_val\",\n    \"named\": true\n  },\n  {\n    \"type\": \"else\",\n    \"named\": false\n  },\n  {\n    \"type\": \"emit\",\n    \"named\": false\n  },\n  {\n    \"type\": \"enum\",\n    \"named\": false\n  },\n  {\n    \"type\": \"error\",\n    \"named\": false\n  },\n  {\n    \"type\": \"event\",\n    \"named\": false\n  },\n  {\n    \"type\": \"exec\",\n    \"named\": false\n  },\n  {\n    \"type\": \"extends\",\n    \"named\": false\n  },\n  {\n    \"type\": \"fail\",\n    \"named\": false\n  },\n  {\n    \"type\": \"false\",\n    \"named\": false\n  },\n  {\n    \"type\": \"for\",\n    \"named\": false\n  },\n  {\n    \"type\": \"i128\",\n    \"named\": false\n  },\n  {\n    \"type\": \"i16\",\n    \"named\": false\n  },\n  {\n    \"type\": \"i32\",\n    \"named\": false\n  },\n  {\n    \"type\": \"i64\",\n    \"named\": false\n  },\n  {\n    \"type\": \"i8\",\n    \"named\": false\n  },\n  {\n    \"type\": \"ident\",\n    \"named\": true\n  },\n  {\n    \"type\": \"if\",\n    \"named\": false\n  },\n  {\n    \"type\": \"implements\",\n    \"named\": false\n  },\n  {\n    \"type\": \"in\",\n    \"named\": false\n  },\n  {\n    \"type\": \"infer_type\",\n    \"named\": true\n  },\n  {\n    \"type\": \"instantiate\",\n    \"named\": false\n  },\n  {\n    \"type\": \"integer_val\",\n    \"named\": true\n  },\n  {\n    \"type\": \"let\",\n    \"named\": false\n  },\n  {\n    \"type\": \"migrate\",\n    \"named\": false\n  },\n  {\n    \"type\": \"none_val\",\n    \"named\": true\n  },\n  {\n    \"type\": \"or\",\n    \"named\": false\n  },\n  {\n    \"type\": \"query\",\n    \"named\": false\n  },\n  {\n    \"type\": \"return\",\n    \"named\": false\n  },\n  {\n    \"type\": \"state\",\n    \"named\": false\n  },\n  {\n    \"type\": \"string_val\",\n    \"named\": true\n  },\n  {\n    \"type\": \"struct\",\n    \"named\": false\n  },\n  {\n    \"type\": \"true\",\n    \"named\": false\n  },\n  {\n    \"type\": \"type\",\n    \"named\": false\n  },\n  {\n    \"type\": \"type_name\",\n    \"named\": true\n  },\n  {\n    \"type\": \"u128\",\n    \"named\": false\n  },\n  {\n    \"type\": \"u16\",\n    \"named\": false\n  },\n  {\n    \"type\": \"u32\",\n    \"named\": false\n  },\n  {\n    \"type\": \"u64\",\n    \"named\": false\n  },\n  {\n    \"type\": \"u8\",\n    \"named\": false\n  },\n  {\n    \"type\": \"unit_val\",\n    \"named\": true\n  },\n  {\n    \"type\": \"{\",\n    \"named\": false\n  },\n  {\n    \"type\": \"}\",\n    \"named\": false\n  }\n]";
Expand description

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