pub const NODE_TYPES: &'static str = "[\n  {\n    \"type\": \"additive_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\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\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"array_literal\",\n    \"named\": true,\n    \"fields\": {\n      \"element\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"array_type\",\n    \"named\": true,\n    \"fields\": {\n      \"element\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"as_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"as_operator\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"as_operator\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"assignment\",\n    \"named\": true,\n    \"fields\": {\n      \"operator\": {\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            \"type\": \"/=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"=\",\n            \"named\": false\n          }\n        ]\n      },\n      \"result\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"target\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"directly_assignable_expression\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"associatedtype_declaration\",\n    \"named\": true,\n    \"fields\": {\n      \"default_value\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"must_inherit\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_constraints\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"attribute\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"user_type\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"availability_condition\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"await_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"binding_pattern\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"binding_pattern\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"non_binding_pattern\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"user_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"wildcard_pattern\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"bitwise_operation\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\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            \"type\": \"|\",\n            \"named\": false\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"boolean_literal\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"call_expression\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_suffix\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"call_suffix\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"value_arguments\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"capture_list\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"capture_list_item\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"capture_list_item\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"ownership_modifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"catch_block\",\n    \"named\": true,\n    \"fields\": {\n      \"error\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"binding_pattern\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"catch_keyword\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        },\n        {\n          \"type\": \"where_clause\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"check_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"op\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"is\",\n            \"named\": false\n          }\n        ]\n      },\n      \"target\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"class_body\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"associatedtype_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"class_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"deinit_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"import_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiline_comment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"operator_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"precedence_group_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"property_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"protocol_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"subscript_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typealias_declaration\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"class_declaration\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"class_body\",\n            \"named\": true\n          },\n          {\n            \"type\": \"enum_class_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"declaration_kind\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"class\",\n            \"named\": false\n          },\n          {\n            \"type\": \"enum\",\n            \"named\": false\n          },\n          {\n            \"type\": \"extension\",\n            \"named\": false\n          },\n          {\n            \"type\": \"struct\",\n            \"named\": false\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"type_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inheritance_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inheritance_specifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ownership_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"property_behavior_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_constraints\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_parameters\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"comparison_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\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\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"computed_getter\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"getter_specifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"computed_modify\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"modify_specifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"computed_property\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"computed_getter\",\n          \"named\": true\n        },\n        {\n          \"type\": \"computed_modify\",\n          \"named\": true\n        },\n        {\n          \"type\": \"computed_setter\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"computed_setter\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"setter_specifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"conjunction_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"op\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"&&\",\n            \"named\": false\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"constructor_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"constructed_type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"constructor_suffix\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"constructor_suffix\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"value_arguments\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"control_transfer_statement\",\n    \"named\": true,\n    \"fields\": {\n      \"result\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"throw_keyword\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"custom_operator\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"deinit_declaration\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"function_body\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"dictionary_literal\",\n    \"named\": true,\n    \"fields\": {\n      \"key\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"dictionary_type\",\n    \"named\": true,\n    \"fields\": {\n      \"key\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"directly_assignable_expression\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"disjunction_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"op\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"||\",\n            \"named\": false\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"do_statement\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"catch_block\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"enum_class_body\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"associatedtype_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"class_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"deinit_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"enum_entry\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"import_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"operator_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"precedence_group_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"property_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"protocol_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"subscript_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typealias_declaration\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"enum_entry\",\n    \"named\": true,\n    \"fields\": {\n      \"data_contents\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"enum_type_parameters\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"raw_value\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"enum_type_parameters\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"wildcard_pattern\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"equality_constraint\",\n    \"named\": true,\n    \"fields\": {\n      \"constrained_type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"must_equal\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"equality_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\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\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"for_statement\",\n    \"named\": true,\n    \"fields\": {\n      \"collection\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"item\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as\",\n            \"named\": false\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"binding_pattern\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": false\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"is\",\n            \"named\": false\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"let\",\n            \"named\": false\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"non_binding_pattern\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"var\",\n            \"named\": false\n          },\n          {\n            \"type\": \"wildcard_pattern\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_annotation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"where_clause\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"fully_open_range\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"function_body\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"function_declaration\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"function_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"default_value\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\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            \"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\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"init\",\n            \"named\": false\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"|\",\n            \"named\": false\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"return_type\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!\",\n            \"named\": false\n          },\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"async\",\n          \"named\": true\n        },\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inheritance_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ownership_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"parameter\",\n          \"named\": true\n        },\n        {\n          \"type\": \"property_behavior_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"throws\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_constraints\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_parameters\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"function_modifier\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"function_type\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"params\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"return_type\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"async\",\n          \"named\": true\n        },\n        {\n          \"type\": \"throws\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"getter_specifier\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"mutation_modifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"guard_statement\",\n    \"named\": true,\n    \"fields\": {\n      \"condition\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"availability_condition\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"binding_pattern\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": false\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_annotation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"value_binding_pattern\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"else\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"identifier\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"if_statement\",\n    \"named\": true,\n    \"fields\": {\n      \"condition\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"availability_condition\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"binding_pattern\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": false\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_annotation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"value_binding_pattern\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"else\",\n          \"named\": true\n        },\n        {\n          \"type\": \"if_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"import_declaration\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"infix_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"op\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"inheritance_constraint\",\n    \"named\": true,\n    \"fields\": {\n      \"constrained_type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"inherits_from\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!\",\n            \"named\": false\n          },\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"inheritance_modifier\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"inheritance_specifier\",\n    \"named\": true,\n    \"fields\": {\n      \"inherits_from\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"interpolated_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"reference_specifier\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"type_modifiers\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"key_path_expression\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"array_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_arguments\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"value_argument\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"key_path_string_expression\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"lambda_function_type\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"return_type\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!\",\n            \"named\": false\n          },\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"async\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_function_type_parameters\",\n          \"named\": true\n        },\n        {\n          \"type\": \"throws\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"lambda_function_type_parameters\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"lambda_parameter\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"lambda_literal\",\n    \"named\": true,\n    \"fields\": {\n      \"captures\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"capture_list\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"lambda_function_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"lambda_parameter\",\n    \"named\": true,\n    \"fields\": {\n      \"external_name\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!\",\n            \"named\": false\n          },\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"parameter_modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"line_str_text\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"line_string_literal\",\n    \"named\": true,\n    \"fields\": {\n      \"interpolation\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"interpolated_expression\",\n            \"named\": true\n          }\n        ]\n      },\n      \"text\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"line_str_text\",\n            \"named\": true\n          },\n          {\n            \"type\": \"str_escaped_char\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"member_modifier\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"metatype\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"array_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"metatype\",\n          \"named\": true\n        },\n        {\n          \"type\": \"opaque_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"optional_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"protocol_composition_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"user_type\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"modifiers\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inheritance_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"member_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"mutation_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ownership_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"parameter_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"property_behavior_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"property_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"visibility_modifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"modify_specifier\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"mutation_modifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"multi_line_str_text\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"multi_line_string_literal\",\n    \"named\": true,\n    \"fields\": {\n      \"interpolation\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"interpolated_expression\",\n            \"named\": true\n          }\n        ]\n      },\n      \"text\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"\\\"\",\n            \"named\": false\n          },\n          {\n            \"type\": \"multi_line_str_text\",\n            \"named\": true\n          },\n          {\n            \"type\": \"str_escaped_char\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"multiplicative_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\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      \"rhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"mutation_modifier\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"navigation_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"suffix\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"navigation_suffix\",\n            \"named\": true\n          }\n        ]\n      },\n      \"target\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"navigation_suffix\",\n    \"named\": true,\n    \"fields\": {\n      \"suffix\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"nil_coalescing_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"if_nil\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"non_binding_pattern\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"non_binding_pattern\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"user_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"wildcard_pattern\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"opaque_type\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"user_type\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"open_end_range_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"start\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"open_start_range_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"end\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"operator_declaration\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"optional_type\",\n    \"named\": true,\n    \"fields\": {\n      \"wrapped\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"ownership_modifier\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"parameter\",\n    \"named\": true,\n    \"fields\": {\n      \"external_name\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!\",\n            \"named\": false\n          },\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"parameter_modifiers\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"parameter_modifier\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"parameter_modifiers\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"parameter_modifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"postfix_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"operation\": {\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\": \"bang\",\n            \"named\": true\n          }\n        ]\n      },\n      \"target\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"precedence_group_attribute\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"precedence_group_attributes\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"precedence_group_attribute\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"precedence_group_declaration\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"precedence_group_attributes\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"prefix_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"operation\": {\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            \"type\": \"--\",\n            \"named\": false\n          },\n          {\n            \"type\": \".\",\n            \"named\": false\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"target\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"property_declaration\",\n    \"named\": true,\n    \"fields\": {\n      \"computed_value\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"computed_property\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"value_binding_pattern\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inheritance_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ownership_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"property_behavior_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_annotation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_constraints\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"property_modifier\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"protocol_body\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"protocol_function_declaration\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"associatedtype_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"deinit_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"protocol_function_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"protocol_property_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"subscript_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typealias_declaration\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"protocol_composition_type\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"array_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"metatype\",\n          \"named\": true\n        },\n        {\n          \"type\": \"opaque_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"optional_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"protocol_composition_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"user_type\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"protocol_declaration\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"protocol_body\",\n            \"named\": true\n          }\n        ]\n      },\n      \"declaration_kind\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"protocol\",\n            \"named\": false\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"type_identifier\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inheritance_specifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_constraints\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_parameters\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"protocol_function_declaration\",\n    \"named\": true,\n    \"fields\": {\n      \"default_value\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": false,\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            \"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\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"init\",\n            \"named\": false\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"|\",\n            \"named\": false\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"return_type\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!\",\n            \"named\": false\n          },\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"async\",\n          \"named\": true\n        },\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"parameter\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        },\n        {\n          \"type\": \"throws\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_constraints\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_parameters\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"protocol_property_declaration\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"value_binding_pattern\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"protocol_property_requirements\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_annotation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_constraints\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"protocol_property_requirements\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"getter_specifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"setter_specifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"range_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"end\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\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      \"start\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"raw_str_interpolation\",\n    \"named\": true,\n    \"fields\": {\n      \"interpolation\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"interpolated_expression\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"raw_str_interpolation_start\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"raw_string_literal\",\n    \"named\": true,\n    \"fields\": {\n      \"interpolation\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"raw_str_interpolation\",\n            \"named\": true\n          }\n        ]\n      },\n      \"text\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"raw_str_end_part\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_str_part\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"raw_str_continuing_indicator\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"repeat_while_statement\",\n    \"named\": true,\n    \"fields\": {\n      \"condition\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"availability_condition\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"binding_pattern\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": false\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_annotation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"value_binding_pattern\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"selector_expression\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"self_expression\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"setter_specifier\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"mutation_modifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"shebang_line\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"simple_identifier\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"source_file\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"associatedtype_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"class_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"do_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"for_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"guard_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"if_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"import_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"operator_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"precedence_group_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"property_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"protocol_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"repeat_while_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shebang_line\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statement_label\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"switch_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"throw_keyword\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typealias_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"while_statement\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"statements\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"class_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"control_transfer_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"do_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"for_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"guard_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"if_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"property_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"repeat_while_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statement_label\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"switch_statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typealias_declaration\",\n          \"named\": true\n        },\n        {\n          \"type\": \"while_statement\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"str_escaped_char\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"subscript_declaration\",\n    \"named\": true,\n    \"fields\": {\n      \"default_value\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"return_type\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!\",\n            \"named\": false\n          },\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"computed_getter\",\n          \"named\": true\n        },\n        {\n          \"type\": \"computed_modify\",\n          \"named\": true\n        },\n        {\n          \"type\": \"computed_setter\",\n          \"named\": true\n        },\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"parameter\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_constraints\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_parameters\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"super_expression\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"switch_entry\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"default_keyword\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statements\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"switch_pattern\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"where_keyword\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"switch_pattern\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"binding_pattern\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"non_binding_pattern\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"user_type\",\n          \"named\": true\n        },\n        {\n          \"type\": \"wildcard_pattern\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"switch_statement\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"switch_entry\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"ternary_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"condition\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"if_false\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      },\n      \"if_true\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"throws\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"try_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"expr\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"tuple_expression\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"tuple_type\",\n    \"named\": true,\n    \"fields\": {\n      \"element\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"tuple_type_item\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"tuple_type_item\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"parameter_modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"wildcard_pattern\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"type_annotation\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!\",\n            \"named\": false\n          },\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"type_arguments\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"type_modifiers\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"type_constraint\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"equality_constraint\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inheritance_constraint\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"type_constraints\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"type_constraint\",\n          \"named\": true\n        },\n        {\n          \"type\": \"where_keyword\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"type_identifier\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"type_modifiers\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"type_parameter\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"type_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_parameter_modifiers\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"type_parameter_modifiers\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"type_parameters\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"type_parameter\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"typealias_declaration\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"array_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"metatype\",\n            \"named\": true\n          },\n          {\n            \"type\": \"opaque_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"optional_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"protocol_composition_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_modifiers\",\n            \"named\": true\n          },\n          {\n            \"type\": \"user_type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"attribute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inheritance_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"modifiers\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ownership_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"property_behavior_modifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_parameters\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"user_type\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"type_arguments\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type_identifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"value_argument\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"reference_specifier\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"type_modifiers\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"value_arguments\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"value_argument\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"value_binding_pattern\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"non_binding_pattern\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"visibility_modifier\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"where_clause\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"additive_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"array_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"as_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"await_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bang\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bin_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"bitwise_operation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"boolean_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"call_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"check_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"comparison_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"constructor_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"custom_operator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"dictionary_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"disjunction_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"equality_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"fully_open_range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"hex_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"infix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"integer_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"key_path_string_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multi_line_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"multiplicative_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"navigation_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"nil_coalescing_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"oct_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_end_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"open_start_range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"postfix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"prefix_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raw_string_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"real_literal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"selector_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"self_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"simple_identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"super_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ternary_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"tuple_expression\",\n          \"named\": true\n        },\n        {\n          \"type\": \"where_keyword\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"while_statement\",\n    \"named\": true,\n    \"fields\": {\n      \"condition\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"!==\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#colorLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#column\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#dsohandle\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileID\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#fileLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#filePath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#function\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#imageLiteral\",\n            \"named\": false\n          },\n          {\n            \"type\": \"#line\",\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\": \"additive_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"array_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"as_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"availability_condition\",\n            \"named\": true\n          },\n          {\n            \"type\": \"await_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bang\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bin_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"binding_pattern\",\n            \"named\": true\n          },\n          {\n            \"type\": \"bitwise_operation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"boolean_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"call_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": false\n          },\n          {\n            \"type\": \"check_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"comparison_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"constructor_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"custom_operator\",\n            \"named\": true\n          },\n          {\n            \"type\": \"dictionary_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"disjunction_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"equality_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"fully_open_range\",\n            \"named\": true\n          },\n          {\n            \"type\": \"hex_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"infix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"integer_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"key_path_string_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multi_line_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"multiplicative_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"navigation_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"nil\",\n            \"named\": false\n          },\n          {\n            \"type\": \"nil_coalescing_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"oct_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_end_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"open_start_range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"postfix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"prefix_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"range_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raw_string_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"real_literal\",\n            \"named\": true\n          },\n          {\n            \"type\": \"selector_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"self_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"simple_identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"super_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ternary_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"tuple_expression\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type_annotation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"value_binding_pattern\",\n            \"named\": true\n          },\n          {\n            \"type\": \"~\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"statements\",\n          \"named\": true\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\": \"#available\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#colorLiteral\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#column\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#dsohandle\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#file\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#fileID\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#fileLiteral\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#filePath\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#function\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#imageLiteral\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#keyPath\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#line\",\n    \"named\": false\n  },\n  {\n    \"type\": \"#selector\",\n    \"named\": false\n  },\n  {\n    \"type\": \"%\",\n    \"named\": false\n  },\n  {\n    \"type\": \"%=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"&\",\n    \"named\": false\n  },\n  {\n    \"type\": \"&&\",\n    \"named\": false\n  },\n  {\n    \"type\": \"(\",\n    \"named\": false\n  },\n  {\n    \"type\": \")\",\n    \"named\": false\n  },\n  {\n    \"type\": \"*\",\n    \"named\": false\n  },\n  {\n    \"type\": \"*=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"+\",\n    \"named\": false\n  },\n  {\n    \"type\": \"++\",\n    \"named\": false\n  },\n  {\n    \"type\": \"+=\",\n    \"named\": false\n  },\n  {\n    \"type\": \",\",\n    \"named\": false\n  },\n  {\n    \"type\": \"-\",\n    \"named\": false\n  },\n  {\n    \"type\": \"--\",\n    \"named\": false\n  },\n  {\n    \"type\": \"-=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"->\",\n    \"named\": false\n  },\n  {\n    \"type\": \".\",\n    \"named\": false\n  },\n  {\n    \"type\": \"...\",\n    \"named\": false\n  },\n  {\n    \"type\": \"..<\",\n    \"named\": false\n  },\n  {\n    \"type\": \"/\",\n    \"named\": false\n  },\n  {\n    \"type\": \"/=\",\n    \"named\": false\n  },\n  {\n    \"type\": \":\",\n    \"named\": false\n  },\n  {\n    \"type\": \";\",\n    \"named\": false\n  },\n  {\n    \"type\": \"<\",\n    \"named\": false\n  },\n  {\n    \"type\": \"<<\",\n    \"named\": false\n  },\n  {\n    \"type\": \"<=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"==\",\n    \"named\": false\n  },\n  {\n    \"type\": \"===\",\n    \"named\": false\n  },\n  {\n    \"type\": \">\",\n    \"named\": false\n  },\n  {\n    \"type\": \">=\",\n    \"named\": false\n  },\n  {\n    \"type\": \">>\",\n    \"named\": false\n  },\n  {\n    \"type\": \"?\",\n    \"named\": false\n  },\n  {\n    \"type\": \"??\",\n    \"named\": false\n  },\n  {\n    \"type\": \"@\",\n    \"named\": false\n  },\n  {\n    \"type\": \"@autoclosure\",\n    \"named\": false\n  },\n  {\n    \"type\": \"@escaping\",\n    \"named\": false\n  },\n  {\n    \"type\": \"Protocol\",\n    \"named\": false\n  },\n  {\n    \"type\": \"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\": \"_modify\",\n    \"named\": false\n  },\n  {\n    \"type\": \"as\",\n    \"named\": false\n  },\n  {\n    \"type\": \"as!\",\n    \"named\": false\n  },\n  {\n    \"type\": \"as?\",\n    \"named\": false\n  },\n  {\n    \"type\": \"associatedtype\",\n    \"named\": false\n  },\n  {\n    \"type\": \"async\",\n    \"named\": true\n  },\n  {\n    \"type\": \"bang\",\n    \"named\": true\n  },\n  {\n    \"type\": \"bin_literal\",\n    \"named\": true\n  },\n  {\n    \"type\": \"break\",\n    \"named\": false\n  },\n  {\n    \"type\": \"case\",\n    \"named\": false\n  },\n  {\n    \"type\": \"catch_keyword\",\n    \"named\": true\n  },\n  {\n    \"type\": \"class\",\n    \"named\": false\n  },\n  {\n    \"type\": \"comment\",\n    \"named\": true\n  },\n  {\n    \"type\": \"continue\",\n    \"named\": false\n  },\n  {\n    \"type\": \"convenience\",\n    \"named\": false\n  },\n  {\n    \"type\": \"default_keyword\",\n    \"named\": true\n  },\n  {\n    \"type\": \"deinit\",\n    \"named\": false\n  },\n  {\n    \"type\": \"delegate\",\n    \"named\": false\n  },\n  {\n    \"type\": \"diagnostic\",\n    \"named\": true\n  },\n  {\n    \"type\": \"directive\",\n    \"named\": true\n  },\n  {\n    \"type\": \"do\",\n    \"named\": false\n  },\n  {\n    \"type\": \"dynamic\",\n    \"named\": false\n  },\n  {\n    \"type\": \"else\",\n    \"named\": true\n  },\n  {\n    \"type\": \"enum\",\n    \"named\": false\n  },\n  {\n    \"type\": \"extension\",\n    \"named\": false\n  },\n  {\n    \"type\": \"fallthrough\",\n    \"named\": false\n  },\n  {\n    \"type\": \"false\",\n    \"named\": false\n  },\n  {\n    \"type\": \"fileprivate\",\n    \"named\": false\n  },\n  {\n    \"type\": \"final\",\n    \"named\": false\n  },\n  {\n    \"type\": \"for\",\n    \"named\": false\n  },\n  {\n    \"type\": \"func\",\n    \"named\": false\n  },\n  {\n    \"type\": \"get\",\n    \"named\": false\n  },\n  {\n    \"type\": \"getter:\",\n    \"named\": false\n  },\n  {\n    \"type\": \"guard\",\n    \"named\": false\n  },\n  {\n    \"type\": \"hex_literal\",\n    \"named\": true\n  },\n  {\n    \"type\": \"if\",\n    \"named\": false\n  },\n  {\n    \"type\": \"import\",\n    \"named\": false\n  },\n  {\n    \"type\": \"in\",\n    \"named\": false\n  },\n  {\n    \"type\": \"indirect\",\n    \"named\": false\n  },\n  {\n    \"type\": \"infix\",\n    \"named\": false\n  },\n  {\n    \"type\": \"init\",\n    \"named\": false\n  },\n  {\n    \"type\": \"inout\",\n    \"named\": false\n  },\n  {\n    \"type\": \"integer_literal\",\n    \"named\": true\n  },\n  {\n    \"type\": \"internal\",\n    \"named\": false\n  },\n  {\n    \"type\": \"is\",\n    \"named\": false\n  },\n  {\n    \"type\": \"let\",\n    \"named\": false\n  },\n  {\n    \"type\": \"multiline_comment\",\n    \"named\": true\n  },\n  {\n    \"type\": \"mutating\",\n    \"named\": false\n  },\n  {\n    \"type\": \"nil\",\n    \"named\": false\n  },\n  {\n    \"type\": \"nonmutating\",\n    \"named\": false\n  },\n  {\n    \"type\": \"oct_literal\",\n    \"named\": true\n  },\n  {\n    \"type\": \"open\",\n    \"named\": false\n  },\n  {\n    \"type\": \"operator\",\n    \"named\": false\n  },\n  {\n    \"type\": \"optional\",\n    \"named\": false\n  },\n  {\n    \"type\": \"override\",\n    \"named\": false\n  },\n  {\n    \"type\": \"param\",\n    \"named\": false\n  },\n  {\n    \"type\": \"postfix\",\n    \"named\": false\n  },\n  {\n    \"type\": \"precedencegroup\",\n    \"named\": false\n  },\n  {\n    \"type\": \"prefix\",\n    \"named\": false\n  },\n  {\n    \"type\": \"private\",\n    \"named\": false\n  },\n  {\n    \"type\": \"property\",\n    \"named\": false\n  },\n  {\n    \"type\": \"property_behavior_modifier\",\n    \"named\": true\n  },\n  {\n    \"type\": \"protocol\",\n    \"named\": false\n  },\n  {\n    \"type\": \"public\",\n    \"named\": false\n  },\n  {\n    \"type\": \"raw_str_continuing_indicator\",\n    \"named\": true\n  },\n  {\n    \"type\": \"raw_str_end_part\",\n    \"named\": true\n  },\n  {\n    \"type\": \"raw_str_interpolation_start\",\n    \"named\": true\n  },\n  {\n    \"type\": \"raw_str_part\",\n    \"named\": true\n  },\n  {\n    \"type\": \"real_literal\",\n    \"named\": true\n  },\n  {\n    \"type\": \"receiver\",\n    \"named\": false\n  },\n  {\n    \"type\": \"repeat\",\n    \"named\": false\n  },\n  {\n    \"type\": \"required\",\n    \"named\": false\n  },\n  {\n    \"type\": \"return\",\n    \"named\": false\n  },\n  {\n    \"type\": \"self\",\n    \"named\": false\n  },\n  {\n    \"type\": \"set\",\n    \"named\": false\n  },\n  {\n    \"type\": \"setparam\",\n    \"named\": false\n  },\n  {\n    \"type\": \"setter:\",\n    \"named\": false\n  },\n  {\n    \"type\": \"some\",\n    \"named\": false\n  },\n  {\n    \"type\": \"statement_label\",\n    \"named\": true\n  },\n  {\n    \"type\": \"static\",\n    \"named\": false\n  },\n  {\n    \"type\": \"struct\",\n    \"named\": false\n  },\n  {\n    \"type\": \"subscript\",\n    \"named\": false\n  },\n  {\n    \"type\": \"super\",\n    \"named\": false\n  },\n  {\n    \"type\": \"switch\",\n    \"named\": false\n  },\n  {\n    \"type\": \"throw_keyword\",\n    \"named\": true\n  },\n  {\n    \"type\": \"true\",\n    \"named\": false\n  },\n  {\n    \"type\": \"try\",\n    \"named\": false\n  },\n  {\n    \"type\": \"try!\",\n    \"named\": false\n  },\n  {\n    \"type\": \"try?\",\n    \"named\": false\n  },\n  {\n    \"type\": \"typealias\",\n    \"named\": false\n  },\n  {\n    \"type\": \"u\",\n    \"named\": false\n  },\n  {\n    \"type\": \"unowned\",\n    \"named\": false\n  },\n  {\n    \"type\": \"unowned(safe)\",\n    \"named\": false\n  },\n  {\n    \"type\": \"unowned(unsafe)\",\n    \"named\": false\n  },\n  {\n    \"type\": \"var\",\n    \"named\": false\n  },\n  {\n    \"type\": \"weak\",\n    \"named\": false\n  },\n  {\n    \"type\": \"where_keyword\",\n    \"named\": true\n  },\n  {\n    \"type\": \"while\",\n    \"named\": false\n  },\n  {\n    \"type\": \"wildcard_pattern\",\n    \"named\": true\n  },\n  {\n    \"type\": \"yield\",\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]";
Expand description

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