[
  {
    "type": "declaration",
    "named": true,
    "subtypes": [
      {
        "type": "class_declaration",
        "named": true
      },
      {
        "type": "function_declaration",
        "named": true
      },
      {
        "type": "interface_declaration",
        "named": true
      },
      {
        "type": "typedef_declaration",
        "named": true
      },
      {
        "type": "variable_declaration",
        "named": true
      }
    ]
  },
  {
    "type": "access_identifiers",
    "named": true,
    "fields": {}
  },
  {
    "type": "array",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "cast_expression",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "runtime_type_check_expression",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript_expression",
          "named": true
        },
        {
          "type": "switch_expression",
          "named": true
        },
        {
          "type": "type_trace_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "case_statement",
          "named": true
        },
        {
          "type": "cast_expression",
          "named": true
        },
        {
          "type": "conditional_statement",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "import_statement",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        },
        {
          "type": "package_statement",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "preprocessor_statement",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "runtime_type_check_expression",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript_expression",
          "named": true
        },
        {
          "type": "switch_expression",
          "named": true
        },
        {
          "type": "throw_statement",
          "named": true
        },
        {
          "type": "type_trace_expression",
          "named": true
        },
        {
          "type": "using_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "bool",
    "named": true,
    "fields": {}
  },
  {
    "type": "call_expression",
    "named": true,
    "fields": {
      "arguments_list": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "array",
            "named": true
          },
          {
            "type": "bool",
            "named": true
          },
          {
            "type": "break",
            "named": false
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "cast_expression",
            "named": true
          },
          {
            "type": "continue",
            "named": false
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "map",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          },
          {
            "type": "null",
            "named": true
          },
          {
            "type": "object",
            "named": true
          },
          {
            "type": "operator",
            "named": true
          },
          {
            "type": "pair",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "return",
            "named": false
          },
          {
            "type": "runtime_type_check_expression",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "subscript_expression",
            "named": true
          },
          {
            "type": "switch_expression",
            "named": true
          },
          {
            "type": "type_trace_expression",
            "named": true
          },
          {
            "type": "untyped",
            "named": false
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "type_params",
          "named": true
        }
      ]
    }
  },
  {
    "type": "case_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_rhs_expression",
          "named": true
        },
        {
          "type": "array",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "cast_expression",
          "named": true
        },
        {
          "type": "conditional_statement",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "import_statement",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        },
        {
          "type": "package_statement",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "preprocessor_statement",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "runtime_type_check_expression",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript_expression",
          "named": true
        },
        {
          "type": "switch_expression",
          "named": true
        },
        {
          "type": "throw_statement",
          "named": true
        },
        {
          "type": "type_trace_expression",
          "named": true
        },
        {
          "type": "using_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "cast_expression",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "string",
          "named": true
        }
      ]
    }
  },
  {
    "type": "class_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "interface_name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      },
      "super_class_name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "metadata",
          "named": true
        },
        {
          "type": "type_params",
          "named": true
        }
      ]
    }
  },
  {
    "type": "conditional_statement",
    "named": true,
    "fields": {
      "arguments_list": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "array",
            "named": true
          },
          {
            "type": "bool",
            "named": true
          },
          {
            "type": "break",
            "named": false
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "cast_expression",
            "named": true
          },
          {
            "type": "continue",
            "named": false
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "map",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          },
          {
            "type": "null",
            "named": true
          },
          {
            "type": "object",
            "named": true
          },
          {
            "type": "operator",
            "named": true
          },
          {
            "type": "pair",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "return",
            "named": false
          },
          {
            "type": "runtime_type_check_expression",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "subscript_expression",
            "named": true
          },
          {
            "type": "switch_expression",
            "named": true
          },
          {
            "type": "type_trace_expression",
            "named": true
          },
          {
            "type": "untyped",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "if",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "block",
          "named": true
        }
      ]
    }
  },
  {
    "type": "float",
    "named": true,
    "fields": {}
  },
  {
    "type": "function_arg",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "function_arg",
          "named": true
        },
        {
          "type": "metadata",
          "named": true
        },
        {
          "type": "type_params",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_type",
    "named": true,
    "fields": {
      "return_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "identifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "import_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "package_name",
          "named": true
        },
        {
          "type": "type_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "integer",
    "named": true,
    "fields": {}
  },
  {
    "type": "interface_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "interface_name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "type_params",
          "named": true
        }
      ]
    }
  },
  {
    "type": "interpolation",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "cast_expression",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "runtime_type_check_expression",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript_expression",
          "named": true
        },
        {
          "type": "switch_expression",
          "named": true
        },
        {
          "type": "type_trace_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "map",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "pair",
          "named": true
        }
      ]
    }
  },
  {
    "type": "member_expression",
    "named": true,
    "fields": {
      "literal": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "array",
            "named": true
          },
          {
            "type": "bool",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "map",
            "named": true
          },
          {
            "type": "null",
            "named": true
          },
          {
            "type": "object",
            "named": true
          },
          {
            "type": "pair",
            "named": true
          },
          {
            "type": "string",
            "named": true
          }
        ]
      },
      "member": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "this",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "operator",
          "named": true
        }
      ]
    }
  },
  {
    "type": "metadata",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "cast_expression",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "runtime_type_check_expression",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript_expression",
          "named": true
        },
        {
          "type": "switch_expression",
          "named": true
        },
        {
          "type": "type_trace_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "module",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "cast_expression",
          "named": true
        },
        {
          "type": "conditional_statement",
          "named": true
        },
        {
          "type": "declaration",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "import_statement",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        },
        {
          "type": "package_statement",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "preprocessor_statement",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "runtime_type_check_expression",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript_expression",
          "named": true
        },
        {
          "type": "switch_expression",
          "named": true
        },
        {
          "type": "throw_statement",
          "named": true
        },
        {
          "type": "type_trace_expression",
          "named": true
        },
        {
          "type": "using_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "null",
    "named": true,
    "fields": {}
  },
  {
    "type": "object",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "pair",
          "named": true
        }
      ]
    }
  },
  {
    "type": "operator",
    "named": true,
    "fields": {}
  },
  {
    "type": "package_name",
    "named": true,
    "fields": {}
  },
  {
    "type": "package_statement",
    "named": true,
    "fields": {
      "name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": ".",
            "named": false
          },
          {
            "type": "package_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "pair",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "cast_expression",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "runtime_type_check_expression",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript_expression",
          "named": true
        },
        {
          "type": "switch_expression",
          "named": true
        },
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_trace_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "preprocessor_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "cast_expression",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "runtime_type_check_expression",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript_expression",
          "named": true
        },
        {
          "type": "switch_expression",
          "named": true
        },
        {
          "type": "type_trace_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "range_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        }
      ]
    }
  },
  {
    "type": "runtime_type_check_expression",
    "named": true,
    "fields": {}
  },
  {
    "type": "string",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "escape_sequence",
          "named": true
        },
        {
          "type": "interpolation",
          "named": true
        }
      ]
    }
  },
  {
    "type": "subscript_expression",
    "named": true,
    "fields": {
      "index": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": "array",
            "named": true
          },
          {
            "type": "bool",
            "named": true
          },
          {
            "type": "break",
            "named": false
          },
          {
            "type": "call_expression",
            "named": true
          },
          {
            "type": "cast_expression",
            "named": true
          },
          {
            "type": "continue",
            "named": false
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "map",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          },
          {
            "type": "null",
            "named": true
          },
          {
            "type": "object",
            "named": true
          },
          {
            "type": "operator",
            "named": true
          },
          {
            "type": "pair",
            "named": true
          },
          {
            "type": "range_expression",
            "named": true
          },
          {
            "type": "return",
            "named": false
          },
          {
            "type": "runtime_type_check_expression",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "subscript_expression",
            "named": true
          },
          {
            "type": "switch_expression",
            "named": true
          },
          {
            "type": "type_trace_expression",
            "named": true
          },
          {
            "type": "untyped",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "cast_expression",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "runtime_type_check_expression",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript_expression",
          "named": true
        },
        {
          "type": "switch_expression",
          "named": true
        },
        {
          "type": "type_trace_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "switch_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "cast_expression",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "runtime_type_check_expression",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript_expression",
          "named": true
        },
        {
          "type": "switch_expression",
          "named": true
        },
        {
          "type": "type_trace_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "throw_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "cast_expression",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "runtime_type_check_expression",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript_expression",
          "named": true
        },
        {
          "type": "switch_expression",
          "named": true
        },
        {
          "type": "type_trace_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type",
    "named": true,
    "fields": {
      "built_in": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type_name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "function_type",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "type_params",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_check",
    "named": false,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_name",
    "named": true,
    "fields": {}
  },
  {
    "type": "type_params",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_trace_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "array",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "string",
          "named": true
        }
      ]
    }
  },
  {
    "type": "typedef_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "block",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "metadata",
          "named": true
        },
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_params",
          "named": true
        }
      ]
    }
  },
  {
    "type": "using_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "package_name",
          "named": true
        },
        {
          "type": "type_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variable_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "member_expression",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "access_identifiers",
          "named": true
        },
        {
          "type": "array",
          "named": true
        },
        {
          "type": "bool",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "cast_expression",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "map",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "metadata",
          "named": true
        },
        {
          "type": "null",
          "named": true
        },
        {
          "type": "object",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        },
        {
          "type": "pair",
          "named": true
        },
        {
          "type": "range_expression",
          "named": true
        },
        {
          "type": "runtime_type_check_expression",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript_expression",
          "named": true
        },
        {
          "type": "switch_expression",
          "named": true
        },
        {
          "type": "type_trace_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "!",
    "named": false
  },
  {
    "type": "!=",
    "named": false
  },
  {
    "type": "#",
    "named": false
  },
  {
    "type": "$",
    "named": false
  },
  {
    "type": "$type",
    "named": false
  },
  {
    "type": "${",
    "named": false
  },
  {
    "type": "%",
    "named": false
  },
  {
    "type": "&",
    "named": false
  },
  {
    "type": "&&",
    "named": false
  },
  {
    "type": "(",
    "named": false
  },
  {
    "type": ")",
    "named": false
  },
  {
    "type": "*",
    "named": false
  },
  {
    "type": "+",
    "named": false
  },
  {
    "type": "++",
    "named": false
  },
  {
    "type": ",",
    "named": false
  },
  {
    "type": "-",
    "named": false
  },
  {
    "type": "--",
    "named": false
  },
  {
    "type": "->",
    "named": false
  },
  {
    "type": ".",
    "named": false
  },
  {
    "type": "/",
    "named": false
  },
  {
    "type": ":",
    "named": false
  },
  {
    "type": "<",
    "named": false
  },
  {
    "type": "<<",
    "named": false
  },
  {
    "type": "<=",
    "named": false
  },
  {
    "type": "=",
    "named": false
  },
  {
    "type": "==",
    "named": false
  },
  {
    "type": "=>",
    "named": false
  },
  {
    "type": ">",
    "named": false
  },
  {
    "type": ">=",
    "named": false
  },
  {
    "type": ">>",
    "named": false
  },
  {
    "type": ">>>",
    "named": false
  },
  {
    "type": "?",
    "named": false
  },
  {
    "type": "??",
    "named": false
  },
  {
    "type": "@",
    "named": false
  },
  {
    "type": "@:",
    "named": false
  },
  {
    "type": "Bool",
    "named": false
  },
  {
    "type": "Float",
    "named": false
  },
  {
    "type": "Int",
    "named": false
  },
  {
    "type": "Null",
    "named": false
  },
  {
    "type": "Void",
    "named": false
  },
  {
    "type": "[",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "^",
    "named": false
  },
  {
    "type": "_rhs_expression",
    "named": true
  },
  {
    "type": "abstract",
    "named": false
  },
  {
    "type": "break",
    "named": false
  },
  {
    "type": "case",
    "named": false
  },
  {
    "type": "cast",
    "named": false
  },
  {
    "type": "catch",
    "named": false
  },
  {
    "type": "class",
    "named": false
  },
  {
    "type": "comment",
    "named": true
  },
  {
    "type": "continue",
    "named": false
  },
  {
    "type": "default",
    "named": false
  },
  {
    "type": "do",
    "named": false
  },
  {
    "type": "dynamic",
    "named": false
  },
  {
    "type": "else",
    "named": false
  },
  {
    "type": "else if",
    "named": false
  },
  {
    "type": "enum",
    "named": false
  },
  {
    "type": "escape_sequence",
    "named": true
  },
  {
    "type": "extends",
    "named": false
  },
  {
    "type": "extern",
    "named": false
  },
  {
    "type": "false",
    "named": false
  },
  {
    "type": "final",
    "named": false
  },
  {
    "type": "for",
    "named": false
  },
  {
    "type": "function",
    "named": false
  },
  {
    "type": "get",
    "named": false
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "implements",
    "named": false
  },
  {
    "type": "import",
    "named": false
  },
  {
    "type": "in",
    "named": false
  },
  {
    "type": "inline",
    "named": false
  },
  {
    "type": "interface",
    "named": false
  },
  {
    "type": "macro",
    "named": false
  },
  {
    "type": "never",
    "named": false
  },
  {
    "type": "new",
    "named": false
  },
  {
    "type": "null",
    "named": false
  },
  {
    "type": "operator",
    "named": false
  },
  {
    "type": "overload",
    "named": false
  },
  {
    "type": "override",
    "named": false
  },
  {
    "type": "package",
    "named": false
  },
  {
    "type": "private",
    "named": false
  },
  {
    "type": "public",
    "named": false
  },
  {
    "type": "return",
    "named": false
  },
  {
    "type": "set",
    "named": false
  },
  {
    "type": "static",
    "named": false
  },
  {
    "type": "switch",
    "named": false
  },
  {
    "type": "this",
    "named": false
  },
  {
    "type": "throw",
    "named": false
  },
  {
    "type": "true",
    "named": false
  },
  {
    "type": "try",
    "named": false
  },
  {
    "type": "typedef",
    "named": false
  },
  {
    "type": "untyped",
    "named": false
  },
  {
    "type": "using",
    "named": false
  },
  {
    "type": "var",
    "named": false
  },
  {
    "type": "while",
    "named": false
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "||",
    "named": false
  },
  {
    "type": "}",
    "named": false
  },
  {
    "type": "~",
    "named": false
  }
]