[
  {
    "type": "expression",
    "named": true,
    "subtypes": [
      {
        "type": "binary_expression",
        "named": true
      },
      {
        "type": "block",
        "named": true
      },
      {
        "type": "builtin_expression",
        "named": true
      },
      {
        "type": "call_expression",
        "named": true
      },
      {
        "type": "cast_expression",
        "named": true
      },
      {
        "type": "dereference_expression",
        "named": true
      },
      {
        "type": "enum_literal",
        "named": true
      },
      {
        "type": "field_expression",
        "named": true
      },
      {
        "type": "identifier",
        "named": true
      },
      {
        "type": "if_expression",
        "named": true
      },
      {
        "type": "index_expression",
        "named": true
      },
      {
        "type": "inline_assembly_expression",
        "named": true
      },
      {
        "type": "lambda_expression",
        "named": true
      },
      {
        "type": "literal",
        "named": true
      },
      {
        "type": "match_expression",
        "named": true
      },
      {
        "type": "no_initializer",
        "named": true
      },
      {
        "type": "parenthesized_expression",
        "named": true
      },
      {
        "type": "reference_expression",
        "named": true
      },
      {
        "type": "sequence_literal",
        "named": true
      },
      {
        "type": "slice_expression",
        "named": true
      },
      {
        "type": "struct_literal",
        "named": true
      },
      {
        "type": "unary_expression",
        "named": true
      },
      {
        "type": "when_expression",
        "named": true
      }
    ]
  },
  {
    "type": "statement",
    "named": true,
    "subtypes": [
      {
        "type": "assignment_statement",
        "named": true
      },
      {
        "type": "attribute",
        "named": true
      },
      {
        "type": "binding_declaration",
        "named": true
      },
      {
        "type": "break_statement",
        "named": true
      },
      {
        "type": "compile_time_when",
        "named": true
      },
      {
        "type": "compiler_assert_directive",
        "named": true
      },
      {
        "type": "compiler_error_directive",
        "named": true
      },
      {
        "type": "continue_statement",
        "named": true
      },
      {
        "type": "defer_statement",
        "named": true
      },
      {
        "type": "expression_statement",
        "named": true
      },
      {
        "type": "for_statement",
        "named": true
      },
      {
        "type": "function_definition",
        "named": true
      },
      {
        "type": "multi_binding_declaration",
        "named": true
      },
      {
        "type": "return_statement",
        "named": true
      },
      {
        "type": "type_definition",
        "named": true
      }
    ]
  },
  {
    "type": "type",
    "named": true,
    "subtypes": [
      {
        "type": "array_type",
        "named": true
      },
      {
        "type": "captured_type",
        "named": true
      },
      {
        "type": "dynamic_trait_type",
        "named": true
      },
      {
        "type": "enum_type",
        "named": true
      },
      {
        "type": "flags_type",
        "named": true
      },
      {
        "type": "function_type",
        "named": true
      },
      {
        "type": "named_type",
        "named": true
      },
      {
        "type": "opaque_type",
        "named": true
      },
      {
        "type": "pointer_type",
        "named": true
      },
      {
        "type": "representation_type",
        "named": true
      },
      {
        "type": "slice_type",
        "named": true
      },
      {
        "type": "struct_type",
        "named": true
      },
      {
        "type": "trait_type",
        "named": true
      },
      {
        "type": "union_type",
        "named": true
      },
      {
        "type": "when_type",
        "named": true
      }
    ]
  },
  {
    "type": "argument_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "array_type",
    "named": true,
    "fields": {
      "element": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      },
      "length": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "assembly_operand",
    "named": true,
    "fields": {
      "constraint": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "string_literal",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "string_literal",
            "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": true,
      "types": [
        {
          "type": "assembly_keyword",
          "named": true
        }
      ]
    }
  },
  {
    "type": "assignment_statement",
    "named": true,
    "fields": {
      "left": {
        "multiple": true,
        "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
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "attribute",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "link_attribute",
          "named": true
        },
        {
          "type": "ordinary_attribute",
          "named": true
        }
      ]
    }
  },
  {
    "type": "attribute_argument",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "string_literal",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "attribute_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "attribute_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "auto_attribute",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "attribute_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "binary_expression",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "operator": {
        "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
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "binding_declaration",
    "named": true,
    "fields": {
      "attribute": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "attribute",
            "named": true
          }
        ]
      },
      "compile_time": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "$",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "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": "block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "boolean_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "builtin_expression",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "builtin_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        },
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "c_string_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "escape_sequence",
          "named": true
        },
        {
          "type": "string_content",
          "named": true
        }
      ]
    }
  },
  {
    "type": "call_expression",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "argument_list",
            "named": true
          }
        ]
      },
      "function": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "captured_type",
    "named": true,
    "fields": {
      "constraint": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "cast_expression",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "character_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "escape_sequence",
          "named": true
        }
      ]
    }
  },
  {
    "type": "compile_time_block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "import_declaration",
          "named": true
        },
        {
          "type": "module_declaration",
          "named": true
        },
        {
          "type": "statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "compile_time_when",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "compile_time_block",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "compile_time_block",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "compiler_assert_directive",
    "named": true,
    "fields": {
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "message": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "string_literal",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "builtin_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "compiler_error_directive",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "builtin_name",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "defer_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "dereference_expression",
    "named": true,
    "fields": {
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "dynamic_trait_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "named_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_literal",
    "named": true,
    "fields": {
      "variant": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "enum_member",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "integer_literal",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "enum_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "enum_member",
          "named": true
        }
      ]
    }
  },
  {
    "type": "expression_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_expression",
    "named": true,
    "fields": {
      "field": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "field_initializer",
    "named": true,
    "fields": {
      "field": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "no_initializer",
          "named": true
        }
      ]
    }
  },
  {
    "type": "flag_initializer",
    "named": true,
    "fields": {
      "member": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "flags_member",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "flags_type",
    "named": true,
    "fields": {
      "underlying": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "named_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "flags_member",
          "named": true
        },
        {
          "type": "type_keyword",
          "named": true
        }
      ]
    }
  },
  {
    "type": "for_clause",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "assignment_statement",
          "named": true
        },
        {
          "type": "binding_declaration",
          "named": true
        },
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "for_each_clause",
    "named": true,
    "fields": {
      "element": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "for_each_destructure",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "end": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "index": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "iterable": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "iteration_attribute",
          "named": true
        }
      ]
    }
  },
  {
    "type": "for_each_destructure",
    "named": true,
    "fields": {
      "binding": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "wildcard",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "for_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "expression",
          "named": true
        },
        {
          "type": "for_clause",
          "named": true
        },
        {
          "type": "for_each_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_definition",
    "named": true,
    "fields": {
      "attribute": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "attribute",
            "named": true
          }
        ]
      },
      "body": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "=",
            "named": false
          },
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_name",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "parameter_list",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "return_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "function_name",
    "named": true,
    "fields": {
      "function": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "method": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "owner": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "function_type",
    "named": true,
    "fields": {
      "return_type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "if_expression",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "import_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "import_spec",
          "named": true
        }
      ]
    }
  },
  {
    "type": "import_spec",
    "named": true,
    "fields": {
      "alias": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "path": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "module_path",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "index_expression",
    "named": true,
    "fields": {
      "index": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "inline_assembly_expression",
    "named": true,
    "fields": {
      "template": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "string_literal",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "assembly_operand",
          "named": true
        },
        {
          "type": "builtin_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "iteration_attribute",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "attribute_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lambda_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "lambda_parameter_list",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "lambda_parameter",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "lambda_parameter_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lambda_parameter_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "lambda_parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lambda_parameter_name",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "link_attribute",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "attribute_name",
          "named": true
        },
        {
          "type": "link_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "link_block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "link_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "link_entry",
    "named": true,
    "fields": {
      "kind": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "link_kind",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "string_literal",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "link_item",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "compiler_error_directive",
          "named": true
        },
        {
          "type": "link_entry",
          "named": true
        },
        {
          "type": "link_when",
          "named": true
        }
      ]
    }
  },
  {
    "type": "link_when",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "link_block",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "link_block",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "c_string_literal",
          "named": true
        },
        {
          "type": "character_literal",
          "named": true
        },
        {
          "type": "float_literal",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        },
        {
          "type": "nil_literal",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "match_arm",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "guard": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "pattern": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "match_pattern",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "match_expression",
    "named": true,
    "fields": {
      "binding": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "subject": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "match_arm",
          "named": true
        }
      ]
    }
  },
  {
    "type": "match_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "match_pattern_term",
          "named": true
        }
      ]
    }
  },
  {
    "type": "match_pattern_atom",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "literal",
          "named": true
        },
        {
          "type": "variant_pattern",
          "named": true
        },
        {
          "type": "wildcard",
          "named": true
        }
      ]
    }
  },
  {
    "type": "match_pattern_term",
    "named": true,
    "fields": {
      "end": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "literal",
            "named": true
          }
        ]
      },
      "start": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "literal",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "match_pattern_atom",
          "named": true
        }
      ]
    }
  },
  {
    "type": "module_declaration",
    "named": true,
    "fields": {
      "attribute": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "attribute",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "module_path",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "module_path",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "multi_binding_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "named_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type_arguments",
          "named": true
        },
        {
          "type": "type_path",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ordinary_attribute",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "attribute_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parameter",
    "named": true,
    "fields": {
      "default": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "parameter_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parameter_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "parameter",
          "named": true
        },
        {
          "type": "receiver_parameter",
          "named": true
        },
        {
          "type": "type_parameter",
          "named": true
        },
        {
          "type": "variadic_parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parameter_name",
    "named": true,
    "fields": {
      "default": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "parenthesized_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pattern_binding",
    "named": true,
    "fields": {
      "field": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "payload_field",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pointer_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "receiver_parameter",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "reference_expression",
    "named": true,
    "fields": {
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "representation_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "builtin_name",
          "named": true
        },
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "return_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "return_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "sequence_literal",
    "named": true,
    "fields": {
      "count": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "slice_expression",
    "named": true,
    "fields": {
      "end": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "start": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "slice_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "source_file",
    "named": true,
    "root": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "binding_declaration",
          "named": true
        },
        {
          "type": "compile_time_when",
          "named": true
        },
        {
          "type": "compiler_assert_directive",
          "named": true
        },
        {
          "type": "compiler_error_directive",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "import_declaration",
          "named": true
        },
        {
          "type": "module_declaration",
          "named": true
        },
        {
          "type": "multi_binding_declaration",
          "named": true
        },
        {
          "type": "type_definition",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "escape_sequence",
          "named": true
        },
        {
          "type": "string_content",
          "named": true
        }
      ]
    }
  },
  {
    "type": "struct_field",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "union_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "struct_literal",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "field_expression",
            "named": true
          },
          {
            "type": "named_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "field_initializer",
          "named": true
        },
        {
          "type": "flag_initializer",
          "named": true
        }
      ]
    }
  },
  {
    "type": "struct_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "struct_field",
          "named": true
        }
      ]
    }
  },
  {
    "type": "trait_method",
    "named": true,
    "fields": {
      "body": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "=",
            "named": false
          },
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "receiver": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "receiver_parameter",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "return_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "trait_parameter",
          "named": true
        },
        {
          "type": "type_parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "trait_parameter",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "trait_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "trait_method",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_arguments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_definition",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "type_parameters": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_parameter_list",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "type_identifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "type_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_parameter",
    "named": true,
    "fields": {
      "constraint": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "type_parameter_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type_parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_path",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "unary_expression",
    "named": true,
    "fields": {
      "operand": {
        "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": "union_field",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "union_type",
    "named": true,
    "fields": {
      "tag": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "auto_attribute",
            "named": true
          },
          {
            "type": "type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "union_field",
          "named": true
        },
        {
          "type": "union_variant",
          "named": true
        }
      ]
    }
  },
  {
    "type": "union_variant",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "payload_field",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variadic_parameter",
    "named": true,
    "fields": {}
  },
  {
    "type": "variant_pattern",
    "named": true,
    "fields": {
      "variant": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "pattern_binding",
          "named": true
        }
      ]
    }
  },
  {
    "type": "when_expression",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "when_expression_block",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "when_expression_block",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "when_expression_block",
    "named": true,
    "fields": {
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "compiler_error_directive",
            "named": true
          },
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "when_type",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "when_type_block",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "when_type_block",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "when_type_block",
    "named": true,
    "fields": {
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "compiler_error_directive",
            "named": true
          },
          {
            "type": "type",
            "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": "alias",
    "named": false
  },
  {
    "type": "as",
    "named": false
  },
  {
    "type": "assembly_keyword",
    "named": true
  },
  {
    "type": "block_comment",
    "named": true,
    "extra": true
  },
  {
    "type": "break_statement",
    "named": true
  },
  {
    "type": "builtin_name",
    "named": true
  },
  {
    "type": "c\"",
    "named": false
  },
  {
    "type": "continue_statement",
    "named": true
  },
  {
    "type": "defer",
    "named": false
  },
  {
    "type": "dyn",
    "named": false
  },
  {
    "type": "else",
    "named": false
  },
  {
    "type": "enum",
    "named": false
  },
  {
    "type": "escape_sequence",
    "named": true
  },
  {
    "type": "false",
    "named": false
  },
  {
    "type": "float_literal",
    "named": true
  },
  {
    "type": "for",
    "named": false
  },
  {
    "type": "identifier",
    "named": true
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "import",
    "named": false
  },
  {
    "type": "in",
    "named": false
  },
  {
    "type": "integer_literal",
    "named": true
  },
  {
    "type": "let",
    "named": false
  },
  {
    "type": "line_comment",
    "named": true,
    "extra": true
  },
  {
    "type": "link_kind",
    "named": true
  },
  {
    "type": "match",
    "named": false
  },
  {
    "type": "module",
    "named": false
  },
  {
    "type": "mut",
    "named": false
  },
  {
    "type": "nil_literal",
    "named": true
  },
  {
    "type": "no_initializer",
    "named": true
  },
  {
    "type": "opaque_type",
    "named": true
  },
  {
    "type": "pub",
    "named": false
  },
  {
    "type": "return",
    "named": false
  },
  {
    "type": "string_content",
    "named": true
  },
  {
    "type": "struct",
    "named": false
  },
  {
    "type": "trait",
    "named": false
  },
  {
    "type": "true",
    "named": false
  },
  {
    "type": "type",
    "named": false
  },
  {
    "type": "type_keyword",
    "named": true
  },
  {
    "type": "union",
    "named": false
  },
  {
    "type": "when",
    "named": false
  },
  {
    "type": "wildcard",
    "named": true
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "|=",
    "named": false
  },
  {
    "type": "||",
    "named": false
  },
  {
    "type": "}",
    "named": false
  },
  {
    "type": "~",
    "named": false
  }
]