[
  {
    "type": "?",
    "named": false,
    "fields": {}
  },
  {
    "type": "additive_expression",
    "named": true,
    "fields": {
      "lhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "op": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "+",
            "named": false
          },
          {
            "type": "-",
            "named": false
          }
        ]
      },
      "rhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "array_literal",
    "named": true,
    "fields": {
      "element": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "array_type",
    "named": true,
    "fields": {
      "element": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "as_expression",
    "named": true,
    "fields": {
      "expr": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "as_operator",
          "named": true
        }
      ]
    }
  },
  {
    "type": "as_operator",
    "named": true,
    "fields": {}
  },
  {
    "type": "assignment",
    "named": true,
    "fields": {
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          }
        ]
      },
      "result": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "target": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "directly_assignable_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "associatedtype_declaration",
    "named": true,
    "fields": {
      "default_value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "must_inherit": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "type_constraints",
          "named": true
        }
      ]
    }
  },
  {
    "type": "attribute",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "user_type",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        }
      ]
    }
  },
  {
    "type": "availability_condition",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "await_expression",
    "named": true,
    "fields": {
      "expr": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        }
      ]
    }
  },
  {
    "type": "bang",
    "named": true,
    "fields": {}
  },
  {
    "type": "bitwise_operation",
    "named": true,
    "fields": {
      "lhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "op": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "&",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "|",
            "named": false
          }
        ]
      },
      "rhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "boolean_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "call_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "call_suffix",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        }
      ]
    }
  },
  {
    "type": "call_suffix",
    "named": true,
    "fields": {
      "name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "value_arguments",
          "named": true
        }
      ]
    }
  },
  {
    "type": "capture_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "capture_list_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "capture_list_item",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "ownership_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "catch_block",
    "named": true,
    "fields": {
      "error": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "pattern",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "catch_keyword",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        },
        {
          "type": "where_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "check_expression",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "op": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "is",
            "named": false
          }
        ]
      },
      "target": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "type": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "class_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "associatedtype_declaration",
          "named": true
        },
        {
          "type": "class_declaration",
          "named": true
        },
        {
          "type": "deinit_declaration",
          "named": true
        },
        {
          "type": "function_declaration",
          "named": true
        },
        {
          "type": "import_declaration",
          "named": true
        },
        {
          "type": "init_declaration",
          "named": true
        },
        {
          "type": "multiline_comment",
          "named": true
        },
        {
          "type": "operator_declaration",
          "named": true
        },
        {
          "type": "precedence_group_declaration",
          "named": true
        },
        {
          "type": "property_declaration",
          "named": true
        },
        {
          "type": "protocol_declaration",
          "named": true
        },
        {
          "type": "subscript_declaration",
          "named": true
        },
        {
          "type": "typealias_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "class_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "class_body",
            "named": true
          },
          {
            "type": "enum_class_body",
            "named": true
          }
        ]
      },
      "declaration_kind": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "actor",
            "named": false
          },
          {
            "type": "class",
            "named": false
          },
          {
            "type": "enum",
            "named": false
          },
          {
            "type": "extension",
            "named": false
          },
          {
            "type": "struct",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "inheritance_modifier",
          "named": true
        },
        {
          "type": "inheritance_specifier",
          "named": true
        },
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "ownership_modifier",
          "named": true
        },
        {
          "type": "property_behavior_modifier",
          "named": true
        },
        {
          "type": "type_constraints",
          "named": true
        },
        {
          "type": "type_parameters",
          "named": true
        }
      ]
    }
  },
  {
    "type": "comparison_expression",
    "named": true,
    "fields": {
      "lhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "op": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          }
        ]
      },
      "rhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "computed_getter",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "getter_specifier",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "computed_modify",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "modify_specifier",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "computed_property",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "computed_getter",
          "named": true
        },
        {
          "type": "computed_modify",
          "named": true
        },
        {
          "type": "computed_setter",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "computed_setter",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "setter_specifier",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "conjunction_expression",
    "named": true,
    "fields": {
      "lhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "op": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "&&",
            "named": false
          }
        ]
      },
      "rhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "constructor_expression",
    "named": true,
    "fields": {
      "constructed_type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "constructor_suffix",
          "named": true
        }
      ]
    }
  },
  {
    "type": "constructor_suffix",
    "named": true,
    "fields": {
      "name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "value_arguments",
          "named": true
        }
      ]
    }
  },
  {
    "type": "control_transfer_statement",
    "named": true,
    "fields": {
      "result": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "throw_keyword",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        }
      ]
    }
  },
  {
    "type": "custom_operator",
    "named": true,
    "fields": {}
  },
  {
    "type": "deinit_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_body",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "modifiers",
          "named": true
        }
      ]
    }
  },
  {
    "type": "deprecated_operator_declaration_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "diagnostic",
    "named": true,
    "fields": {}
  },
  {
    "type": "dictionary_literal",
    "named": true,
    "fields": {
      "key": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "dictionary_type",
    "named": true,
    "fields": {
      "key": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "didset_clause",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "directive",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "directly_assignable_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        }
      ]
    }
  },
  {
    "type": "disjunction_expression",
    "named": true,
    "fields": {
      "lhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "op": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "||",
            "named": false
          }
        ]
      },
      "rhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "do_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "catch_block",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_class_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "associatedtype_declaration",
          "named": true
        },
        {
          "type": "class_declaration",
          "named": true
        },
        {
          "type": "deinit_declaration",
          "named": true
        },
        {
          "type": "enum_entry",
          "named": true
        },
        {
          "type": "function_declaration",
          "named": true
        },
        {
          "type": "import_declaration",
          "named": true
        },
        {
          "type": "init_declaration",
          "named": true
        },
        {
          "type": "operator_declaration",
          "named": true
        },
        {
          "type": "precedence_group_declaration",
          "named": true
        },
        {
          "type": "property_declaration",
          "named": true
        },
        {
          "type": "protocol_declaration",
          "named": true
        },
        {
          "type": "subscript_declaration",
          "named": true
        },
        {
          "type": "typealias_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_entry",
    "named": true,
    "fields": {
      "data_contents": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "enum_type_parameters",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      },
      "raw_value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "modifiers",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_type_parameters",
    "named": true,
    "fields": {
      "name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "type_modifiers",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        },
        {
          "type": "wildcard_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "equality_constraint",
    "named": true,
    "fields": {
      "constrained_type": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ".",
            "named": false
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "must_equal": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        }
      ]
    }
  },
  {
    "type": "equality_expression",
    "named": true,
    "fields": {
      "lhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "op": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          }
        ]
      },
      "rhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "existential_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "array_type",
          "named": true
        },
        {
          "type": "dictionary_type",
          "named": true
        },
        {
          "type": "existential_type",
          "named": true
        },
        {
          "type": "function_type",
          "named": true
        },
        {
          "type": "metatype",
          "named": true
        },
        {
          "type": "opaque_type",
          "named": true
        },
        {
          "type": "optional_type",
          "named": true
        },
        {
          "type": "protocol_composition_type",
          "named": true
        },
        {
          "type": "suppressed_constraint",
          "named": true
        },
        {
          "type": "tuple_type",
          "named": true
        },
        {
          "type": "type_pack_expansion",
          "named": true
        },
        {
          "type": "type_parameter_pack",
          "named": true
        },
        {
          "type": "user_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "external_macro_definition",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "value_arguments",
          "named": true
        }
      ]
    }
  },
  {
    "type": "for_statement",
    "named": true,
    "fields": {
      "collection": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "item": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "pattern",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "statements",
          "named": true
        },
        {
          "type": "try_operator",
          "named": true
        },
        {
          "type": "type_annotation",
          "named": true
        },
        {
          "type": "where_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "fully_open_range",
    "named": true,
    "fields": {}
  },
  {
    "type": "function_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_body",
            "named": true
          }
        ]
      },
      "default_value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "return_type": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!",
            "named": false
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "inheritance_modifier",
          "named": true
        },
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "ownership_modifier",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        },
        {
          "type": "property_behavior_modifier",
          "named": true
        },
        {
          "type": "throws",
          "named": true
        },
        {
          "type": "type_constraints",
          "named": true
        },
        {
          "type": "type_parameters",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_modifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "function_type",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "params": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "throws",
          "named": true
        }
      ]
    }
  },
  {
    "type": "getter_specifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "mutation_modifier",
          "named": true
        },
        {
          "type": "throws",
          "named": true
        }
      ]
    }
  },
  {
    "type": "guard_statement",
    "named": true,
    "fields": {
      "bound_identifier": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": ".",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": ":",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "as",
            "named": false
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "async",
            "named": false
          },
          {
            "type": "availability_condition",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "case",
            "named": false
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "is",
            "named": false
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "pattern",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_annotation",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          },
          {
            "type": "value_binding_pattern",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "where_clause",
            "named": true
          },
          {
            "type": "wildcard_pattern",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "else",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "identifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "simple_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "if_statement",
    "named": true,
    "fields": {
      "bound_identifier": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": ".",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": ":",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "as",
            "named": false
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "async",
            "named": false
          },
          {
            "type": "availability_condition",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "case",
            "named": false
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "is",
            "named": false
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "pattern",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_annotation",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          },
          {
            "type": "value_binding_pattern",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "where_clause",
            "named": true
          },
          {
            "type": "wildcard_pattern",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "else",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "import_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "modifiers",
          "named": true
        }
      ]
    }
  },
  {
    "type": "infix_expression",
    "named": true,
    "fields": {
      "lhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "op": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "custom_operator",
            "named": true
          }
        ]
      },
      "rhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "inheritance_constraint",
    "named": true,
    "fields": {
      "constrained_type": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ".",
            "named": false
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "inherits_from": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!",
            "named": false
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        }
      ]
    }
  },
  {
    "type": "inheritance_modifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "inheritance_specifier",
    "named": true,
    "fields": {
      "inherits_from": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "init_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "function_body",
            "named": true
          }
        ]
      },
      "default_value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "init",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        },
        {
          "type": "throws",
          "named": true
        },
        {
          "type": "type_constraints",
          "named": true
        },
        {
          "type": "type_parameters",
          "named": true
        }
      ]
    }
  },
  {
    "type": "interpolated_expression",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "value_argument_label",
            "named": true
          }
        ]
      },
      "reference_specifier": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "value_argument_label",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "type_modifiers",
          "named": true
        }
      ]
    }
  },
  {
    "type": "key_path_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "array_type",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "dictionary_type",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "type_arguments",
          "named": true
        },
        {
          "type": "type_identifier",
          "named": true
        },
        {
          "type": "value_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "key_path_string_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lambda_function_type",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!",
            "named": false
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "lambda_function_type_parameters",
          "named": true
        },
        {
          "type": "throws",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lambda_function_type_parameters",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "lambda_parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lambda_literal",
    "named": true,
    "fields": {
      "captures": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "capture_list",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "lambda_function_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lambda_parameter",
    "named": true,
    "fields": {
      "external_name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!",
            "named": false
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "parameter_modifiers",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "line_str_text",
    "named": true,
    "fields": {}
  },
  {
    "type": "line_string_literal",
    "named": true,
    "fields": {
      "interpolation": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "interpolated_expression",
            "named": true
          }
        ]
      },
      "text": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "line_str_text",
            "named": true
          },
          {
            "type": "str_escaped_char",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "macro_declaration",
    "named": true,
    "fields": {
      "default_value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "definition": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "macro_definition",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "array_type",
          "named": true
        },
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "dictionary_type",
          "named": true
        },
        {
          "type": "existential_type",
          "named": true
        },
        {
          "type": "function_type",
          "named": true
        },
        {
          "type": "metatype",
          "named": true
        },
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "opaque_type",
          "named": true
        },
        {
          "type": "optional_type",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        },
        {
          "type": "protocol_composition_type",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "suppressed_constraint",
          "named": true
        },
        {
          "type": "tuple_type",
          "named": true
        },
        {
          "type": "type_constraints",
          "named": true
        },
        {
          "type": "type_pack_expansion",
          "named": true
        },
        {
          "type": "type_parameter_pack",
          "named": true
        },
        {
          "type": "type_parameters",
          "named": true
        },
        {
          "type": "user_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_definition",
    "named": true,
    "fields": {
      "body": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "external_macro_definition",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "macro_invocation",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "call_suffix",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "type_parameters",
          "named": true
        }
      ]
    }
  },
  {
    "type": "member_modifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "metatype",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "array_type",
          "named": true
        },
        {
          "type": "dictionary_type",
          "named": true
        },
        {
          "type": "existential_type",
          "named": true
        },
        {
          "type": "function_type",
          "named": true
        },
        {
          "type": "metatype",
          "named": true
        },
        {
          "type": "opaque_type",
          "named": true
        },
        {
          "type": "optional_type",
          "named": true
        },
        {
          "type": "protocol_composition_type",
          "named": true
        },
        {
          "type": "suppressed_constraint",
          "named": true
        },
        {
          "type": "tuple_type",
          "named": true
        },
        {
          "type": "type_pack_expansion",
          "named": true
        },
        {
          "type": "type_parameter_pack",
          "named": true
        },
        {
          "type": "user_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "modifiers",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "function_modifier",
          "named": true
        },
        {
          "type": "inheritance_modifier",
          "named": true
        },
        {
          "type": "member_modifier",
          "named": true
        },
        {
          "type": "mutation_modifier",
          "named": true
        },
        {
          "type": "ownership_modifier",
          "named": true
        },
        {
          "type": "parameter_modifier",
          "named": true
        },
        {
          "type": "property_behavior_modifier",
          "named": true
        },
        {
          "type": "property_modifier",
          "named": true
        },
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "modify_specifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "mutation_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "multi_line_str_text",
    "named": true,
    "fields": {}
  },
  {
    "type": "multi_line_string_literal",
    "named": true,
    "fields": {
      "interpolation": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "interpolated_expression",
            "named": true
          }
        ]
      },
      "text": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "\"",
            "named": false
          },
          {
            "type": "multi_line_str_text",
            "named": true
          },
          {
            "type": "str_escaped_char",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "multiplicative_expression",
    "named": true,
    "fields": {
      "lhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "op": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "%",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "/",
            "named": false
          }
        ]
      },
      "rhs": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "mutation_modifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "navigation_expression",
    "named": true,
    "fields": {
      "element": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          }
        ]
      },
      "suffix": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "navigation_suffix",
            "named": true
          }
        ]
      },
      "target": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "navigation_suffix",
    "named": true,
    "fields": {
      "suffix": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "nil_coalescing_expression",
    "named": true,
    "fields": {
      "if_nil": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "opaque_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "array_type",
          "named": true
        },
        {
          "type": "dictionary_type",
          "named": true
        },
        {
          "type": "existential_type",
          "named": true
        },
        {
          "type": "function_type",
          "named": true
        },
        {
          "type": "metatype",
          "named": true
        },
        {
          "type": "opaque_type",
          "named": true
        },
        {
          "type": "optional_type",
          "named": true
        },
        {
          "type": "protocol_composition_type",
          "named": true
        },
        {
          "type": "suppressed_constraint",
          "named": true
        },
        {
          "type": "tuple_type",
          "named": true
        },
        {
          "type": "type_pack_expansion",
          "named": true
        },
        {
          "type": "type_parameter_pack",
          "named": true
        },
        {
          "type": "user_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "open_end_range_expression",
    "named": true,
    "fields": {
      "start": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "open_start_range_expression",
    "named": true,
    "fields": {
      "end": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "operator_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "deprecated_operator_declaration_body",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "optional_type",
    "named": true,
    "fields": {
      "wrapped": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "ownership_modifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "parameter",
    "named": true,
    "fields": {
      "external_name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!",
            "named": false
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "parameter_modifiers",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parameter_modifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "parameter_modifiers",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "parameter_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pattern",
    "named": true,
    "fields": {
      "bound_identifier": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "pattern",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "type_modifiers",
          "named": true
        },
        {
          "type": "user_type",
          "named": true
        },
        {
          "type": "value_binding_pattern",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        },
        {
          "type": "wildcard_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "playground_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        }
      ]
    }
  },
  {
    "type": "postfix_expression",
    "named": true,
    "fields": {
      "operation": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "++",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "bang",
            "named": true
          }
        ]
      },
      "target": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "precedence_group_attribute",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "precedence_group_attributes",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "precedence_group_attribute",
          "named": true
        }
      ]
    }
  },
  {
    "type": "precedence_group_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "precedence_group_attributes",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "prefix_expression",
    "named": true,
    "fields": {
      "operation": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "&",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": ".",
            "named": false
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "target": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "property_behavior_modifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "property_declaration",
    "named": true,
    "fields": {
      "computed_value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "computed_property",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "pattern",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "inheritance_modifier",
          "named": true
        },
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "ownership_modifier",
          "named": true
        },
        {
          "type": "property_behavior_modifier",
          "named": true
        },
        {
          "type": "type_annotation",
          "named": true
        },
        {
          "type": "type_constraints",
          "named": true
        },
        {
          "type": "value_binding_pattern",
          "named": true
        },
        {
          "type": "willset_didset_block",
          "named": true
        }
      ]
    }
  },
  {
    "type": "property_modifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "protocol_body",
    "named": true,
    "fields": {
      "body": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "protocol_function_declaration",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "associatedtype_declaration",
          "named": true
        },
        {
          "type": "deinit_declaration",
          "named": true
        },
        {
          "type": "init_declaration",
          "named": true
        },
        {
          "type": "protocol_function_declaration",
          "named": true
        },
        {
          "type": "protocol_property_declaration",
          "named": true
        },
        {
          "type": "subscript_declaration",
          "named": true
        },
        {
          "type": "typealias_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "protocol_composition_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "array_type",
          "named": true
        },
        {
          "type": "dictionary_type",
          "named": true
        },
        {
          "type": "existential_type",
          "named": true
        },
        {
          "type": "function_type",
          "named": true
        },
        {
          "type": "metatype",
          "named": true
        },
        {
          "type": "opaque_type",
          "named": true
        },
        {
          "type": "optional_type",
          "named": true
        },
        {
          "type": "protocol_composition_type",
          "named": true
        },
        {
          "type": "suppressed_constraint",
          "named": true
        },
        {
          "type": "tuple_type",
          "named": true
        },
        {
          "type": "type_pack_expansion",
          "named": true
        },
        {
          "type": "type_parameter_pack",
          "named": true
        },
        {
          "type": "user_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "protocol_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "protocol_body",
            "named": true
          }
        ]
      },
      "declaration_kind": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "protocol",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "inheritance_specifier",
          "named": true
        },
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "type_constraints",
          "named": true
        },
        {
          "type": "type_parameters",
          "named": true
        }
      ]
    }
  },
  {
    "type": "protocol_function_declaration",
    "named": true,
    "fields": {
      "default_value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "return_type": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!",
            "named": false
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        },
        {
          "type": "throws",
          "named": true
        },
        {
          "type": "type_constraints",
          "named": true
        },
        {
          "type": "type_parameters",
          "named": true
        }
      ]
    }
  },
  {
    "type": "protocol_property_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "pattern",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "protocol_property_requirements",
          "named": true
        },
        {
          "type": "type_annotation",
          "named": true
        },
        {
          "type": "type_constraints",
          "named": true
        }
      ]
    }
  },
  {
    "type": "protocol_property_requirements",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "getter_specifier",
          "named": true
        },
        {
          "type": "setter_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "range_expression",
    "named": true,
    "fields": {
      "end": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "op": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "...",
            "named": false
          },
          {
            "type": "..<",
            "named": false
          }
        ]
      },
      "start": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "raw_str_interpolation",
    "named": true,
    "fields": {
      "interpolation": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "interpolated_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "raw_str_interpolation_start",
          "named": true
        }
      ]
    }
  },
  {
    "type": "raw_string_literal",
    "named": true,
    "fields": {
      "interpolation": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "raw_str_interpolation",
            "named": true
          }
        ]
      },
      "text": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "raw_str_end_part",
            "named": true
          },
          {
            "type": "raw_str_part",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "raw_str_continuing_indicator",
          "named": true
        }
      ]
    }
  },
  {
    "type": "regex_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "repeat_while_statement",
    "named": true,
    "fields": {
      "bound_identifier": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": ".",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": ":",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "as",
            "named": false
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "async",
            "named": false
          },
          {
            "type": "availability_condition",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "case",
            "named": false
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "is",
            "named": false
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "pattern",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_annotation",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          },
          {
            "type": "value_binding_pattern",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "where_clause",
            "named": true
          },
          {
            "type": "wildcard_pattern",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "selector_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        }
      ]
    }
  },
  {
    "type": "self_expression",
    "named": true,
    "fields": {}
  },
  {
    "type": "setter_specifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "mutation_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "shebang_line",
    "named": true,
    "fields": {}
  },
  {
    "type": "simple_identifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "source_file",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "associatedtype_declaration",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "class_declaration",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "do_statement",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "for_statement",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "function_declaration",
          "named": true
        },
        {
          "type": "guard_statement",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "import_declaration",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "init_declaration",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_declaration",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "operator_declaration",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "precedence_group_declaration",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "property_declaration",
          "named": true
        },
        {
          "type": "protocol_declaration",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "repeat_while_statement",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "shebang_line",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "statement_label",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "throw_keyword",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "typealias_declaration",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        },
        {
          "type": "while_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "special_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "statements",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "class_declaration",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "control_transfer_statement",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "do_statement",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "for_statement",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "function_declaration",
          "named": true
        },
        {
          "type": "guard_statement",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "property_declaration",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "repeat_while_statement",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "statement_label",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "typealias_declaration",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        },
        {
          "type": "while_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "str_escaped_char",
    "named": true,
    "fields": {}
  },
  {
    "type": "subscript_declaration",
    "named": true,
    "fields": {
      "default_value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!",
            "named": false
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "computed_property",
          "named": true
        },
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        },
        {
          "type": "type_constraints",
          "named": true
        },
        {
          "type": "type_parameters",
          "named": true
        }
      ]
    }
  },
  {
    "type": "super_expression",
    "named": true,
    "fields": {}
  },
  {
    "type": "suppressed_constraint",
    "named": true,
    "fields": {
      "suppressed": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "switch_entry",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "default_keyword",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_pattern",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        },
        {
          "type": "where_keyword",
          "named": true
        }
      ]
    }
  },
  {
    "type": "switch_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "switch_statement",
    "named": true,
    "fields": {
      "expr": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "switch_entry",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ternary_expression",
    "named": true,
    "fields": {
      "condition": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "if_false": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "if_true": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "throws",
    "named": true,
    "fields": {}
  },
  {
    "type": "try_expression",
    "named": true,
    "fields": {
      "expr": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "try_operator",
          "named": true
        }
      ]
    }
  },
  {
    "type": "try_operator",
    "named": true,
    "fields": {}
  },
  {
    "type": "tuple_expression",
    "named": true,
    "fields": {
      "name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "tuple_type",
    "named": true,
    "fields": {
      "element": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "tuple_type_item",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "tuple_type_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "tuple_type_item",
    "named": true,
    "fields": {
      "element": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "parameter_modifiers",
          "named": true
        },
        {
          "type": "wildcard_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_annotation",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!",
            "named": false
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "type_arguments",
    "named": true,
    "fields": {
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "type_modifiers",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_constraint",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "equality_constraint",
          "named": true
        },
        {
          "type": "inheritance_constraint",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_constraints",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type_constraint",
          "named": true
        },
        {
          "type": "where_keyword",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_identifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "type_modifiers",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "attribute",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_pack_expansion",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "array_type",
          "named": true
        },
        {
          "type": "dictionary_type",
          "named": true
        },
        {
          "type": "existential_type",
          "named": true
        },
        {
          "type": "function_type",
          "named": true
        },
        {
          "type": "metatype",
          "named": true
        },
        {
          "type": "opaque_type",
          "named": true
        },
        {
          "type": "optional_type",
          "named": true
        },
        {
          "type": "protocol_composition_type",
          "named": true
        },
        {
          "type": "suppressed_constraint",
          "named": true
        },
        {
          "type": "tuple_type",
          "named": true
        },
        {
          "type": "type_pack_expansion",
          "named": true
        },
        {
          "type": "type_parameter_pack",
          "named": true
        },
        {
          "type": "user_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_parameter",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type_identifier",
          "named": true
        },
        {
          "type": "type_modifiers",
          "named": true
        },
        {
          "type": "type_parameter_modifiers",
          "named": true
        },
        {
          "type": "type_parameter_pack",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_parameter_modifiers",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "attribute",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_parameter_pack",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "array_type",
          "named": true
        },
        {
          "type": "dictionary_type",
          "named": true
        },
        {
          "type": "existential_type",
          "named": true
        },
        {
          "type": "function_type",
          "named": true
        },
        {
          "type": "metatype",
          "named": true
        },
        {
          "type": "opaque_type",
          "named": true
        },
        {
          "type": "optional_type",
          "named": true
        },
        {
          "type": "protocol_composition_type",
          "named": true
        },
        {
          "type": "suppressed_constraint",
          "named": true
        },
        {
          "type": "tuple_type",
          "named": true
        },
        {
          "type": "type_pack_expansion",
          "named": true
        },
        {
          "type": "type_parameter_pack",
          "named": true
        },
        {
          "type": "user_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_parameters",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type_constraints",
          "named": true
        },
        {
          "type": "type_parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "typealias_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "inheritance_modifier",
          "named": true
        },
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "ownership_modifier",
          "named": true
        },
        {
          "type": "property_behavior_modifier",
          "named": true
        },
        {
          "type": "type_parameters",
          "named": true
        }
      ]
    }
  },
  {
    "type": "user_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type_arguments",
          "named": true
        },
        {
          "type": "type_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "value_argument",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "value_argument_label",
            "named": true
          }
        ]
      },
      "reference_specifier": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "value_argument_label",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "type_modifiers",
          "named": true
        }
      ]
    }
  },
  {
    "type": "value_argument_label",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "simple_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "value_arguments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "value_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "value_binding_pattern",
    "named": true,
    "fields": {
      "mutability": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "let",
            "named": false
          },
          {
            "type": "var",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "value_pack_expansion",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        }
      ]
    }
  },
  {
    "type": "value_parameter_pack",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        }
      ]
    }
  },
  {
    "type": "visibility_modifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "where_clause",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "additive_expression",
          "named": true
        },
        {
          "type": "array_literal",
          "named": true
        },
        {
          "type": "as_expression",
          "named": true
        },
        {
          "type": "assignment",
          "named": true
        },
        {
          "type": "await_expression",
          "named": true
        },
        {
          "type": "bang",
          "named": true
        },
        {
          "type": "bin_literal",
          "named": true
        },
        {
          "type": "bitwise_operation",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "check_expression",
          "named": true
        },
        {
          "type": "comparison_expression",
          "named": true
        },
        {
          "type": "conjunction_expression",
          "named": true
        },
        {
          "type": "constructor_expression",
          "named": true
        },
        {
          "type": "custom_operator",
          "named": true
        },
        {
          "type": "diagnostic",
          "named": true
        },
        {
          "type": "dictionary_literal",
          "named": true
        },
        {
          "type": "directive",
          "named": true
        },
        {
          "type": "disjunction_expression",
          "named": true
        },
        {
          "type": "equality_expression",
          "named": true
        },
        {
          "type": "fully_open_range",
          "named": true
        },
        {
          "type": "hex_literal",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "infix_expression",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "key_path_expression",
          "named": true
        },
        {
          "type": "key_path_string_expression",
          "named": true
        },
        {
          "type": "lambda_literal",
          "named": true
        },
        {
          "type": "line_string_literal",
          "named": true
        },
        {
          "type": "macro_invocation",
          "named": true
        },
        {
          "type": "multi_line_string_literal",
          "named": true
        },
        {
          "type": "multiplicative_expression",
          "named": true
        },
        {
          "type": "navigation_expression",
          "named": true
        },
        {
          "type": "nil_coalescing_expression",
          "named": true
        },
        {
          "type": "oct_literal",
          "named": true
        },
        {
          "type": "open_end_range_expression",
          "named": true
        },
        {
          "type": "open_start_range_expression",
          "named": true
        },
        {
          "type": "playground_literal",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "prefix_expression",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "raw_string_literal",
          "named": true
        },
        {
          "type": "real_literal",
          "named": true
        },
        {
          "type": "regex_literal",
          "named": true
        },
        {
          "type": "selector_expression",
          "named": true
        },
        {
          "type": "self_expression",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "special_literal",
          "named": true
        },
        {
          "type": "super_expression",
          "named": true
        },
        {
          "type": "switch_statement",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "value_pack_expansion",
          "named": true
        },
        {
          "type": "value_parameter_pack",
          "named": true
        },
        {
          "type": "where_keyword",
          "named": true
        }
      ]
    }
  },
  {
    "type": "while_statement",
    "named": true,
    "fields": {
      "bound_identifier": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "simple_identifier",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "!==",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": ".",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": ":",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "===",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "additive_expression",
            "named": true
          },
          {
            "type": "array_literal",
            "named": true
          },
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "as",
            "named": false
          },
          {
            "type": "as_expression",
            "named": true
          },
          {
            "type": "assignment",
            "named": true
          },
          {
            "type": "async",
            "named": false
          },
          {
            "type": "availability_condition",
            "named": true
          },
          {
            "type": "await_expression",
            "named": true
          },
          {
            "type": "bang",
            "named": true
          },
          {
            "type": "bin_literal",
            "named": true
          },
          {
            "type": "bitwise_operation",
            "named": true
          },
          {
            "type": "boolean_literal",
            "named": true
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "case",
            "named": false
          },
          {
            "type": "check_expression",
            "named": true
          },
          {
            "type": "comparison_expression",
            "named": true
          },
          {
            "type": "conjunction_expression",
            "named": true
          },
          {
            "type": "constructor_expression",
            "named": true
          },
          {
            "type": "custom_operator",
            "named": true
          },
          {
            "type": "diagnostic",
            "named": true
          },
          {
            "type": "dictionary_literal",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "directive",
            "named": true
          },
          {
            "type": "disjunction_expression",
            "named": true
          },
          {
            "type": "equality_expression",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "fully_open_range",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "hex_literal",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "infix_expression",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "is",
            "named": false
          },
          {
            "type": "key_path_expression",
            "named": true
          },
          {
            "type": "key_path_string_expression",
            "named": true
          },
          {
            "type": "lambda_literal",
            "named": true
          },
          {
            "type": "line_string_literal",
            "named": true
          },
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "multi_line_string_literal",
            "named": true
          },
          {
            "type": "multiplicative_expression",
            "named": true
          },
          {
            "type": "navigation_expression",
            "named": true
          },
          {
            "type": "nil",
            "named": false
          },
          {
            "type": "nil_coalescing_expression",
            "named": true
          },
          {
            "type": "oct_literal",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "open_end_range_expression",
            "named": true
          },
          {
            "type": "open_start_range_expression",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "pattern",
            "named": true
          },
          {
            "type": "playground_literal",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "prefix_expression",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "raw_string_literal",
            "named": true
          },
          {
            "type": "real_literal",
            "named": true
          },
          {
            "type": "regex_literal",
            "named": true
          },
          {
            "type": "selector_expression",
            "named": true
          },
          {
            "type": "self_expression",
            "named": true
          },
          {
            "type": "simple_identifier",
            "named": true
          },
          {
            "type": "special_literal",
            "named": true
          },
          {
            "type": "super_expression",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "switch_statement",
            "named": true
          },
          {
            "type": "ternary_expression",
            "named": true
          },
          {
            "type": "try_expression",
            "named": true
          },
          {
            "type": "tuple_expression",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_annotation",
            "named": true
          },
          {
            "type": "type_modifiers",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          },
          {
            "type": "value_binding_pattern",
            "named": true
          },
          {
            "type": "value_pack_expansion",
            "named": true
          },
          {
            "type": "value_parameter_pack",
            "named": true
          },
          {
            "type": "where_clause",
            "named": true
          },
          {
            "type": "wildcard_pattern",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "array_type",
            "named": true
          },
          {
            "type": "dictionary_type",
            "named": true
          },
          {
            "type": "existential_type",
            "named": true
          },
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "metatype",
            "named": true
          },
          {
            "type": "opaque_type",
            "named": true
          },
          {
            "type": "optional_type",
            "named": true
          },
          {
            "type": "protocol_composition_type",
            "named": true
          },
          {
            "type": "suppressed_constraint",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_pack_expansion",
            "named": true
          },
          {
            "type": "type_parameter_pack",
            "named": true
          },
          {
            "type": "user_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "willset_clause",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "modifiers",
          "named": true
        },
        {
          "type": "simple_identifier",
          "named": true
        },
        {
          "type": "statements",
          "named": true
        }
      ]
    }
  },
  {
    "type": "willset_didset_block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "didset_clause",
          "named": true
        },
        {
          "type": "willset_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "!",
    "named": false
  },
  {
    "type": "!=",
    "named": false
  },
  {
    "type": "!==",
    "named": false
  },
  {
    "type": "\"",
    "named": false
  },
  {
    "type": "\"\"\"",
    "named": false
  },
  {
    "type": "#",
    "named": false
  },
  {
    "type": "#else",
    "named": false
  },
  {
    "type": "#elseif",
    "named": false
  },
  {
    "type": "#endif",
    "named": false
  },
  {
    "type": "#if",
    "named": false
  },
  {
    "type": "%",
    "named": false
  },
  {
    "type": "%=",
    "named": false
  },
  {
    "type": "&",
    "named": false
  },
  {
    "type": "&&",
    "named": false
  },
  {
    "type": "(",
    "named": false
  },
  {
    "type": ")",
    "named": false
  },
  {
    "type": "*",
    "named": false
  },
  {
    "type": "*=",
    "named": false
  },
  {
    "type": "+",
    "named": false
  },
  {
    "type": "++",
    "named": false
  },
  {
    "type": "+=",
    "named": false
  },
  {
    "type": ",",
    "named": false
  },
  {
    "type": "-",
    "named": false
  },
  {
    "type": "--",
    "named": false
  },
  {
    "type": "-=",
    "named": false
  },
  {
    "type": "->",
    "named": false
  },
  {
    "type": ".",
    "named": false
  },
  {
    "type": "...",
    "named": false
  },
  {
    "type": "..<",
    "named": false
  },
  {
    "type": "/",
    "named": false
  },
  {
    "type": "/=",
    "named": false
  },
  {
    "type": ":",
    "named": false
  },
  {
    "type": ";",
    "named": false
  },
  {
    "type": "<",
    "named": false
  },
  {
    "type": "<<",
    "named": false
  },
  {
    "type": "<=",
    "named": false
  },
  {
    "type": "=",
    "named": false
  },
  {
    "type": "==",
    "named": false
  },
  {
    "type": "===",
    "named": false
  },
  {
    "type": ">",
    "named": false
  },
  {
    "type": ">=",
    "named": false
  },
  {
    "type": ">>",
    "named": false
  },
  {
    "type": "?",
    "named": false
  },
  {
    "type": "??",
    "named": false
  },
  {
    "type": "@",
    "named": false
  },
  {
    "type": "@autoclosure",
    "named": false
  },
  {
    "type": "@escaping",
    "named": false
  },
  {
    "type": "Protocol",
    "named": false
  },
  {
    "type": "Type",
    "named": false
  },
  {
    "type": "[",
    "named": false
  },
  {
    "type": "\\",
    "named": false
  },
  {
    "type": "\\(",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "^",
    "named": false
  },
  {
    "type": "^{",
    "named": false
  },
  {
    "type": "_expression",
    "named": true
  },
  {
    "type": "_modify",
    "named": false
  },
  {
    "type": "actor",
    "named": false
  },
  {
    "type": "any",
    "named": false
  },
  {
    "type": "arch",
    "named": false
  },
  {
    "type": "as",
    "named": false
  },
  {
    "type": "as!",
    "named": false
  },
  {
    "type": "as?",
    "named": false
  },
  {
    "type": "associatedtype",
    "named": false
  },
  {
    "type": "async",
    "named": false
  },
  {
    "type": "available",
    "named": false
  },
  {
    "type": "await",
    "named": false
  },
  {
    "type": "bin_literal",
    "named": true
  },
  {
    "type": "borrowing",
    "named": false
  },
  {
    "type": "break",
    "named": false
  },
  {
    "type": "canImport",
    "named": false
  },
  {
    "type": "case",
    "named": false
  },
  {
    "type": "catch_keyword",
    "named": true
  },
  {
    "type": "class",
    "named": false
  },
  {
    "type": "colorLiteral",
    "named": false
  },
  {
    "type": "column",
    "named": false
  },
  {
    "type": "comment",
    "named": true
  },
  {
    "type": "compiler",
    "named": false
  },
  {
    "type": "consuming",
    "named": false
  },
  {
    "type": "continue",
    "named": false
  },
  {
    "type": "convenience",
    "named": false
  },
  {
    "type": "default_keyword",
    "named": true
  },
  {
    "type": "deinit",
    "named": false
  },
  {
    "type": "delegate",
    "named": false
  },
  {
    "type": "didSet",
    "named": false
  },
  {
    "type": "distributed",
    "named": false
  },
  {
    "type": "do",
    "named": false
  },
  {
    "type": "dsohandle",
    "named": false
  },
  {
    "type": "dynamic",
    "named": false
  },
  {
    "type": "each",
    "named": false
  },
  {
    "type": "else",
    "named": true
  },
  {
    "type": "enum",
    "named": false
  },
  {
    "type": "extension",
    "named": false
  },
  {
    "type": "externalMacro",
    "named": false
  },
  {
    "type": "fallthrough",
    "named": false
  },
  {
    "type": "false",
    "named": false
  },
  {
    "type": "file",
    "named": false
  },
  {
    "type": "fileID",
    "named": false
  },
  {
    "type": "fileLiteral",
    "named": false
  },
  {
    "type": "filePath",
    "named": false
  },
  {
    "type": "fileprivate",
    "named": false
  },
  {
    "type": "final",
    "named": false
  },
  {
    "type": "for",
    "named": false
  },
  {
    "type": "func",
    "named": false
  },
  {
    "type": "function",
    "named": false
  },
  {
    "type": "get",
    "named": false
  },
  {
    "type": "getter:",
    "named": false
  },
  {
    "type": "guard",
    "named": false
  },
  {
    "type": "hex_literal",
    "named": true
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "imageLiteral",
    "named": false
  },
  {
    "type": "import",
    "named": false
  },
  {
    "type": "in",
    "named": false
  },
  {
    "type": "indirect",
    "named": false
  },
  {
    "type": "infix",
    "named": false
  },
  {
    "type": "init",
    "named": false
  },
  {
    "type": "inout",
    "named": false
  },
  {
    "type": "integer_literal",
    "named": true
  },
  {
    "type": "internal",
    "named": false
  },
  {
    "type": "is",
    "named": false
  },
  {
    "type": "keyPath",
    "named": false
  },
  {
    "type": "lazy",
    "named": false
  },
  {
    "type": "let",
    "named": false
  },
  {
    "type": "line",
    "named": false
  },
  {
    "type": "macro",
    "named": false
  },
  {
    "type": "multiline_comment",
    "named": true
  },
  {
    "type": "mutating",
    "named": false
  },
  {
    "type": "nil",
    "named": false
  },
  {
    "type": "nonisolated",
    "named": false
  },
  {
    "type": "nonmutating",
    "named": false
  },
  {
    "type": "oct_literal",
    "named": true
  },
  {
    "type": "open",
    "named": false
  },
  {
    "type": "operator",
    "named": false
  },
  {
    "type": "optional",
    "named": false
  },
  {
    "type": "os",
    "named": false
  },
  {
    "type": "override",
    "named": false
  },
  {
    "type": "package",
    "named": false
  },
  {
    "type": "param",
    "named": false
  },
  {
    "type": "postfix",
    "named": false
  },
  {
    "type": "precedencegroup",
    "named": false
  },
  {
    "type": "prefix",
    "named": false
  },
  {
    "type": "private",
    "named": false
  },
  {
    "type": "property",
    "named": false
  },
  {
    "type": "protocol",
    "named": false
  },
  {
    "type": "public",
    "named": false
  },
  {
    "type": "raw_str_continuing_indicator",
    "named": true
  },
  {
    "type": "raw_str_end_part",
    "named": true
  },
  {
    "type": "raw_str_interpolation_start",
    "named": true
  },
  {
    "type": "raw_str_part",
    "named": true
  },
  {
    "type": "real_literal",
    "named": true
  },
  {
    "type": "receiver",
    "named": false
  },
  {
    "type": "repeat",
    "named": false
  },
  {
    "type": "required",
    "named": false
  },
  {
    "type": "return",
    "named": false
  },
  {
    "type": "selector",
    "named": false
  },
  {
    "type": "self",
    "named": false
  },
  {
    "type": "set",
    "named": false
  },
  {
    "type": "setparam",
    "named": false
  },
  {
    "type": "setter:",
    "named": false
  },
  {
    "type": "some",
    "named": false
  },
  {
    "type": "statement_label",
    "named": true
  },
  {
    "type": "static",
    "named": false
  },
  {
    "type": "struct",
    "named": false
  },
  {
    "type": "subscript",
    "named": false
  },
  {
    "type": "super",
    "named": false
  },
  {
    "type": "swift",
    "named": false
  },
  {
    "type": "switch",
    "named": false
  },
  {
    "type": "targetEnvironment",
    "named": false
  },
  {
    "type": "throw_keyword",
    "named": true
  },
  {
    "type": "true",
    "named": false
  },
  {
    "type": "try",
    "named": false
  },
  {
    "type": "try!",
    "named": false
  },
  {
    "type": "try?",
    "named": false
  },
  {
    "type": "typealias",
    "named": false
  },
  {
    "type": "u",
    "named": false
  },
  {
    "type": "unavailable",
    "named": false
  },
  {
    "type": "unowned",
    "named": false
  },
  {
    "type": "unowned(safe)",
    "named": false
  },
  {
    "type": "unowned(unsafe)",
    "named": false
  },
  {
    "type": "var",
    "named": false
  },
  {
    "type": "weak",
    "named": false
  },
  {
    "type": "where_keyword",
    "named": true
  },
  {
    "type": "while",
    "named": false
  },
  {
    "type": "wildcard_pattern",
    "named": true
  },
  {
    "type": "willSet",
    "named": false
  },
  {
    "type": "yield",
    "named": false
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "||",
    "named": false
  },
  {
    "type": "}",
    "named": false
  },
  {
    "type": "~",
    "named": false
  }
]