[
  {
    "type": "_declaration",
    "named": true,
    "subtypes": [
      {
        "type": "bitfield_alias_declaration",
        "named": true
      },
      {
        "type": "enum_declaration",
        "named": true
      },
      {
        "type": "expect_declaration",
        "named": true
      },
      {
        "type": "function_declaration",
        "named": true
      },
      {
        "type": "global_variable_declaration",
        "named": true
      },
      {
        "type": "include_declaration",
        "named": true
      },
      {
        "type": "module_declaration",
        "named": true
      },
      {
        "type": "options_declaration",
        "named": true
      },
      {
        "type": "require_declaration",
        "named": true
      },
      {
        "type": "structure_declaration",
        "named": true
      },
      {
        "type": "tuple_alias_declaration",
        "named": true
      },
      {
        "type": "typedef_declaration",
        "named": true
      },
      {
        "type": "variant_alias_declaration",
        "named": true
      }
    ]
  },
  {
    "type": "_expression",
    "named": true,
    "subtypes": [
      {
        "type": "addr_expression",
        "named": true
      },
      {
        "type": "array_comprehension",
        "named": true
      },
      {
        "type": "array_constructor",
        "named": true
      },
      {
        "type": "array_literal",
        "named": true
      },
      {
        "type": "array_struct_expression",
        "named": true
      },
      {
        "type": "arrow_call_expression",
        "named": true
      },
      {
        "type": "as_expression",
        "named": true
      },
      {
        "type": "basic_type",
        "named": true
      },
      {
        "type": "binary_expression",
        "named": true
      },
      {
        "type": "block_expression",
        "named": true
      },
      {
        "type": "boolean_literal",
        "named": true
      },
      {
        "type": "bypass_index_expression",
        "named": true
      },
      {
        "type": "call_expression",
        "named": true
      },
      {
        "type": "call_with_block_expression",
        "named": true
      },
      {
        "type": "cast_expression",
        "named": true
      },
      {
        "type": "character_literal",
        "named": true
      },
      {
        "type": "default_expression",
        "named": true
      },
      {
        "type": "deref_expression",
        "named": true
      },
      {
        "type": "field_expression",
        "named": true
      },
      {
        "type": "fixed_array_expression",
        "named": true
      },
      {
        "type": "float_literal",
        "named": true
      },
      {
        "type": "float_trailing_dot",
        "named": true
      },
      {
        "type": "func_addr_expression",
        "named": true
      },
      {
        "type": "generator_expression",
        "named": true
      },
      {
        "type": "identifier",
        "named": true
      },
      {
        "type": "index_expression",
        "named": true
      },
      {
        "type": "integer_literal",
        "named": true
      },
      {
        "type": "is_expression",
        "named": true
      },
      {
        "type": "lambda_expression",
        "named": true
      },
      {
        "type": "method_call_expression",
        "named": true
      },
      {
        "type": "new_expression",
        "named": true
      },
      {
        "type": "null_coalescing_expression",
        "named": true
      },
      {
        "type": "null_literal",
        "named": true
      },
      {
        "type": "oneliner_if_expression",
        "named": true
      },
      {
        "type": "parenthesized_expression",
        "named": true
      },
      {
        "type": "pipe_expression",
        "named": true
      },
      {
        "type": "postfix_expression",
        "named": true
      },
      {
        "type": "quote_expression",
        "named": true
      },
      {
        "type": "range_expression",
        "named": true
      },
      {
        "type": "reader_macro",
        "named": true
      },
      {
        "type": "safe_field_expression",
        "named": true
      },
      {
        "type": "safe_index_expression",
        "named": true
      },
      {
        "type": "scoped_identifier",
        "named": true
      },
      {
        "type": "spread_expression",
        "named": true
      },
      {
        "type": "string_literal",
        "named": true
      },
      {
        "type": "struct_constructor",
        "named": true
      },
      {
        "type": "struct_make_expression",
        "named": true
      },
      {
        "type": "table_comprehension",
        "named": true
      },
      {
        "type": "table_constructor",
        "named": true
      },
      {
        "type": "table_literal",
        "named": true
      },
      {
        "type": "ternary_expression",
        "named": true
      },
      {
        "type": "tuple_constructor",
        "named": true
      },
      {
        "type": "tuple_expression",
        "named": true
      },
      {
        "type": "type_expression",
        "named": true
      },
      {
        "type": "typeinfo_expression",
        "named": true
      },
      {
        "type": "unary_expression",
        "named": true
      },
      {
        "type": "uninitialized_expression",
        "named": true
      },
      {
        "type": "unsafe_expression",
        "named": true
      },
      {
        "type": "variant_constructor",
        "named": true
      }
    ]
  },
  {
    "type": "_statement",
    "named": true,
    "subtypes": [
      {
        "type": "assume_statement",
        "named": true
      },
      {
        "type": "block",
        "named": true
      },
      {
        "type": "break_statement",
        "named": true
      },
      {
        "type": "continue_statement",
        "named": true
      },
      {
        "type": "delete_statement",
        "named": true
      },
      {
        "type": "expression_statement",
        "named": true
      },
      {
        "type": "for_statement",
        "named": true
      },
      {
        "type": "goto_statement",
        "named": true
      },
      {
        "type": "if_statement",
        "named": true
      },
      {
        "type": "label_statement",
        "named": true
      },
      {
        "type": "pass_statement",
        "named": true
      },
      {
        "type": "return_statement",
        "named": true
      },
      {
        "type": "try_recover_statement",
        "named": true
      },
      {
        "type": "typedef_statement",
        "named": true
      },
      {
        "type": "unsafe_block",
        "named": true
      },
      {
        "type": "variable_declaration_statement",
        "named": true
      },
      {
        "type": "while_statement",
        "named": true
      },
      {
        "type": "with_statement",
        "named": true
      },
      {
        "type": "yield_statement",
        "named": true
      }
    ]
  },
  {
    "type": "_type",
    "named": true,
    "subtypes": [
      {
        "type": "array_type",
        "named": true
      },
      {
        "type": "auto_type",
        "named": true
      },
      {
        "type": "basic_type",
        "named": true
      },
      {
        "type": "bitfield_type",
        "named": true
      },
      {
        "type": "block_type",
        "named": true
      },
      {
        "type": "const_type",
        "named": true
      },
      {
        "type": "dim_type",
        "named": true
      },
      {
        "type": "explicit_const_type",
        "named": true
      },
      {
        "type": "explicit_ref_type",
        "named": true
      },
      {
        "type": "explicit_type",
        "named": true
      },
      {
        "type": "function_type",
        "named": true
      },
      {
        "type": "implicit_type",
        "named": true
      },
      {
        "type": "iterator_type",
        "named": true
      },
      {
        "type": "lambda_type",
        "named": true
      },
      {
        "type": "named_type",
        "named": true
      },
      {
        "type": "option_type",
        "named": true
      },
      {
        "type": "pointer_type",
        "named": true
      },
      {
        "type": "quote_type",
        "named": true
      },
      {
        "type": "ref_type",
        "named": true
      },
      {
        "type": "remove_modifier",
        "named": true
      },
      {
        "type": "smart_pointer_type",
        "named": true
      },
      {
        "type": "table_type",
        "named": true
      },
      {
        "type": "temp_type",
        "named": true
      },
      {
        "type": "template_type",
        "named": true
      },
      {
        "type": "tuple_type",
        "named": true
      },
      {
        "type": "type_macro",
        "named": true
      },
      {
        "type": "typedecl_type",
        "named": true
      },
      {
        "type": "variant_type",
        "named": true
      }
    ]
  },
  {
    "type": "addr_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "annotation_argument",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "in",
            "named": false
          },
          {
            "type": "type",
            "named": false
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "@@",
            "named": false
          },
          {
            "type": "false",
            "named": false
          },
          {
            "type": "float_literal",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          },
          {
            "type": "string_literal",
            "named": true
          },
          {
            "type": "true",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "annotation_argument_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "annotation_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "annotation_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "annotation_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "annotation_argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "annotation_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "annotation_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "annotation_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "scoped_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "argument_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "named_argument_block",
          "named": true
        }
      ]
    }
  },
  {
    "type": "array_comprehension",
    "named": true,
    "fields": {
      "filter": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "iterators": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "variables": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "for_variable",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "array_constructor",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "array_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "array_struct_expression",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "make_struct_fields",
          "named": true
        }
      ]
    }
  },
  {
    "type": "array_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "arrow_call_expression",
    "named": true,
    "fields": {
      "method": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "as_expression",
    "named": true,
    "fields": {
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "?as",
            "named": false
          },
          {
            "type": "as",
            "named": false
          }
        ]
      },
      "type": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "<",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": "_type",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "quote_expression",
            "named": true
          },
          {
            "type": "type",
            "named": false
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "assignment_expression",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&&=",
            "named": false
          },
          {
            "type": "&=",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": ":=",
            "named": false
          },
          {
            "type": "<-",
            "named": false
          },
          {
            "type": "<<<=",
            "named": false
          },
          {
            "type": "<<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": ">>=",
            "named": false
          },
          {
            "type": ">>>=",
            "named": false
          },
          {
            "type": "^=",
            "named": false
          },
          {
            "type": "^^=",
            "named": false
          },
          {
            "type": "|=",
            "named": false
          },
          {
            "type": "||=",
            "named": false
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "assume_statement",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "auto_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "basic_type",
    "named": true,
    "fields": {}
  },
  {
    "type": "binary_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "bitfield_alias_declaration",
    "named": true,
    "fields": {
      "base_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "uint",
            "named": false
          },
          {
            "type": "uint16",
            "named": false
          },
          {
            "type": "uint64",
            "named": false
          },
          {
            "type": "uint8",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "bitfield_entry",
          "named": true
        }
      ]
    }
  },
  {
    "type": "bitfield_entry",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "bitfield_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        },
        {
          "type": "finally_block",
          "named": true
        }
      ]
    }
  },
  {
    "type": "block_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "block",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "annotation_list",
          "named": true
        },
        {
          "type": "capture_list",
          "named": true
        },
        {
          "type": "function_argument_list",
          "named": true
        },
        {
          "type": "function_return_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "block_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "function_argument_list",
          "named": true
        },
        {
          "type": "function_return_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "boolean_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "break_statement",
    "named": true,
    "fields": {
      "condition": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "bypass_index_expression",
    "named": true,
    "fields": {
      "index": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "call_expression",
    "named": true,
    "fields": {
      "function": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "basic_type",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "quote_expression",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "call_with_block_expression",
    "named": true,
    "fields": {
      "block": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          },
          {
            "type": "block_expression",
            "named": true
          },
          {
            "type": "lambda_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "arrow_call_expression",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "field_expression",
          "named": true
        },
        {
          "type": "method_call_expression",
          "named": true
        },
        {
          "type": "pipe_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "capture_entry",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "capture_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "capture_entry",
          "named": true
        }
      ]
    }
  },
  {
    "type": "cast_expression",
    "named": true,
    "fields": {
      "kind": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "cast",
            "named": false
          },
          {
            "type": "reinterpret",
            "named": false
          },
          {
            "type": "upcast",
            "named": false
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "const_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "continue_statement",
    "named": true,
    "fields": {
      "condition": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "default_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "delete_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "deref_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "dim_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "elif_clause",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "break_statement",
            "named": true
          },
          {
            "type": "continue_statement",
            "named": true
          },
          {
            "type": "return_statement",
            "named": true
          },
          {
            "type": "yield_statement",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "else_clause",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "break_statement",
            "named": true
          },
          {
            "type": "continue_statement",
            "named": true
          },
          {
            "type": "return_statement",
            "named": true
          },
          {
            "type": "yield_statement",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "enum_base_type",
    "named": true,
    "fields": {}
  },
  {
    "type": "enum_declaration",
    "named": true,
    "fields": {
      "base_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "enum_base_type",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "annotation_list",
          "named": true
        },
        {
          "type": "enum_entry",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_entry",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "expect_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expect_error",
          "named": true
        }
      ]
    }
  },
  {
    "type": "expect_error",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "integer_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "explicit_const_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "explicit_ref_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "explicit_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "expression_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "assignment_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_expression",
    "named": true,
    "fields": {
      "field": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ".",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "quote_expression",
            "named": true
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "finally_block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "fixed_array_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "for_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "iterators": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "variables": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "for_variable",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "for_variable",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "quote_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "func_addr_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "function": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "quote_expression",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "annotation_list",
          "named": true
        },
        {
          "type": "capture_list",
          "named": true
        },
        {
          "type": "function_argument_list",
          "named": true
        },
        {
          "type": "function_return_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_argument",
    "named": true,
    "fields": {
      "alias": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "default": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "aka",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "quote_expression",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "metadata_argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_argument_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "function_argument",
          "named": true
        },
        {
          "type": "quote_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "annotation_list",
          "named": true
        },
        {
          "type": "function_argument_list",
          "named": true
        },
        {
          "type": "function_return_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "basic_type",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "operator_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_return_type",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "function_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "function_argument_list",
          "named": true
        },
        {
          "type": "function_return_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "generator_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "capture_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "global_variable_binding",
    "named": true,
    "fields": {
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "global_variable_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "global_variable_binding",
          "named": true
        },
        {
          "type": "metadata_argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "goto_statement",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "integer_literal",
            "named": true
          }
        ]
      },
      "target": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "if_statement",
    "named": true,
    "fields": {
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "break_statement",
            "named": true
          },
          {
            "type": "continue_statement",
            "named": true
          },
          {
            "type": "return_statement",
            "named": true
          },
          {
            "type": "yield_statement",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "elif_clause",
          "named": true
        },
        {
          "type": "else_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "implicit_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "include_declaration",
    "named": true,
    "fields": {
      "file": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "include_path",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "index_expression",
    "named": true,
    "fields": {
      "index": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "is_expression",
    "named": true,
    "fields": {
      "type": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "<",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": "_type",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "type",
            "named": false
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "iterator_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "label_statement",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "integer_literal",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "lambda_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "block",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "annotation_list",
          "named": true
        },
        {
          "type": "capture_list",
          "named": true
        },
        {
          "type": "function_argument_list",
          "named": true
        },
        {
          "type": "function_return_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lambda_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "function_argument_list",
          "named": true
        },
        {
          "type": "function_return_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "make_struct_field",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": ":=",
            "named": false
          },
          {
            "type": "<-",
            "named": false
          },
          {
            "type": "=",
            "named": false
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "make_struct_fields",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "make_struct_field",
          "named": true
        }
      ]
    }
  },
  {
    "type": "metadata_argument_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "annotation_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "method_call_expression",
    "named": true,
    "fields": {
      "method": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "basic_type",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "module_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "$",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "named_argument_block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "make_struct_fields",
          "named": true
        }
      ]
    }
  },
  {
    "type": "named_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "scoped_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "new_expression",
    "named": true,
    "fields": {
      "type": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "<",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": "_type",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "argument_list",
          "named": true
        },
        {
          "type": "make_struct_fields",
          "named": true
        }
      ]
    }
  },
  {
    "type": "null_coalescing_expression",
    "named": true,
    "fields": {
      "default": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "oneliner_if_expression",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "break_statement",
            "named": true
          },
          {
            "type": "continue_statement",
            "named": true
          },
          {
            "type": "return_statement",
            "named": true
          },
          {
            "type": "yield_statement",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "operator_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "basic_type",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "option_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "options_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "annotation_argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parenthesized_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "assignment_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pass_statement",
    "named": true,
    "fields": {}
  },
  {
    "type": "pipe_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pointer_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "postfix_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "quote_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "quote_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "range_expression",
    "named": true,
    "fields": {
      "end": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "start": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "reader_macro",
    "named": true,
    "fields": {
      "content": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "reader_macro_content",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "ref_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "remove_modifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "require_declaration",
    "named": true,
    "fields": {
      "alias": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "module": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "require_module_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "require_module_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "return_statement",
    "named": true,
    "fields": {
      "condition": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "safe_field_expression",
    "named": true,
    "fields": {
      "field": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "safe_index_expression",
    "named": true,
    "fields": {
      "index": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "scoped_identifier",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "scope": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "smart_pointer_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "source_file",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_declaration",
          "named": true
        },
        {
          "type": "assume_statement",
          "named": true
        },
        {
          "type": "break_statement",
          "named": true
        },
        {
          "type": "continue_statement",
          "named": true
        },
        {
          "type": "delete_statement",
          "named": true
        },
        {
          "type": "for_statement",
          "named": true
        },
        {
          "type": "goto_statement",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "label_statement",
          "named": true
        },
        {
          "type": "pass_statement",
          "named": true
        },
        {
          "type": "reader_macro",
          "named": true
        },
        {
          "type": "return_statement",
          "named": true
        },
        {
          "type": "try_recover_statement",
          "named": true
        },
        {
          "type": "unsafe_block",
          "named": true
        },
        {
          "type": "while_statement",
          "named": true
        },
        {
          "type": "with_statement",
          "named": true
        },
        {
          "type": "yield_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string_interpolation",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "format_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "escape_sequence",
          "named": true
        },
        {
          "type": "string_interpolation",
          "named": true
        }
      ]
    }
  },
  {
    "type": "struct_constructor",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "make_struct_fields",
          "named": true
        }
      ]
    }
  },
  {
    "type": "struct_make_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "argument_list",
          "named": true
        },
        {
          "type": "make_struct_fields",
          "named": true
        }
      ]
    }
  },
  {
    "type": "structure_declaration",
    "named": true,
    "fields": {
      "kind": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "class",
            "named": false
          },
          {
            "type": "struct",
            "named": false
          },
          {
            "type": "template",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "parent": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "annotation_list",
          "named": true
        },
        {
          "type": "structure_member",
          "named": true
        }
      ]
    }
  },
  {
    "type": "structure_field",
    "named": true,
    "fields": {
      "alias": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "aka",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "quote_expression",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "metadata_argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "structure_member",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "structure_field",
          "named": true
        },
        {
          "type": "structure_method",
          "named": true
        },
        {
          "type": "structure_typedef",
          "named": true
        }
      ]
    }
  },
  {
    "type": "structure_method",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "annotation_list",
          "named": true
        },
        {
          "type": "function_argument_list",
          "named": true
        },
        {
          "type": "function_return_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "structure_typedef",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "table_comprehension",
    "named": true,
    "fields": {
      "filter": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "iterators": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "variables": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "for_variable",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "table_constructor",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "argument_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "table_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "table_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "temp_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "template_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ternary_expression",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "try_recover_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "handler": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "tuple_alias_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "tuple_entry",
          "named": true
        }
      ]
    }
  },
  {
    "type": "tuple_constructor",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "argument_list",
          "named": true
        },
        {
          "type": "make_struct_fields",
          "named": true
        }
      ]
    }
  },
  {
    "type": "tuple_entry",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "tuple_expansion_binding",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "tuple_expression",
    "named": true,
    "fields": {
      "first": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "second": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "tuple_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_expression",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "type_macro",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "typedecl_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "typedef_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "annotation_list",
          "named": true
        }
      ]
    }
  },
  {
    "type": "typedef_statement",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "typeinfo_expression",
    "named": true,
    "fields": {
      "extra": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "subtrait": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "trait": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "unary_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "uninitialized_expression",
    "named": true,
    "fields": {}
  },
  {
    "type": "unsafe_block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "block",
          "named": true
        }
      ]
    }
  },
  {
    "type": "unsafe_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variable_binding",
    "named": true,
    "fields": {
      "alias": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "aka",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "quote_expression",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "variable_declaration_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "tuple_expansion_binding",
          "named": true
        },
        {
          "type": "variable_binding",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variant_alias_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "variant_entry",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variant_constructor",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "argument_list",
          "named": true
        },
        {
          "type": "variant_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variant_entry",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "variant_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "while_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "with_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "yield_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "!",
    "named": false
  },
  {
    "type": "!=",
    "named": false
  },
  {
    "type": "\"",
    "named": false
  },
  {
    "type": "#",
    "named": false
  },
  {
    "type": "$",
    "named": false
  },
  {
    "type": "%",
    "named": false
  },
  {
    "type": "%%",
    "named": false
  },
  {
    "type": "%=",
    "named": false
  },
  {
    "type": "&",
    "named": false
  },
  {
    "type": "&&",
    "named": false
  },
  {
    "type": "&&=",
    "named": false
  },
  {
    "type": "&=",
    "named": false
  },
  {
    "type": "(",
    "named": false
  },
  {
    "type": ")",
    "named": false
  },
  {
    "type": "*",
    "named": false
  },
  {
    "type": "*=",
    "named": false
  },
  {
    "type": "+",
    "named": false
  },
  {
    "type": "++",
    "named": false
  },
  {
    "type": "+=",
    "named": false
  },
  {
    "type": ",",
    "named": false
  },
  {
    "type": "-",
    "named": false
  },
  {
    "type": "--",
    "named": false
  },
  {
    "type": "-=",
    "named": false
  },
  {
    "type": "->",
    "named": false
  },
  {
    "type": ".",
    "named": false
  },
  {
    "type": "..",
    "named": false
  },
  {
    "type": "/",
    "named": false
  },
  {
    "type": "/=",
    "named": false
  },
  {
    "type": ":",
    "named": false
  },
  {
    "type": "::",
    "named": false
  },
  {
    "type": ":=",
    "named": false
  },
  {
    "type": ";",
    "named": false
  },
  {
    "type": "<",
    "named": false
  },
  {
    "type": "<-",
    "named": false
  },
  {
    "type": "<<",
    "named": false
  },
  {
    "type": "<<<",
    "named": false
  },
  {
    "type": "<<<=",
    "named": false
  },
  {
    "type": "<<=",
    "named": false
  },
  {
    "type": "<=",
    "named": false
  },
  {
    "type": "<|",
    "named": false
  },
  {
    "type": "=",
    "named": false
  },
  {
    "type": "==",
    "named": false
  },
  {
    "type": "=>",
    "named": false
  },
  {
    "type": ">",
    "named": false
  },
  {
    "type": ">=",
    "named": false
  },
  {
    "type": ">>",
    "named": false
  },
  {
    "type": ">>=",
    "named": false
  },
  {
    "type": ">>>",
    "named": false
  },
  {
    "type": ">>>=",
    "named": false
  },
  {
    "type": "?",
    "named": false
  },
  {
    "type": "?.",
    "named": false
  },
  {
    "type": "??",
    "named": false
  },
  {
    "type": "?[",
    "named": false
  },
  {
    "type": "?as",
    "named": false
  },
  {
    "type": "@",
    "named": false
  },
  {
    "type": "@@",
    "named": false
  },
  {
    "type": "[",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "^",
    "named": false
  },
  {
    "type": "^=",
    "named": false
  },
  {
    "type": "^^",
    "named": false
  },
  {
    "type": "^^=",
    "named": false
  },
  {
    "type": "abstract",
    "named": false
  },
  {
    "type": "addr",
    "named": false
  },
  {
    "type": "aka",
    "named": false
  },
  {
    "type": "array",
    "named": false
  },
  {
    "type": "as",
    "named": false
  },
  {
    "type": "assume",
    "named": false
  },
  {
    "type": "auto",
    "named": false
  },
  {
    "type": "bitfield",
    "named": false
  },
  {
    "type": "block",
    "named": false
  },
  {
    "type": "block_comment",
    "named": true
  },
  {
    "type": "bool",
    "named": false
  },
  {
    "type": "break",
    "named": false
  },
  {
    "type": "capture",
    "named": false
  },
  {
    "type": "cast",
    "named": false
  },
  {
    "type": "character_literal",
    "named": true
  },
  {
    "type": "class",
    "named": false
  },
  {
    "type": "clone",
    "named": false
  },
  {
    "type": "const",
    "named": false
  },
  {
    "type": "continue",
    "named": false
  },
  {
    "type": "def",
    "named": false
  },
  {
    "type": "default",
    "named": false
  },
  {
    "type": "delete",
    "named": false
  },
  {
    "type": "deref",
    "named": false
  },
  {
    "type": "double",
    "named": false
  },
  {
    "type": "elif",
    "named": false
  },
  {
    "type": "else",
    "named": false
  },
  {
    "type": "enum",
    "named": false
  },
  {
    "type": "escape_sequence",
    "named": true
  },
  {
    "type": "expect",
    "named": false
  },
  {
    "type": "explicit",
    "named": false
  },
  {
    "type": "false",
    "named": false
  },
  {
    "type": "finally",
    "named": false
  },
  {
    "type": "fixed_array",
    "named": false
  },
  {
    "type": "float",
    "named": false
  },
  {
    "type": "float2",
    "named": false
  },
  {
    "type": "float3",
    "named": false
  },
  {
    "type": "float4",
    "named": false
  },
  {
    "type": "float_literal",
    "named": true
  },
  {
    "type": "float_trailing_dot",
    "named": true
  },
  {
    "type": "for",
    "named": false
  },
  {
    "type": "format_specifier",
    "named": true
  },
  {
    "type": "function",
    "named": false
  },
  {
    "type": "generator",
    "named": false
  },
  {
    "type": "goto",
    "named": false
  },
  {
    "type": "identifier",
    "named": true
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "implicit",
    "named": false
  },
  {
    "type": "in",
    "named": false
  },
  {
    "type": "include",
    "named": false
  },
  {
    "type": "include_path",
    "named": true
  },
  {
    "type": "inscope",
    "named": false
  },
  {
    "type": "int",
    "named": false
  },
  {
    "type": "int16",
    "named": false
  },
  {
    "type": "int2",
    "named": false
  },
  {
    "type": "int3",
    "named": false
  },
  {
    "type": "int4",
    "named": false
  },
  {
    "type": "int64",
    "named": false
  },
  {
    "type": "int8",
    "named": false
  },
  {
    "type": "integer_literal",
    "named": true
  },
  {
    "type": "is",
    "named": false
  },
  {
    "type": "iterator",
    "named": false
  },
  {
    "type": "label",
    "named": false
  },
  {
    "type": "lambda",
    "named": false
  },
  {
    "type": "let",
    "named": false
  },
  {
    "type": "line_comment",
    "named": true
  },
  {
    "type": "module",
    "named": false
  },
  {
    "type": "move",
    "named": false
  },
  {
    "type": "new",
    "named": false
  },
  {
    "type": "null_literal",
    "named": true
  },
  {
    "type": "operator",
    "named": false
  },
  {
    "type": "options",
    "named": false
  },
  {
    "type": "override",
    "named": false
  },
  {
    "type": "pass",
    "named": false
  },
  {
    "type": "private",
    "named": false
  },
  {
    "type": "public",
    "named": false
  },
  {
    "type": "range",
    "named": false
  },
  {
    "type": "range64",
    "named": false
  },
  {
    "type": "reader_macro_content",
    "named": true
  },
  {
    "type": "recover",
    "named": false
  },
  {
    "type": "reinterpret",
    "named": false
  },
  {
    "type": "require",
    "named": false
  },
  {
    "type": "return",
    "named": false
  },
  {
    "type": "sealed",
    "named": false
  },
  {
    "type": "shared",
    "named": false
  },
  {
    "type": "smart_ptr",
    "named": false
  },
  {
    "type": "spread_expression",
    "named": true
  },
  {
    "type": "static",
    "named": false
  },
  {
    "type": "static_elif",
    "named": false
  },
  {
    "type": "static_if",
    "named": false
  },
  {
    "type": "string",
    "named": false
  },
  {
    "type": "struct",
    "named": false
  },
  {
    "type": "t",
    "named": false
  },
  {
    "type": "table",
    "named": false
  },
  {
    "type": "template",
    "named": false
  },
  {
    "type": "true",
    "named": false
  },
  {
    "type": "try",
    "named": false
  },
  {
    "type": "tuple",
    "named": false
  },
  {
    "type": "type",
    "named": false
  },
  {
    "type": "typedecl",
    "named": false
  },
  {
    "type": "typedef",
    "named": false
  },
  {
    "type": "typeinfo",
    "named": false
  },
  {
    "type": "uint",
    "named": false
  },
  {
    "type": "uint16",
    "named": false
  },
  {
    "type": "uint2",
    "named": false
  },
  {
    "type": "uint3",
    "named": false
  },
  {
    "type": "uint4",
    "named": false
  },
  {
    "type": "uint64",
    "named": false
  },
  {
    "type": "uint8",
    "named": false
  },
  {
    "type": "uninitialized",
    "named": false
  },
  {
    "type": "unsafe",
    "named": false
  },
  {
    "type": "upcast",
    "named": false
  },
  {
    "type": "urange",
    "named": false
  },
  {
    "type": "urange64",
    "named": false
  },
  {
    "type": "var",
    "named": false
  },
  {
    "type": "variant",
    "named": false
  },
  {
    "type": "void",
    "named": false
  },
  {
    "type": "where",
    "named": false
  },
  {
    "type": "while",
    "named": false
  },
  {
    "type": "with",
    "named": false
  },
  {
    "type": "yield",
    "named": false
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "|=",
    "named": false
  },
  {
    "type": "|>",
    "named": false
  },
  {
    "type": "||",
    "named": false
  },
  {
    "type": "||=",
    "named": false
  },
  {
    "type": "}",
    "named": false
  },
  {
    "type": "~",
    "named": false
  }
]