[
{
"type": "_arg",
"named": true,
"subtypes": [
{
"type": "_primary",
"named": true
},
{
"type": "assignment",
"named": true
},
{
"type": "binary",
"named": true
},
{
"type": "conditional",
"named": true
},
{
"type": "operator_assignment",
"named": true
},
{
"type": "range",
"named": true
},
{
"type": "unary",
"named": true
}
]
},
{
"type": "_call_operator",
"named": true,
"subtypes": [
{
"type": "&.",
"named": false
},
{
"type": ".",
"named": false
},
{
"type": "::",
"named": false
}
]
},
{
"type": "_expression",
"named": true,
"subtypes": [
{
"type": "_arg",
"named": true
},
{
"type": "assignment",
"named": true
},
{
"type": "binary",
"named": true
},
{
"type": "break",
"named": true
},
{
"type": "call",
"named": true
},
{
"type": "match_pattern",
"named": true
},
{
"type": "next",
"named": true
},
{
"type": "operator_assignment",
"named": true
},
{
"type": "return",
"named": true
},
{
"type": "test_pattern",
"named": true
},
{
"type": "unary",
"named": true
},
{
"type": "yield",
"named": true
}
]
},
{
"type": "_lhs",
"named": true,
"subtypes": [
{
"type": "_variable",
"named": true
},
{
"type": "call",
"named": true
},
{
"type": "element_reference",
"named": true
},
{
"type": "false",
"named": true
},
{
"type": "nil",
"named": true
},
{
"type": "scope_resolution",
"named": true
},
{
"type": "true",
"named": true
}
]
},
{
"type": "_method_name",
"named": true,
"subtypes": [
{
"type": "_nonlocal_variable",
"named": true
},
{
"type": "constant",
"named": true
},
{
"type": "delimited_symbol",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "operator",
"named": true
},
{
"type": "setter",
"named": true
},
{
"type": "simple_symbol",
"named": true
}
]
},
{
"type": "_nonlocal_variable",
"named": true,
"subtypes": [
{
"type": "class_variable",
"named": true
},
{
"type": "global_variable",
"named": true
},
{
"type": "instance_variable",
"named": true
}
]
},
{
"type": "_pattern_constant",
"named": true,
"subtypes": [
{
"type": "constant",
"named": true
},
{
"type": "scope_resolution",
"named": true
}
]
},
{
"type": "_pattern_expr",
"named": true,
"subtypes": [
{
"type": "_pattern_expr_basic",
"named": true
},
{
"type": "alternative_pattern",
"named": true
},
{
"type": "as_pattern",
"named": true
}
]
},
{
"type": "_pattern_expr_basic",
"named": true,
"subtypes": [
{
"type": "_pattern_constant",
"named": true
},
{
"type": "_pattern_primitive",
"named": true
},
{
"type": "array_pattern",
"named": true
},
{
"type": "expression_reference_pattern",
"named": true
},
{
"type": "find_pattern",
"named": true
},
{
"type": "hash_pattern",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "parenthesized_pattern",
"named": true
},
{
"type": "range",
"named": true
},
{
"type": "variable_reference_pattern",
"named": true
}
]
},
{
"type": "_pattern_primitive",
"named": true,
"subtypes": [
{
"type": "_simple_numeric",
"named": true
},
{
"type": "delimited_symbol",
"named": true
},
{
"type": "encoding",
"named": true
},
{
"type": "false",
"named": true
},
{
"type": "file",
"named": true
},
{
"type": "heredoc_beginning",
"named": true
},
{
"type": "lambda",
"named": true
},
{
"type": "line",
"named": true
},
{
"type": "nil",
"named": true
},
{
"type": "regex",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "simple_symbol",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "string_array",
"named": true
},
{
"type": "subshell",
"named": true
},
{
"type": "symbol_array",
"named": true
},
{
"type": "true",
"named": true
},
{
"type": "unary",
"named": true
}
]
},
{
"type": "_pattern_top_expr_body",
"named": true,
"subtypes": [
{
"type": "_pattern_expr",
"named": true
},
{
"type": "array_pattern",
"named": true
},
{
"type": "find_pattern",
"named": true
},
{
"type": "hash_pattern",
"named": true
}
]
},
{
"type": "_primary",
"named": true,
"subtypes": [
{
"type": "_lhs",
"named": true
},
{
"type": "_simple_numeric",
"named": true
},
{
"type": "array",
"named": true
},
{
"type": "begin",
"named": true
},
{
"type": "break",
"named": true
},
{
"type": "call",
"named": true
},
{
"type": "case",
"named": true
},
{
"type": "case_match",
"named": true
},
{
"type": "chained_string",
"named": true
},
{
"type": "character",
"named": true
},
{
"type": "class",
"named": true
},
{
"type": "delimited_symbol",
"named": true
},
{
"type": "for",
"named": true
},
{
"type": "hash",
"named": true
},
{
"type": "heredoc_beginning",
"named": true
},
{
"type": "if",
"named": true
},
{
"type": "lambda",
"named": true
},
{
"type": "method",
"named": true
},
{
"type": "module",
"named": true
},
{
"type": "next",
"named": true
},
{
"type": "parenthesized_statements",
"named": true
},
{
"type": "redo",
"named": true
},
{
"type": "regex",
"named": true
},
{
"type": "retry",
"named": true
},
{
"type": "return",
"named": true
},
{
"type": "simple_symbol",
"named": true
},
{
"type": "singleton_class",
"named": true
},
{
"type": "singleton_method",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "string_array",
"named": true
},
{
"type": "subshell",
"named": true
},
{
"type": "symbol_array",
"named": true
},
{
"type": "unary",
"named": true
},
{
"type": "unless",
"named": true
},
{
"type": "until",
"named": true
},
{
"type": "while",
"named": true
},
{
"type": "yield",
"named": true
}
]
},
{
"type": "_simple_numeric",
"named": true,
"subtypes": [
{
"type": "complex",
"named": true
},
{
"type": "float",
"named": true
},
{
"type": "integer",
"named": true
},
{
"type": "rational",
"named": true
}
]
},
{
"type": "_statement",
"named": true,
"subtypes": [
{
"type": "_expression",
"named": true
},
{
"type": "alias",
"named": true
},
{
"type": "begin_block",
"named": true
},
{
"type": "end_block",
"named": true
},
{
"type": "if_modifier",
"named": true
},
{
"type": "rescue_modifier",
"named": true
},
{
"type": "undef",
"named": true
},
{
"type": "unless_modifier",
"named": true
},
{
"type": "until_modifier",
"named": true
},
{
"type": "while_modifier",
"named": true
}
]
},
{
"type": "_variable",
"named": true,
"subtypes": [
{
"type": "_nonlocal_variable",
"named": true
},
{
"type": "constant",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "super",
"named": true
}
]
},
{
"type": "alias",
"named": true,
"fields": {
"alias": {
"multiple": false,
"required": true,
"types": [
{
"type": "_method_name",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "_method_name",
"named": true
}
]
}
}
},
{
"type": "alternative_pattern",
"named": true,
"fields": {
"alternatives": {
"multiple": true,
"required": true,
"types": [
{
"type": "_pattern_expr_basic",
"named": true
}
]
}
}
},
{
"type": "argument_list",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "block_argument",
"named": true
},
{
"type": "forward_argument",
"named": true
},
{
"type": "hash_splat_argument",
"named": true
},
{
"type": "pair",
"named": true
},
{
"type": "splat_argument",
"named": true
}
]
}
},
{
"type": "array",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "block_argument",
"named": true
},
{
"type": "forward_argument",
"named": true
},
{
"type": "hash_splat_argument",
"named": true
},
{
"type": "pair",
"named": true
},
{
"type": "splat_argument",
"named": true
}
]
}
},
{
"type": "array_pattern",
"named": true,
"fields": {
"class": {
"multiple": false,
"required": false,
"types": [
{
"type": "_pattern_constant",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_pattern_expr",
"named": true
},
{
"type": "splat_parameter",
"named": true
}
]
}
},
{
"type": "as_pattern",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "_pattern_expr",
"named": true
}
]
}
}
},
{
"type": "assignment",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "_lhs",
"named": true
},
{
"type": "left_assignment_list",
"named": true
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "rescue_modifier",
"named": true
},
{
"type": "right_assignment_list",
"named": true
},
{
"type": "splat_argument",
"named": true
}
]
}
}
},
{
"type": "bare_string",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "escape_sequence",
"named": true
},
{
"type": "interpolation",
"named": true
},
{
"type": "string_content",
"named": true
}
]
}
},
{
"type": "bare_symbol",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "escape_sequence",
"named": true
},
{
"type": "interpolation",
"named": true
},
{
"type": "string_content",
"named": true
}
]
}
},
{
"type": "begin",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
},
{
"type": "else",
"named": true
},
{
"type": "empty_statement",
"named": true
},
{
"type": "ensure",
"named": true
},
{
"type": "rescue",
"named": true
}
]
}
},
{
"type": "begin_block",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
},
{
"type": "empty_statement",
"named": true
}
]
}
},
{
"type": "binary",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "_simple_numeric",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!=",
"named": false
},
{
"type": "!~",
"named": false
},
{
"type": "%",
"named": false
},
{
"type": "&",
"named": false
},
{
"type": "&&",
"named": false
},
{
"type": "*",
"named": false
},
{
"type": "**",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "/",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": "<<",
"named": false
},
{
"type": "<=",
"named": false
},
{
"type": "<=>",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": "===",
"named": false
},
{
"type": "=~",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": ">=",
"named": false
},
{
"type": ">>",
"named": false
},
{
"type": "^",
"named": false
},
{
"type": "and",
"named": false
},
{
"type": "or",
"named": false
},
{
"type": "|",
"named": false
},
{
"type": "||",
"named": false
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
}
]
}
}
},
{
"type": "block",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "block_body",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "block_parameters",
"named": true
}
]
}
}
},
{
"type": "block_argument",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "_arg",
"named": true
}
]
}
},
{
"type": "block_body",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_statement",
"named": true
},
{
"type": "empty_statement",
"named": true
}
]
}
},
{
"type": "block_parameter",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "block_parameters",
"named": true,
"fields": {
"locals": {
"multiple": true,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "block_parameter",
"named": true
},
{
"type": "destructured_parameter",
"named": true
},
{
"type": "forward_parameter",
"named": true
},
{
"type": "hash_splat_nil",
"named": true
},
{
"type": "hash_splat_parameter",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "keyword_parameter",
"named": true
},
{
"type": "optional_parameter",
"named": true
},
{
"type": "splat_parameter",
"named": true
}
]
}
},
{
"type": "body_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_statement",
"named": true
},
{
"type": "else",
"named": true
},
{
"type": "empty_statement",
"named": true
},
{
"type": "ensure",
"named": true
},
{
"type": "rescue",
"named": true
}
]
}
},
{
"type": "break",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "argument_list",
"named": true
}
]
}
},
{
"type": "call",
"named": true,
"fields": {
"arguments": {
"multiple": false,
"required": false,
"types": [
{
"type": "argument_list",
"named": true
}
]
},
"block": {
"multiple": false,
"required": false,
"types": [
{
"type": "block",
"named": true
},
{
"type": "do_block",
"named": true
}
]
},
"method": {
"multiple": false,
"required": false,
"types": [
{
"type": "_variable",
"named": true
},
{
"type": "operator",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": false,
"types": [
{
"type": "_call_operator",
"named": true
}
]
},
"receiver": {
"multiple": false,
"required": false,
"types": [
{
"type": "_primary",
"named": true
}
]
}
}
},
{
"type": "case",
"named": true,
"fields": {
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "else",
"named": true
},
{
"type": "when",
"named": true
}
]
}
},
{
"type": "case_match",
"named": true,
"fields": {
"clauses": {
"multiple": true,
"required": true,
"types": [
{
"type": "in_clause",
"named": true
}
]
},
"else": {
"multiple": false,
"required": false,
"types": [
{
"type": "else",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
}
}
},
{
"type": "chained_string",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "string",
"named": true
}
]
}
},
{
"type": "class",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "body_statement",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "constant",
"named": true
},
{
"type": "scope_resolution",
"named": true
}
]
},
"superclass": {
"multiple": false,
"required": false,
"types": [
{
"type": "superclass",
"named": true
}
]
}
}
},
{
"type": "complex",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "float",
"named": true
},
{
"type": "integer",
"named": true
},
{
"type": "rational",
"named": true
}
]
}
},
{
"type": "conditional",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": true,
"types": [
{
"type": "_arg",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_arg",
"named": true
}
]
},
"consequence": {
"multiple": false,
"required": true,
"types": [
{
"type": "_arg",
"named": true
}
]
}
}
},
{
"type": "constant",
"named": true,
"fields": {}
},
{
"type": "delimited_symbol",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "escape_sequence",
"named": true
},
{
"type": "interpolation",
"named": true
},
{
"type": "string_content",
"named": true
}
]
}
},
{
"type": "destructured_left_assignment",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_lhs",
"named": true
},
{
"type": "destructured_left_assignment",
"named": true
},
{
"type": "rest_assignment",
"named": true
}
]
}
},
{
"type": "destructured_parameter",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "block_parameter",
"named": true
},
{
"type": "destructured_parameter",
"named": true
},
{
"type": "forward_parameter",
"named": true
},
{
"type": "hash_splat_nil",
"named": true
},
{
"type": "hash_splat_parameter",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "keyword_parameter",
"named": true
},
{
"type": "optional_parameter",
"named": true
},
{
"type": "splat_parameter",
"named": true
}
]
}
},
{
"type": "do",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
},
{
"type": "empty_statement",
"named": true
}
]
}
},
{
"type": "do_block",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "body_statement",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "block_parameters",
"named": true
}
]
}
}
},
{
"type": "element_reference",
"named": true,
"fields": {
"block": {
"multiple": false,
"required": false,
"types": [
{
"type": "block",
"named": true
},
{
"type": "do_block",
"named": true
}
]
},
"object": {
"multiple": false,
"required": true,
"types": [
{
"type": "_primary",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "block_argument",
"named": true
},
{
"type": "forward_argument",
"named": true
},
{
"type": "hash_splat_argument",
"named": true
},
{
"type": "pair",
"named": true
},
{
"type": "splat_argument",
"named": true
}
]
}
},
{
"type": "else",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
},
{
"type": "empty_statement",
"named": true
}
]
}
},
{
"type": "elsif",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": false,
"types": [
{
"type": "else",
"named": true
},
{
"type": "elsif",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
},
"consequence": {
"multiple": false,
"required": false,
"types": [
{
"type": "then",
"named": true
}
]
}
}
},
{
"type": "empty_statement",
"named": true,
"fields": {}
},
{
"type": "end_block",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
},
{
"type": "empty_statement",
"named": true
}
]
}
},
{
"type": "ensure",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
},
{
"type": "empty_statement",
"named": true
}
]
}
},
{
"type": "exception_variable",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "_lhs",
"named": true
}
]
}
},
{
"type": "exceptions",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_arg",
"named": true
},
{
"type": "splat_argument",
"named": true
}
]
}
},
{
"type": "expression_reference_pattern",
"named": true,
"fields": {
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
}
]
}
}
},
{
"type": "find_pattern",
"named": true,
"fields": {
"class": {
"multiple": false,
"required": false,
"types": [
{
"type": "_pattern_constant",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_pattern_expr",
"named": true
},
{
"type": "splat_parameter",
"named": true
}
]
}
},
{
"type": "for",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "do",
"named": true
}
]
},
"pattern": {
"multiple": false,
"required": true,
"types": [
{
"type": "_lhs",
"named": true
},
{
"type": "left_assignment_list",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "in",
"named": true
}
]
}
}
},
{
"type": "forward_argument",
"named": true,
"fields": {}
},
{
"type": "forward_parameter",
"named": true,
"fields": {}
},
{
"type": "hash",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "hash_splat_argument",
"named": true
},
{
"type": "pair",
"named": true
}
]
}
},
{
"type": "hash_key_symbol",
"named": true,
"fields": {}
},
{
"type": "hash_pattern",
"named": true,
"fields": {
"class": {
"multiple": false,
"required": false,
"types": [
{
"type": "_pattern_constant",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "hash_splat_nil",
"named": true
},
{
"type": "hash_splat_parameter",
"named": true
},
{
"type": "keyword_pattern",
"named": true
}
]
}
},
{
"type": "hash_splat_argument",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "_arg",
"named": true
}
]
}
},
{
"type": "hash_splat_nil",
"named": true,
"fields": {}
},
{
"type": "hash_splat_parameter",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "heredoc_body",
"named": true,
"extra": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "escape_sequence",
"named": true
},
{
"type": "heredoc_content",
"named": true
},
{
"type": "heredoc_end",
"named": true
},
{
"type": "interpolation",
"named": true
}
]
}
},
{
"type": "identifier",
"named": true,
"fields": {}
},
{
"type": "if",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": false,
"types": [
{
"type": "else",
"named": true
},
{
"type": "elsif",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
},
"consequence": {
"multiple": false,
"required": false,
"types": [
{
"type": "then",
"named": true
}
]
}
}
},
{
"type": "if_guard",
"named": true,
"fields": {
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
}
]
}
}
},
{
"type": "if_modifier",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
}
]
}
}
},
{
"type": "in",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "_arg",
"named": true
}
]
}
},
{
"type": "in_clause",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "then",
"named": true
}
]
},
"guard": {
"multiple": false,
"required": false,
"types": [
{
"type": "if_guard",
"named": true
},
{
"type": "unless_guard",
"named": true
}
]
},
"pattern": {
"multiple": false,
"required": true,
"types": [
{
"type": "_pattern_top_expr_body",
"named": true
}
]
}
}
},
{
"type": "interpolation",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_nonlocal_variable",
"named": true
},
{
"type": "_statement",
"named": true
},
{
"type": "empty_statement",
"named": true
}
]
}
},
{
"type": "keyword_parameter",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "_arg",
"named": true
}
]
}
}
},
{
"type": "keyword_pattern",
"named": true,
"fields": {
"key": {
"multiple": false,
"required": true,
"types": [
{
"type": "hash_key_symbol",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "_pattern_expr",
"named": true
}
]
}
}
},
{
"type": "lambda",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "block",
"named": true
},
{
"type": "do_block",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "lambda_parameters",
"named": true
}
]
}
}
},
{
"type": "lambda_parameters",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "block_parameter",
"named": true
},
{
"type": "destructured_parameter",
"named": true
},
{
"type": "forward_parameter",
"named": true
},
{
"type": "hash_splat_nil",
"named": true
},
{
"type": "hash_splat_parameter",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "keyword_parameter",
"named": true
},
{
"type": "optional_parameter",
"named": true
},
{
"type": "splat_parameter",
"named": true
}
]
}
},
{
"type": "left_assignment_list",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_lhs",
"named": true
},
{
"type": "destructured_left_assignment",
"named": true
},
{
"type": "rest_assignment",
"named": true
}
]
}
},
{
"type": "match_pattern",
"named": true,
"fields": {
"pattern": {
"multiple": false,
"required": true,
"types": [
{
"type": "_pattern_top_expr_body",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "_arg",
"named": true
}
]
}
}
},
{
"type": "method",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "_arg",
"named": true
},
{
"type": "body_statement",
"named": true
},
{
"type": "rescue_modifier",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "_method_name",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "method_parameters",
"named": true
}
]
}
}
},
{
"type": "method_parameters",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "block_parameter",
"named": true
},
{
"type": "destructured_parameter",
"named": true
},
{
"type": "forward_parameter",
"named": true
},
{
"type": "hash_splat_nil",
"named": true
},
{
"type": "hash_splat_parameter",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "keyword_parameter",
"named": true
},
{
"type": "optional_parameter",
"named": true
},
{
"type": "splat_parameter",
"named": true
}
]
}
},
{
"type": "module",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "body_statement",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "constant",
"named": true
},
{
"type": "scope_resolution",
"named": true
}
]
}
}
},
{
"type": "next",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "argument_list",
"named": true
}
]
}
},
{
"type": "nil",
"named": true,
"fields": {}
},
{
"type": "operator",
"named": true,
"fields": {}
},
{
"type": "operator_assignment",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "_lhs",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "%=",
"named": false
},
{
"type": "&&=",
"named": false
},
{
"type": "&=",
"named": false
},
{
"type": "**=",
"named": false
},
{
"type": "*=",
"named": false
},
{
"type": "+=",
"named": false
},
{
"type": "-=",
"named": false
},
{
"type": "/=",
"named": false
},
{
"type": "<<=",
"named": false
},
{
"type": ">>=",
"named": false
},
{
"type": "^=",
"named": false
},
{
"type": "|=",
"named": false
},
{
"type": "||=",
"named": false
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "rescue_modifier",
"named": true
}
]
}
}
},
{
"type": "optional_parameter",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "_arg",
"named": true
}
]
}
}
},
{
"type": "pair",
"named": true,
"fields": {
"key": {
"multiple": false,
"required": true,
"types": [
{
"type": "_arg",
"named": true
},
{
"type": "hash_key_symbol",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "_arg",
"named": true
}
]
}
}
},
{
"type": "parenthesized_pattern",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "_pattern_expr",
"named": true
}
]
}
},
{
"type": "parenthesized_statements",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
},
{
"type": "empty_statement",
"named": true
}
]
}
},
{
"type": "pattern",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "_arg",
"named": true
},
{
"type": "splat_argument",
"named": true
}
]
}
},
{
"type": "program",
"named": true,
"root": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
},
{
"type": "empty_statement",
"named": true
},
{
"type": "uninterpreted",
"named": true
}
]
}
},
{
"type": "range",
"named": true,
"fields": {
"begin": {
"multiple": false,
"required": false,
"types": [
{
"type": "_arg",
"named": true
},
{
"type": "_pattern_primitive",
"named": true
}
]
},
"end": {
"multiple": false,
"required": false,
"types": [
{
"type": "_arg",
"named": true
},
{
"type": "_pattern_primitive",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "..",
"named": false
},
{
"type": "...",
"named": false
}
]
}
}
},
{
"type": "rational",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "float",
"named": true
},
{
"type": "integer",
"named": true
}
]
}
},
{
"type": "redo",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "argument_list",
"named": true
}
]
}
},
{
"type": "regex",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "escape_sequence",
"named": true
},
{
"type": "interpolation",
"named": true
},
{
"type": "string_content",
"named": true
}
]
}
},
{
"type": "rescue",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "then",
"named": true
}
]
},
"exceptions": {
"multiple": false,
"required": false,
"types": [
{
"type": "exceptions",
"named": true
}
]
},
"variable": {
"multiple": false,
"required": false,
"types": [
{
"type": "exception_variable",
"named": true
}
]
}
}
},
{
"type": "rescue_modifier",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
},
"handler": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
}
]
}
}
},
{
"type": "rest_assignment",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "_lhs",
"named": true
}
]
}
},
{
"type": "retry",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "argument_list",
"named": true
}
]
}
},
{
"type": "return",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "argument_list",
"named": true
}
]
}
},
{
"type": "right_assignment_list",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_arg",
"named": true
},
{
"type": "splat_argument",
"named": true
}
]
}
},
{
"type": "scope_resolution",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "constant",
"named": true
}
]
},
"scope": {
"multiple": false,
"required": false,
"types": [
{
"type": "_pattern_constant",
"named": true
},
{
"type": "_primary",
"named": true
}
]
}
}
},
{
"type": "setter",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "singleton_class",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "body_statement",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "_arg",
"named": true
}
]
}
}
},
{
"type": "singleton_method",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "_arg",
"named": true
},
{
"type": "body_statement",
"named": true
},
{
"type": "rescue_modifier",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "_method_name",
"named": true
}
]
},
"object": {
"multiple": false,
"required": true,
"types": [
{
"type": "_arg",
"named": true
},
{
"type": "_variable",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "method_parameters",
"named": true
}
]
}
}
},
{
"type": "splat_argument",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "_arg",
"named": true
}
]
}
},
{
"type": "splat_parameter",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "string",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "escape_sequence",
"named": true
},
{
"type": "interpolation",
"named": true
},
{
"type": "string_content",
"named": true
}
]
}
},
{
"type": "string_array",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "bare_string",
"named": true
}
]
}
},
{
"type": "subshell",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "escape_sequence",
"named": true
},
{
"type": "interpolation",
"named": true
},
{
"type": "string_content",
"named": true
}
]
}
},
{
"type": "superclass",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
}
]
}
},
{
"type": "symbol_array",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "bare_symbol",
"named": true
}
]
}
},
{
"type": "test_pattern",
"named": true,
"fields": {
"pattern": {
"multiple": false,
"required": true,
"types": [
{
"type": "_pattern_top_expr_body",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "_arg",
"named": true
}
]
}
}
},
{
"type": "then",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
},
{
"type": "empty_statement",
"named": true
}
]
}
},
{
"type": "unary",
"named": true,
"fields": {
"operand": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "_simple_numeric",
"named": true
},
{
"type": "parenthesized_statements",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "defined?",
"named": false
},
{
"type": "not",
"named": false
},
{
"type": "~",
"named": false
}
]
}
}
},
{
"type": "undef",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_method_name",
"named": true
}
]
}
},
{
"type": "unless",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": false,
"types": [
{
"type": "else",
"named": true
},
{
"type": "elsif",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
},
"consequence": {
"multiple": false,
"required": false,
"types": [
{
"type": "then",
"named": true
}
]
}
}
},
{
"type": "unless_guard",
"named": true,
"fields": {
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
}
]
}
}
},
{
"type": "unless_modifier",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
}
]
}
}
},
{
"type": "until",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "do",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
}
}
},
{
"type": "until_modifier",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
}
]
}
}
},
{
"type": "variable_reference_pattern",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "_nonlocal_variable",
"named": true
},
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "when",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "then",
"named": true
}
]
},
"pattern": {
"multiple": true,
"required": true,
"types": [
{
"type": "pattern",
"named": true
}
]
}
}
},
{
"type": "while",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "do",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
}
}
},
{
"type": "while_modifier",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
}
]
}
}
},
{
"type": "yield",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "argument_list",
"named": true
}
]
}
},
{
"type": "!",
"named": false
},
{
"type": "!=",
"named": false
},
{
"type": "!~",
"named": false
},
{
"type": "\"",
"named": false
},
{
"type": "#{",
"named": false
},
{
"type": "%",
"named": false
},
{
"type": "%=",
"named": false
},
{
"type": "%i(",
"named": false
},
{
"type": "%w(",
"named": false
},
{
"type": "&",
"named": false
},
{
"type": "&&",
"named": false
},
{
"type": "&&=",
"named": false
},
{
"type": "&.",
"named": false
},
{
"type": "&=",
"named": false
},
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "*",
"named": false
},
{
"type": "**",
"named": false
},
{
"type": "**=",
"named": false
},
{
"type": "*=",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "+=",
"named": false
},
{
"type": "+@",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "-=",
"named": false
},
{
"type": "->",
"named": false
},
{
"type": "-@",
"named": false
},
{
"type": ".",
"named": false
},
{
"type": "..",
"named": false
},
{
"type": "...",
"named": false
},
{
"type": "/",
"named": false
},
{
"type": "/=",
"named": false
},
{
"type": ":",
"named": false
},
{
"type": ":\"",
"named": false
},
{
"type": "::",
"named": false
},
{
"type": ";",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": "<<",
"named": false
},
{
"type": "<<=",
"named": false
},
{
"type": "<=",
"named": false
},
{
"type": "<=>",
"named": false
},
{
"type": "=",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": "===",
"named": false
},
{
"type": "=>",
"named": false
},
{
"type": "=~",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": ">=",
"named": false
},
{
"type": ">>",
"named": false
},
{
"type": ">>=",
"named": false
},
{
"type": "?",
"named": false
},
{
"type": "BEGIN",
"named": false
},
{
"type": "END",
"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": "and",
"named": false
},
{
"type": "begin",
"named": false
},
{
"type": "break",
"named": false
},
{
"type": "case",
"named": false
},
{
"type": "character",
"named": true
},
{
"type": "class",
"named": false
},
{
"type": "class_variable",
"named": true
},
{
"type": "comment",
"named": true,
"extra": true
},
{
"type": "def",
"named": false
},
{
"type": "defined?",
"named": false
},
{
"type": "do",
"named": false
},
{
"type": "else",
"named": false
},
{
"type": "elsif",
"named": false
},
{
"type": "encoding",
"named": true
},
{
"type": "end",
"named": false
},
{
"type": "ensure",
"named": false
},
{
"type": "escape_sequence",
"named": true
},
{
"type": "false",
"named": true
},
{
"type": "file",
"named": true
},
{
"type": "float",
"named": true
},
{
"type": "for",
"named": false
},
{
"type": "global_variable",
"named": true
},
{
"type": "heredoc_beginning",
"named": true
},
{
"type": "heredoc_content",
"named": true
},
{
"type": "heredoc_end",
"named": true
},
{
"type": "i",
"named": false
},
{
"type": "if",
"named": false
},
{
"type": "in",
"named": false
},
{
"type": "instance_variable",
"named": true
},
{
"type": "integer",
"named": true
},
{
"type": "line",
"named": true
},
{
"type": "module",
"named": false
},
{
"type": "next",
"named": false
},
{
"type": "nil",
"named": false
},
{
"type": "not",
"named": false
},
{
"type": "or",
"named": false
},
{
"type": "r",
"named": false
},
{
"type": "redo",
"named": false
},
{
"type": "rescue",
"named": false
},
{
"type": "retry",
"named": false
},
{
"type": "return",
"named": false
},
{
"type": "ri",
"named": false
},
{
"type": "self",
"named": true
},
{
"type": "simple_symbol",
"named": true
},
{
"type": "string_content",
"named": true
},
{
"type": "super",
"named": true
},
{
"type": "then",
"named": false
},
{
"type": "true",
"named": true
},
{
"type": "undef",
"named": false
},
{
"type": "uninterpreted",
"named": true
},
{
"type": "unless",
"named": false
},
{
"type": "until",
"named": false
},
{
"type": "when",
"named": false
},
{
"type": "while",
"named": false
},
{
"type": "yield",
"named": false
},
{
"type": "{",
"named": false
},
{
"type": "|",
"named": false
},
{
"type": "|=",
"named": false
},
{
"type": "||",
"named": false
},
{
"type": "||=",
"named": false
},
{
"type": "}",
"named": false
},
{
"type": "~",
"named": false
},
{
"type": "~@",
"named": false
}
]