File fix-regex.patch of Package tree-sitter-pony

From 73ff874ae4c9e9b45462673cbc0a1e350e2522a7 Mon Sep 17 00:00:00 2001
From: Christian Clason <c.clason@uni-graz.at>
Date: Sat, 20 Apr 2024 14:39:04 +0200
Subject: [PATCH] fix(grammar): adapt to upstream regex change

---
 grammar.js               |    2 +-
 src/grammar.json         |   17 +-
 src/parser.c             | 2060 +++++++++++++++++++-------------------
 src/tree_sitter/alloc.h  |   54 +
 src/tree_sitter/array.h  |  290 ++++++
 src/tree_sitter/parser.h |   67 +-
 6 files changed, 1424 insertions(+), 1066 deletions(-)
 create mode 100644 src/tree_sitter/alloc.h
 create mode 100644 src/tree_sitter/array.h

diff --git a/grammar.js b/grammar.js
index 07e832d..bd09fba 100644
--- a/grammar.js
+++ b/grammar.js
@@ -745,7 +745,7 @@ module.exports = grammar({
         /[0-7]{1,3}/,
         /x[0-9a-fA-F]{2}/,
         /u[0-9a-fA-F]{4}/,
-        /u{[0-9a-fA-F]+}/,
+        /u\{[0-9a-fA-F]+\}/,
         /U[0-9a-fA-F]{8}/,
       ))),
 
diff --git a/src/grammar.json b/src/grammar.json
index eb2496c..c1a08d1 100644
--- a/src/grammar.json
+++ b/src/grammar.json
@@ -5764,7 +5764,7 @@
               },
               {
                 "type": "PATTERN",
-                "value": "u{[0-9a-fA-F]+}"
+                "value": "u\\{[0-9a-fA-F]+\\}"
               },
               {
                 "type": "PATTERN",
@@ -5878,18 +5878,5 @@
     "literal",
     "statement",
     "type"
-  ],
-  "PREC": {
-    "LAMBDA": -2,
-    "PARENTHESES": -1,
-    "ASSIGNMENT": 1,
-    "BINARY": 2,
-    "CAST": 3,
-    "UNARY": 4,
-    "CALL": 5,
-    "MEMBER": 6,
-    "TYPEARGS": 7,
-    "ARRAY_LITERAL": 8
-  }
+  ]
 }
-
diff --git a/src/parser.c b/src/parser.c
index acbdb7f..192624c 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -1,7 +1,6 @@
-#include <tree_sitter/parser.h>
+#include "tree_sitter/parser.h"
 
 #if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
 #endif
 
@@ -16,7 +15,7 @@
 #define MAX_ALIAS_SEQUENCE_LENGTH 15
 #define PRODUCTION_ID_COUNT 27
 
-enum {
+enum ts_symbol_identifiers {
   sym_identifier = 1,
   anon_sym_use = 2,
   anon_sym_EQ = 3,
@@ -1851,7 +1850,7 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
   },
 };
 
-enum {
+enum ts_field_identifiers {
   field_argument = 1,
   field_callee = 2,
   field_collection = 3,
@@ -4504,229 +4503,217 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
   [2516] = 2377,
 };
 
-static inline bool sym_escape_sequence_character_set_1(int32_t c) {
-  return (c < 'a'
-    ? (c < '?'
-      ? (c < '\''
-        ? c == '"'
-        : c <= '\'')
-      : (c <= '?' || c == '\\'))
-    : (c <= 'b' || (c < 'r'
-      ? (c < 'n'
-        ? c == 'f'
-        : c <= 'n')
-      : (c <= 'r' || (c >= 't' && c <= 'v')))));
-}
-
 static bool ts_lex(TSLexer *lexer, TSStateId state) {
   START_LEXER();
   eof = lexer->eof(lexer);
   switch (state) {
     case 0:
       if (eof) ADVANCE(45);
-      if (lookahead == '!') ADVANCE(68);
-      if (lookahead == '"') ADVANCE(123);
-      if (lookahead == '#') ADVANCE(10);
-      if (lookahead == '%') ADVANCE(82);
-      if (lookahead == '&') ADVANCE(71);
-      if (lookahead == '\'') ADVANCE(125);
-      if (lookahead == '(') ADVANCE(112);
-      if (lookahead == ')') ADVANCE(57);
-      if (lookahead == '*') ADVANCE(80);
-      if (lookahead == '+') ADVANCE(79);
-      if (lookahead == ',') ADVANCE(55);
-      if (lookahead == '-') ADVANCE(76);
-      if (lookahead == '.') ADVANCE(60);
-      if (lookahead == '/') ADVANCE(81);
-      if (lookahead == '0') ADVANCE(116);
-      if (lookahead == ':') ADVANCE(52);
-      if (lookahead == ';') ADVANCE(75);
-      if (lookahead == '<') ADVANCE(91);
-      if (lookahead == '=') ADVANCE(46);
-      if (lookahead == '>') ADVANCE(88);
-      if (lookahead == '?') ADVANCE(51);
-      if (lookahead == '@') ADVANCE(48);
-      if (lookahead == '[') ADVANCE(49);
-      if (lookahead == '\\') ADVANCE(54);
-      if (lookahead == ']') ADVANCE(50);
-      if (lookahead == '^') ADVANCE(69);
-      if (lookahead == '{') ADVANCE(73);
-      if (lookahead == '|') ADVANCE(70);
-      if (lookahead == '}') ADVANCE(74);
-      if (lookahead == '~') ADVANCE(114);
-      if (lookahead == '\t' ||
-          lookahead == '\n' ||
-          lookahead == '\r' ||
-          lookahead == ' ') SKIP(42)
+      ADVANCE_MAP(
+        '!', 68,
+        '"', 123,
+        '#', 11,
+        '%', 82,
+        '&', 71,
+        '\'', 125,
+        '(', 112,
+        ')', 57,
+        '*', 80,
+        '+', 79,
+        ',', 55,
+        '-', 76,
+        '.', 60,
+        '/', 81,
+        '0', 116,
+        ':', 52,
+        ';', 75,
+        '<', 91,
+        '=', 46,
+        '>', 88,
+        '?', 51,
+        '@', 48,
+        '[', 49,
+        '\\', 54,
+        ']', 50,
+        '^', 69,
+        '{', 73,
+        '|', 70,
+        '}', 74,
+        '~', 114,
+      );
+      if (('\t' <= lookahead && lookahead <= '\r') ||
+          lookahead == ' ') SKIP(42);
       if (('1' <= lookahead && lookahead <= '9')) ADVANCE(117);
       if (('A' <= lookahead && lookahead <= '_') ||
           ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139);
       END_STATE();
     case 1:
-      if (lookahead == '"') ADVANCE(124);
+      if (lookahead == '\r') ADVANCE(141);
+      if (lookahead != 0) ADVANCE(140);
       END_STATE();
     case 2:
+      if (lookahead == '"') ADVANCE(124);
+      END_STATE();
+    case 3:
       if (lookahead == '"') ADVANCE(122);
       if (lookahead == '/') ADVANCE(132);
-      if (lookahead == '\\') ADVANCE(9);
-      if (lookahead == '\t' ||
-          lookahead == '\n' ||
-          lookahead == '\r' ||
+      if (lookahead == '\\') ADVANCE(10);
+      if (('\t' <= lookahead && lookahead <= '\r') ||
           lookahead == ' ') ADVANCE(131);
       if (lookahead != 0) ADVANCE(133);
       END_STATE();
-    case 3:
+    case 4:
       if (lookahead == '\'') ADVANCE(125);
       if (lookahead == '/') ADVANCE(128);
-      if (lookahead == '\\') ADVANCE(9);
-      if (lookahead == '\t' ||
-          lookahead == '\n' ||
-          lookahead == '\r' ||
+      if (lookahead == '\\') ADVANCE(10);
+      if (('\t' <= lookahead && lookahead <= '\r') ||
           lookahead == ' ') ADVANCE(127);
       if (lookahead != 0) ADVANCE(129);
       END_STATE();
-    case 4:
+    case 5:
       if (lookahead == ')') ADVANCE(57);
-      if (lookahead == '.') ADVANCE(5);
-      if (lookahead == '/') ADVANCE(7);
-      if (lookahead == '\t' ||
-          lookahead == '\n' ||
-          lookahead == '\r' ||
-          lookahead == ' ') SKIP(4)
+      if (lookahead == '.') ADVANCE(6);
+      if (lookahead == '/') ADVANCE(8);
+      if (('\t' <= lookahead && lookahead <= '\r') ||
+          lookahead == ' ') SKIP(5);
       if (('A' <= lookahead && lookahead <= 'Z') ||
           lookahead == '_' ||
           ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139);
       END_STATE();
-    case 5:
-      if (lookahead == '.') ADVANCE(6);
-      END_STATE();
     case 6:
-      if (lookahead == '.') ADVANCE(58);
+      if (lookahead == '.') ADVANCE(7);
       END_STATE();
     case 7:
-      if (lookahead == '/') ADVANCE(140);
+      if (lookahead == '.') ADVANCE(58);
       END_STATE();
     case 8:
-      if (lookahead == ':') ADVANCE(115);
+      if (lookahead == '/') ADVANCE(140);
       END_STATE();
     case 9:
+      if (lookahead == ':') ADVANCE(115);
+      END_STATE();
+    case 10:
       if (lookahead == 'U') ADVANCE(136);
-      if (lookahead == 'u') ADVANCE(25);
-      if (lookahead == 'x') ADVANCE(35);
+      if (lookahead == 'u') ADVANCE(26);
+      if (lookahead == 'x') ADVANCE(36);
       if (('0' <= lookahead && lookahead <= '7')) ADVANCE(135);
-      if (sym_escape_sequence_character_set_1(lookahead)) ADVANCE(137);
+      if (lookahead == '"' ||
+          lookahead == '\'' ||
+          lookahead == '?' ||
+          lookahead == '\\' ||
+          lookahead == 'a' ||
+          lookahead == 'b' ||
+          lookahead == 'f' ||
+          lookahead == 'n' ||
+          lookahead == 'r' ||
+          ('t' <= lookahead && lookahead <= 'v')) ADVANCE(137);
       if (lookahead != 0) ADVANCE(134);
       END_STATE();
-    case 10:
-      if (lookahead == 'a') ADVANCE(20);
-      if (lookahead == 'r') ADVANCE(16);
-      if (lookahead == 's') ADVANCE(17);
-      END_STATE();
     case 11:
-      if (lookahead == 'a') ADVANCE(14);
+      if (lookahead == 'a') ADVANCE(21);
+      if (lookahead == 'r') ADVANCE(17);
+      if (lookahead == 's') ADVANCE(18);
       END_STATE();
     case 12:
-      if (lookahead == 'a') ADVANCE(22);
+      if (lookahead == 'a') ADVANCE(15);
       END_STATE();
     case 13:
       if (lookahead == 'a') ADVANCE(23);
       END_STATE();
     case 14:
-      if (lookahead == 'd') ADVANCE(62);
+      if (lookahead == 'a') ADVANCE(24);
       END_STATE();
     case 15:
-      if (lookahead == 'd') ADVANCE(63);
+      if (lookahead == 'd') ADVANCE(62);
       END_STATE();
     case 16:
-      if (lookahead == 'e') ADVANCE(11);
+      if (lookahead == 'd') ADVANCE(63);
       END_STATE();
     case 17:
-      if (lookahead == 'e') ADVANCE(21);
-      if (lookahead == 'h') ADVANCE(12);
+      if (lookahead == 'e') ADVANCE(12);
       END_STATE();
     case 18:
-      if (lookahead == 'e') ADVANCE(64);
+      if (lookahead == 'e') ADVANCE(22);
+      if (lookahead == 'h') ADVANCE(13);
       END_STATE();
     case 19:
-      if (lookahead == 'i') ADVANCE(13);
+      if (lookahead == 'e') ADVANCE(64);
       END_STATE();
     case 20:
-      if (lookahead == 'l') ADVANCE(19);
-      if (lookahead == 'n') ADVANCE(24);
+      if (lookahead == 'i') ADVANCE(14);
       END_STATE();
     case 21:
-      if (lookahead == 'n') ADVANCE(15);
+      if (lookahead == 'l') ADVANCE(20);
+      if (lookahead == 'n') ADVANCE(25);
       END_STATE();
     case 22:
-      if (lookahead == 'r') ADVANCE(18);
+      if (lookahead == 'n') ADVANCE(16);
       END_STATE();
     case 23:
-      if (lookahead == 's') ADVANCE(65);
+      if (lookahead == 'r') ADVANCE(19);
       END_STATE();
     case 24:
-      if (lookahead == 'y') ADVANCE(66);
+      if (lookahead == 's') ADVANCE(65);
       END_STATE();
     case 25:
-      if (lookahead == '{') ADVANCE(33);
+      if (lookahead == 'y') ADVANCE(66);
+      END_STATE();
+    case 26:
+      if (lookahead == '{') ADVANCE(34);
       if (('0' <= lookahead && lookahead <= '9') ||
           ('A' <= lookahead && lookahead <= 'F') ||
-          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(34);
+          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(35);
       END_STATE();
-    case 26:
+    case 27:
       if (lookahead == '}') ADVANCE(137);
       if (('0' <= lookahead && lookahead <= '9') ||
           ('A' <= lookahead && lookahead <= 'F') ||
-          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(26);
+          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(27);
       END_STATE();
-    case 27:
+    case 28:
       if (lookahead == '+' ||
-          lookahead == '-') ADVANCE(30);
+          lookahead == '-') ADVANCE(31);
       if (('0' <= lookahead && lookahead <= '9')) ADVANCE(121);
       END_STATE();
-    case 28:
+    case 29:
       if (lookahead == '0' ||
           lookahead == '1') ADVANCE(118);
       END_STATE();
-    case 29:
-      if (('0' <= lookahead && lookahead <= '9')) ADVANCE(120);
-      END_STATE();
     case 30:
-      if (('0' <= lookahead && lookahead <= '9')) ADVANCE(121);
+      if (('0' <= lookahead && lookahead <= '9')) ADVANCE(120);
       END_STATE();
     case 31:
-      if (('0' <= lookahead && lookahead <= '9') ||
-          ('A' <= lookahead && lookahead <= 'F') ||
-          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(119);
+      if (('0' <= lookahead && lookahead <= '9')) ADVANCE(121);
       END_STATE();
     case 32:
       if (('0' <= lookahead && lookahead <= '9') ||
           ('A' <= lookahead && lookahead <= 'F') ||
-          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(137);
+          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(119);
       END_STATE();
     case 33:
       if (('0' <= lookahead && lookahead <= '9') ||
           ('A' <= lookahead && lookahead <= 'F') ||
-          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(26);
+          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(137);
       END_STATE();
     case 34:
       if (('0' <= lookahead && lookahead <= '9') ||
           ('A' <= lookahead && lookahead <= 'F') ||
-          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(35);
+          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(27);
       END_STATE();
     case 35:
       if (('0' <= lookahead && lookahead <= '9') ||
           ('A' <= lookahead && lookahead <= 'F') ||
-          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(32);
+          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(36);
       END_STATE();
     case 36:
       if (('0' <= lookahead && lookahead <= '9') ||
           ('A' <= lookahead && lookahead <= 'F') ||
-          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(34);
+          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(33);
       END_STATE();
     case 37:
       if (('0' <= lookahead && lookahead <= '9') ||
           ('A' <= lookahead && lookahead <= 'F') ||
-          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(36);
+          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(35);
       END_STATE();
     case 38:
       if (('0' <= lookahead && lookahead <= '9') ||
@@ -4739,45 +4726,45 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
           ('a' <= lookahead && lookahead <= 'f')) ADVANCE(38);
       END_STATE();
     case 40:
-      if (lookahead != 0 &&
-          lookahead != '\r') ADVANCE(140);
-      if (lookahead == '\r') ADVANCE(141);
+      if (('0' <= lookahead && lookahead <= '9') ||
+          ('A' <= lookahead && lookahead <= 'F') ||
+          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(39);
       END_STATE();
     case 41:
       if (eof) ADVANCE(45);
-      if (lookahead == '!') ADVANCE(68);
-      if (lookahead == '"') ADVANCE(123);
-      if (lookahead == '#') ADVANCE(10);
-      if (lookahead == '%') ADVANCE(82);
-      if (lookahead == '&') ADVANCE(71);
-      if (lookahead == '\'') ADVANCE(125);
-      if (lookahead == '(') ADVANCE(112);
-      if (lookahead == ')') ADVANCE(57);
-      if (lookahead == '*') ADVANCE(80);
-      if (lookahead == '+') ADVANCE(79);
-      if (lookahead == ',') ADVANCE(55);
-      if (lookahead == '-') ADVANCE(76);
-      if (lookahead == '.') ADVANCE(61);
-      if (lookahead == '/') ADVANCE(81);
-      if (lookahead == '0') ADVANCE(116);
-      if (lookahead == ':') ADVANCE(52);
-      if (lookahead == ';') ADVANCE(75);
-      if (lookahead == '<') ADVANCE(92);
-      if (lookahead == '=') ADVANCE(46);
-      if (lookahead == '>') ADVANCE(88);
-      if (lookahead == '?') ADVANCE(51);
-      if (lookahead == '@') ADVANCE(48);
-      if (lookahead == '[') ADVANCE(49);
-      if (lookahead == ']') ADVANCE(50);
-      if (lookahead == '^') ADVANCE(69);
-      if (lookahead == '{') ADVANCE(73);
-      if (lookahead == '|') ADVANCE(70);
-      if (lookahead == '}') ADVANCE(74);
-      if (lookahead == '~') ADVANCE(114);
-      if (lookahead == '\t' ||
-          lookahead == '\n' ||
-          lookahead == '\r' ||
-          lookahead == ' ') SKIP(43)
+      ADVANCE_MAP(
+        '!', 68,
+        '"', 123,
+        '#', 11,
+        '%', 82,
+        '&', 71,
+        '\'', 125,
+        '(', 112,
+        ')', 57,
+        '*', 80,
+        '+', 79,
+        ',', 55,
+        '-', 76,
+        '.', 61,
+        '/', 81,
+        '0', 116,
+        ':', 52,
+        ';', 75,
+        '<', 92,
+        '=', 46,
+        '>', 88,
+        '?', 51,
+        '@', 48,
+        '[', 49,
+        ']', 50,
+        '^', 69,
+        '{', 73,
+        '|', 70,
+        '}', 74,
+        '~', 114,
+      );
+      if (('\t' <= lookahead && lookahead <= '\r') ||
+          lookahead == ' ') SKIP(43);
       if (('1' <= lookahead && lookahead <= '9')) ADVANCE(117);
       if (('A' <= lookahead && lookahead <= 'Z') ||
           lookahead == '_' ||
@@ -4785,79 +4772,79 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
       END_STATE();
     case 42:
       if (eof) ADVANCE(45);
-      if (lookahead == '!') ADVANCE(68);
-      if (lookahead == '"') ADVANCE(123);
-      if (lookahead == '#') ADVANCE(10);
-      if (lookahead == '%') ADVANCE(82);
-      if (lookahead == '&') ADVANCE(71);
-      if (lookahead == '\'') ADVANCE(125);
-      if (lookahead == '(') ADVANCE(56);
-      if (lookahead == ')') ADVANCE(57);
-      if (lookahead == '*') ADVANCE(80);
-      if (lookahead == '+') ADVANCE(79);
-      if (lookahead == ',') ADVANCE(55);
-      if (lookahead == '-') ADVANCE(76);
-      if (lookahead == '.') ADVANCE(60);
-      if (lookahead == '/') ADVANCE(81);
-      if (lookahead == '0') ADVANCE(116);
-      if (lookahead == ':') ADVANCE(52);
-      if (lookahead == ';') ADVANCE(75);
-      if (lookahead == '<') ADVANCE(91);
-      if (lookahead == '=') ADVANCE(46);
-      if (lookahead == '>') ADVANCE(88);
-      if (lookahead == '?') ADVANCE(51);
-      if (lookahead == '@') ADVANCE(48);
-      if (lookahead == '[') ADVANCE(49);
-      if (lookahead == '\\') ADVANCE(54);
-      if (lookahead == ']') ADVANCE(50);
-      if (lookahead == '^') ADVANCE(69);
-      if (lookahead == '{') ADVANCE(73);
-      if (lookahead == '|') ADVANCE(70);
-      if (lookahead == '}') ADVANCE(74);
-      if (lookahead == '~') ADVANCE(114);
-      if (lookahead == '\t' ||
-          lookahead == '\n' ||
-          lookahead == '\r' ||
-          lookahead == ' ') SKIP(42)
+      ADVANCE_MAP(
+        '!', 68,
+        '"', 123,
+        '#', 11,
+        '%', 82,
+        '&', 71,
+        '\'', 125,
+        '(', 56,
+        ')', 57,
+        '*', 80,
+        '+', 79,
+        ',', 55,
+        '-', 76,
+        '.', 60,
+        '/', 81,
+        '0', 116,
+        ':', 52,
+        ';', 75,
+        '<', 91,
+        '=', 46,
+        '>', 88,
+        '?', 51,
+        '@', 48,
+        '[', 49,
+        '\\', 54,
+        ']', 50,
+        '^', 69,
+        '{', 73,
+        '|', 70,
+        '}', 74,
+        '~', 114,
+      );
+      if (('\t' <= lookahead && lookahead <= '\r') ||
+          lookahead == ' ') SKIP(42);
       if (('1' <= lookahead && lookahead <= '9')) ADVANCE(117);
       if (('A' <= lookahead && lookahead <= '_') ||
           ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139);
       END_STATE();
     case 43:
       if (eof) ADVANCE(45);
-      if (lookahead == '!') ADVANCE(68);
-      if (lookahead == '"') ADVANCE(123);
-      if (lookahead == '#') ADVANCE(10);
-      if (lookahead == '%') ADVANCE(82);
-      if (lookahead == '&') ADVANCE(71);
-      if (lookahead == '\'') ADVANCE(125);
-      if (lookahead == '(') ADVANCE(56);
-      if (lookahead == ')') ADVANCE(57);
-      if (lookahead == '*') ADVANCE(80);
-      if (lookahead == '+') ADVANCE(79);
-      if (lookahead == ',') ADVANCE(55);
-      if (lookahead == '-') ADVANCE(76);
-      if (lookahead == '.') ADVANCE(61);
-      if (lookahead == '/') ADVANCE(81);
-      if (lookahead == '0') ADVANCE(116);
-      if (lookahead == ':') ADVANCE(52);
-      if (lookahead == ';') ADVANCE(75);
-      if (lookahead == '<') ADVANCE(92);
-      if (lookahead == '=') ADVANCE(46);
-      if (lookahead == '>') ADVANCE(88);
-      if (lookahead == '?') ADVANCE(51);
-      if (lookahead == '@') ADVANCE(48);
-      if (lookahead == '[') ADVANCE(49);
-      if (lookahead == ']') ADVANCE(50);
-      if (lookahead == '^') ADVANCE(69);
-      if (lookahead == '{') ADVANCE(73);
-      if (lookahead == '|') ADVANCE(70);
-      if (lookahead == '}') ADVANCE(74);
-      if (lookahead == '~') ADVANCE(114);
-      if (lookahead == '\t' ||
-          lookahead == '\n' ||
-          lookahead == '\r' ||
-          lookahead == ' ') SKIP(43)
+      ADVANCE_MAP(
+        '!', 68,
+        '"', 123,
+        '#', 11,
+        '%', 82,
+        '&', 71,
+        '\'', 125,
+        '(', 56,
+        ')', 57,
+        '*', 80,
+        '+', 79,
+        ',', 55,
+        '-', 76,
+        '.', 61,
+        '/', 81,
+        '0', 116,
+        ':', 52,
+        ';', 75,
+        '<', 92,
+        '=', 46,
+        '>', 88,
+        '?', 51,
+        '@', 48,
+        '[', 49,
+        ']', 50,
+        '^', 69,
+        '{', 73,
+        '|', 70,
+        '}', 74,
+        '~', 114,
+      );
+      if (('\t' <= lookahead && lookahead <= '\r') ||
+          lookahead == ' ') SKIP(43);
       if (('1' <= lookahead && lookahead <= '9')) ADVANCE(117);
       if (('A' <= lookahead && lookahead <= 'Z') ||
           lookahead == '_' ||
@@ -4865,35 +4852,35 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
       END_STATE();
     case 44:
       if (eof) ADVANCE(45);
-      if (lookahead == '!') ADVANCE(67);
-      if (lookahead == '"') ADVANCE(123);
-      if (lookahead == '#') ADVANCE(10);
-      if (lookahead == '&') ADVANCE(71);
-      if (lookahead == '\'') ADVANCE(125);
-      if (lookahead == '(') ADVANCE(56);
-      if (lookahead == ')') ADVANCE(57);
-      if (lookahead == ',') ADVANCE(55);
-      if (lookahead == '-') ADVANCE(77);
-      if (lookahead == '.') ADVANCE(59);
-      if (lookahead == '/') ADVANCE(7);
-      if (lookahead == '0') ADVANCE(116);
-      if (lookahead == ':') ADVANCE(52);
-      if (lookahead == ';') ADVANCE(75);
-      if (lookahead == '<') ADVANCE(8);
-      if (lookahead == '=') ADVANCE(47);
-      if (lookahead == '?') ADVANCE(51);
-      if (lookahead == '@') ADVANCE(48);
-      if (lookahead == '[') ADVANCE(49);
-      if (lookahead == '\\') ADVANCE(54);
-      if (lookahead == ']') ADVANCE(50);
-      if (lookahead == '^') ADVANCE(69);
-      if (lookahead == '{') ADVANCE(73);
-      if (lookahead == '|') ADVANCE(70);
-      if (lookahead == '}') ADVANCE(74);
-      if (lookahead == '\t' ||
-          lookahead == '\n' ||
-          lookahead == '\r' ||
-          lookahead == ' ') SKIP(44)
+      ADVANCE_MAP(
+        '!', 67,
+        '"', 123,
+        '#', 11,
+        '&', 71,
+        '\'', 125,
+        '(', 56,
+        ')', 57,
+        ',', 55,
+        '-', 77,
+        '.', 59,
+        '/', 8,
+        '0', 116,
+        ':', 52,
+        ';', 75,
+        '<', 9,
+        '=', 47,
+        '?', 51,
+        '@', 48,
+        '[', 49,
+        '\\', 54,
+        ']', 50,
+        '^', 69,
+        '{', 73,
+        '|', 70,
+        '}', 74,
+      );
+      if (('\t' <= lookahead && lookahead <= '\r') ||
+          lookahead == ' ') SKIP(44);
       if (('1' <= lookahead && lookahead <= '9')) ADVANCE(117);
       if (('A' <= lookahead && lookahead <= '_') ||
           ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139);
@@ -4948,7 +4935,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
       END_STATE();
     case 60:
       ACCEPT_TOKEN(anon_sym_DOT);
-      if (lookahead == '.') ADVANCE(6);
+      if (lookahead == '.') ADVANCE(7);
       if (lookahead == '>') ADVANCE(113);
       END_STATE();
     case 61:
@@ -5153,21 +5140,21 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
       END_STATE();
     case 116:
       ACCEPT_TOKEN(sym_number);
-      if (lookahead == '.') ADVANCE(29);
+      if (lookahead == '.') ADVANCE(30);
       if (lookahead == 'B' ||
-          lookahead == 'b') ADVANCE(28);
+          lookahead == 'b') ADVANCE(29);
       if (lookahead == 'E' ||
-          lookahead == 'e') ADVANCE(27);
+          lookahead == 'e') ADVANCE(28);
       if (lookahead == 'X' ||
-          lookahead == 'x') ADVANCE(31);
+          lookahead == 'x') ADVANCE(32);
       if (('0' <= lookahead && lookahead <= '9') ||
           lookahead == '_') ADVANCE(117);
       END_STATE();
     case 117:
       ACCEPT_TOKEN(sym_number);
-      if (lookahead == '.') ADVANCE(29);
+      if (lookahead == '.') ADVANCE(30);
       if (lookahead == 'E' ||
-          lookahead == 'e') ADVANCE(27);
+          lookahead == 'e') ADVANCE(28);
       if (('0' <= lookahead && lookahead <= '9') ||
           lookahead == '_') ADVANCE(117);
       END_STATE();
@@ -5187,7 +5174,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
     case 120:
       ACCEPT_TOKEN(sym_float);
       if (lookahead == 'E' ||
-          lookahead == 'e') ADVANCE(27);
+          lookahead == 'e') ADVANCE(28);
       if (('0' <= lookahead && lookahead <= '9') ||
           lookahead == '_') ADVANCE(120);
       END_STATE();
@@ -5200,7 +5187,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
       END_STATE();
     case 123:
       ACCEPT_TOKEN(anon_sym_DQUOTE);
-      if (lookahead == '"') ADVANCE(1);
+      if (lookahead == '"') ADVANCE(2);
       END_STATE();
     case 124:
       ACCEPT_TOKEN(anon_sym_DQUOTE_DQUOTE_DQUOTE);
@@ -5218,9 +5205,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
     case 127:
       ACCEPT_TOKEN(sym_character_content);
       if (lookahead == '/') ADVANCE(128);
-      if (lookahead == '\t' ||
-          lookahead == '\n' ||
-          lookahead == '\r' ||
+      if (('\t' <= lookahead && lookahead <= '\r') ||
           lookahead == ' ') ADVANCE(127);
       if (lookahead != 0 &&
           lookahead != '\'' &&
@@ -5249,9 +5234,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
     case 131:
       ACCEPT_TOKEN(sym_string_content);
       if (lookahead == '/') ADVANCE(132);
-      if (lookahead == '\t' ||
-          lookahead == '\n' ||
-          lookahead == '\r' ||
+      if (('\t' <= lookahead && lookahead <= '\r') ||
           lookahead == ' ') ADVANCE(131);
       if (lookahead != 0 &&
           lookahead != '"' &&
@@ -5281,7 +5264,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
       ACCEPT_TOKEN(aux_sym__escape_sequence_token1);
       if (('0' <= lookahead && lookahead <= '9') ||
           ('A' <= lookahead && lookahead <= 'F') ||
-          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(39);
+          ('a' <= lookahead && lookahead <= 'f')) ADVANCE(40);
       END_STATE();
     case 137:
       ACCEPT_TOKEN(sym_escape_sequence);
@@ -5300,15 +5283,14 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
       END_STATE();
     case 140:
       ACCEPT_TOKEN(sym_line_comment);
-      if (lookahead == '\\') ADVANCE(40);
+      if (lookahead == '\\') ADVANCE(1);
       if (lookahead != 0 &&
           lookahead != '\n') ADVANCE(140);
       END_STATE();
     case 141:
       ACCEPT_TOKEN(sym_line_comment);
-      if (lookahead != 0 &&
-          lookahead != '\\') ADVANCE(140);
-      if (lookahead == '\\') ADVANCE(40);
+      if (lookahead == '\\') ADVANCE(1);
+      if (lookahead != 0) ADVANCE(140);
       END_STATE();
     default:
       return false;
@@ -5320,30 +5302,30 @@ static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) {
   eof = lexer->eof(lexer);
   switch (state) {
     case 0:
-      if (lookahead == '_') ADVANCE(1);
-      if (lookahead == 'a') ADVANCE(2);
-      if (lookahead == 'b') ADVANCE(3);
-      if (lookahead == 'c') ADVANCE(4);
-      if (lookahead == 'd') ADVANCE(5);
-      if (lookahead == 'e') ADVANCE(6);
-      if (lookahead == 'f') ADVANCE(7);
-      if (lookahead == 'i') ADVANCE(8);
-      if (lookahead == 'l') ADVANCE(9);
-      if (lookahead == 'm') ADVANCE(10);
-      if (lookahead == 'n') ADVANCE(11);
-      if (lookahead == 'o') ADVANCE(12);
-      if (lookahead == 'p') ADVANCE(13);
-      if (lookahead == 'r') ADVANCE(14);
-      if (lookahead == 's') ADVANCE(15);
-      if (lookahead == 't') ADVANCE(16);
-      if (lookahead == 'u') ADVANCE(17);
-      if (lookahead == 'v') ADVANCE(18);
-      if (lookahead == 'w') ADVANCE(19);
-      if (lookahead == 'x') ADVANCE(20);
-      if (lookahead == '\t' ||
-          lookahead == '\n' ||
-          lookahead == '\r' ||
-          lookahead == ' ') SKIP(0)
+      ADVANCE_MAP(
+        '_', 1,
+        'a', 2,
+        'b', 3,
+        'c', 4,
+        'd', 5,
+        'e', 6,
+        'f', 7,
+        'i', 8,
+        'l', 9,
+        'm', 10,
+        'n', 11,
+        'o', 12,
+        'p', 13,
+        'r', 14,
+        's', 15,
+        't', 16,
+        'u', 17,
+        'v', 18,
+        'w', 19,
+        'x', 20,
+      );
+      if (('\t' <= lookahead && lookahead <= '\r') ||
+          lookahead == ' ') SKIP(0);
       END_STATE();
     case 1:
       if (lookahead == '_') ADVANCE(21);
@@ -7792,53 +7774,53 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
   [1754] = {.lex_state = 0, .external_lex_state = 2},
   [1755] = {.lex_state = 0, .external_lex_state = 2},
   [1756] = {.lex_state = 0, .external_lex_state = 2},
-  [1757] = {.lex_state = 2, .external_lex_state = 2},
-  [1758] = {.lex_state = 3, .external_lex_state = 2},
+  [1757] = {.lex_state = 3, .external_lex_state = 2},
+  [1758] = {.lex_state = 4, .external_lex_state = 2},
   [1759] = {.lex_state = 0, .external_lex_state = 2},
-  [1760] = {.lex_state = 2, .external_lex_state = 2},
-  [1761] = {.lex_state = 2, .external_lex_state = 2},
+  [1760] = {.lex_state = 3, .external_lex_state = 2},
+  [1761] = {.lex_state = 3, .external_lex_state = 2},
   [1762] = {.lex_state = 0, .external_lex_state = 2},
-  [1763] = {.lex_state = 2, .external_lex_state = 2},
+  [1763] = {.lex_state = 3, .external_lex_state = 2},
   [1764] = {.lex_state = 0, .external_lex_state = 2},
   [1765] = {.lex_state = 0, .external_lex_state = 2},
   [1766] = {.lex_state = 0, .external_lex_state = 2},
   [1767] = {.lex_state = 0, .external_lex_state = 2},
   [1768] = {.lex_state = 0, .external_lex_state = 2},
-  [1769] = {.lex_state = 3, .external_lex_state = 2},
-  [1770] = {.lex_state = 2, .external_lex_state = 2},
-  [1771] = {.lex_state = 2, .external_lex_state = 2},
-  [1772] = {.lex_state = 2, .external_lex_state = 2},
-  [1773] = {.lex_state = 2, .external_lex_state = 2},
-  [1774] = {.lex_state = 2, .external_lex_state = 2},
-  [1775] = {.lex_state = 2, .external_lex_state = 2},
+  [1769] = {.lex_state = 4, .external_lex_state = 2},
+  [1770] = {.lex_state = 3, .external_lex_state = 2},
+  [1771] = {.lex_state = 3, .external_lex_state = 2},
+  [1772] = {.lex_state = 3, .external_lex_state = 2},
+  [1773] = {.lex_state = 3, .external_lex_state = 2},
+  [1774] = {.lex_state = 3, .external_lex_state = 2},
+  [1775] = {.lex_state = 3, .external_lex_state = 2},
   [1776] = {.lex_state = 0, .external_lex_state = 2},
-  [1777] = {.lex_state = 2, .external_lex_state = 2},
-  [1778] = {.lex_state = 3, .external_lex_state = 2},
+  [1777] = {.lex_state = 3, .external_lex_state = 2},
+  [1778] = {.lex_state = 4, .external_lex_state = 2},
   [1779] = {.lex_state = 0, .external_lex_state = 2},
   [1780] = {.lex_state = 0, .external_lex_state = 2},
   [1781] = {.lex_state = 0, .external_lex_state = 2},
-  [1782] = {.lex_state = 2, .external_lex_state = 2},
-  [1783] = {.lex_state = 2, .external_lex_state = 2},
-  [1784] = {.lex_state = 2, .external_lex_state = 2},
+  [1782] = {.lex_state = 3, .external_lex_state = 2},
+  [1783] = {.lex_state = 3, .external_lex_state = 2},
+  [1784] = {.lex_state = 3, .external_lex_state = 2},
   [1785] = {.lex_state = 0, .external_lex_state = 2},
-  [1786] = {.lex_state = 2, .external_lex_state = 2},
-  [1787] = {.lex_state = 2, .external_lex_state = 2},
+  [1786] = {.lex_state = 3, .external_lex_state = 2},
+  [1787] = {.lex_state = 3, .external_lex_state = 2},
   [1788] = {.lex_state = 0, .external_lex_state = 2},
   [1789] = {.lex_state = 0, .external_lex_state = 2},
   [1790] = {.lex_state = 0, .external_lex_state = 2},
   [1791] = {.lex_state = 0, .external_lex_state = 2},
   [1792] = {.lex_state = 0, .external_lex_state = 2},
   [1793] = {.lex_state = 0, .external_lex_state = 2},
-  [1794] = {.lex_state = 3, .external_lex_state = 2},
+  [1794] = {.lex_state = 4, .external_lex_state = 2},
   [1795] = {.lex_state = 0, .external_lex_state = 2},
   [1796] = {.lex_state = 0, .external_lex_state = 2},
   [1797] = {.lex_state = 0, .external_lex_state = 2},
   [1798] = {.lex_state = 0, .external_lex_state = 2},
   [1799] = {.lex_state = 0, .external_lex_state = 2},
-  [1800] = {.lex_state = 3, .external_lex_state = 2},
+  [1800] = {.lex_state = 4, .external_lex_state = 2},
   [1801] = {.lex_state = 0, .external_lex_state = 2},
   [1802] = {.lex_state = 0, .external_lex_state = 2},
-  [1803] = {.lex_state = 2, .external_lex_state = 2},
+  [1803] = {.lex_state = 3, .external_lex_state = 2},
   [1804] = {.lex_state = 0, .external_lex_state = 2},
   [1805] = {.lex_state = 44, .external_lex_state = 2},
   [1806] = {.lex_state = 44, .external_lex_state = 2},
@@ -7852,7 +7834,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
   [1814] = {.lex_state = 44, .external_lex_state = 2},
   [1815] = {.lex_state = 44, .external_lex_state = 2},
   [1816] = {.lex_state = 0, .external_lex_state = 2},
-  [1817] = {.lex_state = 3, .external_lex_state = 2},
+  [1817] = {.lex_state = 4, .external_lex_state = 2},
   [1818] = {.lex_state = 0, .external_lex_state = 2},
   [1819] = {.lex_state = 44, .external_lex_state = 2},
   [1820] = {.lex_state = 44, .external_lex_state = 2},
@@ -7870,13 +7852,13 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
   [1832] = {.lex_state = 44, .external_lex_state = 2},
   [1833] = {.lex_state = 0, .external_lex_state = 2},
   [1834] = {.lex_state = 44, .external_lex_state = 2},
-  [1835] = {.lex_state = 3, .external_lex_state = 2},
+  [1835] = {.lex_state = 4, .external_lex_state = 2},
   [1836] = {.lex_state = 44, .external_lex_state = 2},
   [1837] = {.lex_state = 44, .external_lex_state = 2},
   [1838] = {.lex_state = 44, .external_lex_state = 2},
   [1839] = {.lex_state = 0, .external_lex_state = 2},
   [1840] = {.lex_state = 44, .external_lex_state = 2},
-  [1841] = {.lex_state = 3, .external_lex_state = 2},
+  [1841] = {.lex_state = 4, .external_lex_state = 2},
   [1842] = {.lex_state = 0, .external_lex_state = 2},
   [1843] = {.lex_state = 44, .external_lex_state = 2},
   [1844] = {.lex_state = 44, .external_lex_state = 2},
@@ -7887,7 +7869,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
   [1849] = {.lex_state = 44, .external_lex_state = 2},
   [1850] = {.lex_state = 0, .external_lex_state = 2},
   [1851] = {.lex_state = 0, .external_lex_state = 2},
-  [1852] = {.lex_state = 3, .external_lex_state = 2},
+  [1852] = {.lex_state = 4, .external_lex_state = 2},
   [1853] = {.lex_state = 0, .external_lex_state = 2},
   [1854] = {.lex_state = 44, .external_lex_state = 2},
   [1855] = {.lex_state = 44, .external_lex_state = 2},
@@ -7902,7 +7884,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
   [1864] = {.lex_state = 0, .external_lex_state = 2},
   [1865] = {.lex_state = 44, .external_lex_state = 2},
   [1866] = {.lex_state = 44, .external_lex_state = 2},
-  [1867] = {.lex_state = 4, .external_lex_state = 2},
+  [1867] = {.lex_state = 5, .external_lex_state = 2},
   [1868] = {.lex_state = 0, .external_lex_state = 2},
   [1869] = {.lex_state = 44, .external_lex_state = 2},
   [1870] = {.lex_state = 44, .external_lex_state = 2},
@@ -8035,7 +8017,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
   [1997] = {.lex_state = 0, .external_lex_state = 4},
   [1998] = {.lex_state = 0, .external_lex_state = 2},
   [1999] = {.lex_state = 0, .external_lex_state = 2},
-  [2000] = {.lex_state = 4, .external_lex_state = 2},
+  [2000] = {.lex_state = 5, .external_lex_state = 2},
   [2001] = {.lex_state = 0, .external_lex_state = 2},
   [2002] = {.lex_state = 0, .external_lex_state = 2},
   [2003] = {.lex_state = 0, .external_lex_state = 2},
@@ -8554,37 +8536,6 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
   [2516] = {.lex_state = 44, .external_lex_state = 2},
 };
 
-enum {
-  ts_external_token__type_args_start = 0,
-  ts_external_token_block_comment = 1,
-  ts_external_token__multiline_string_content = 2,
-};
-
-static const TSSymbol ts_external_scanner_symbol_map[EXTERNAL_TOKEN_COUNT] = {
-  [ts_external_token__type_args_start] = sym__type_args_start,
-  [ts_external_token_block_comment] = sym_block_comment,
-  [ts_external_token__multiline_string_content] = sym__multiline_string_content,
-};
-
-static const bool ts_external_scanner_states[5][EXTERNAL_TOKEN_COUNT] = {
-  [1] = {
-    [ts_external_token__type_args_start] = true,
-    [ts_external_token_block_comment] = true,
-    [ts_external_token__multiline_string_content] = true,
-  },
-  [2] = {
-    [ts_external_token_block_comment] = true,
-  },
-  [3] = {
-    [ts_external_token__type_args_start] = true,
-    [ts_external_token_block_comment] = true,
-  },
-  [4] = {
-    [ts_external_token_block_comment] = true,
-    [ts_external_token__multiline_string_content] = true,
-  },
-};
-
 static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
   [0] = {
     [ts_builtin_sym_end] = ACTIONS(1),
@@ -136163,7 +136114,7 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [0] = {.entry = {.count = 0, .reusable = false}},
   [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(),
   [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(),
-  [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0),
+  [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0, 0, 0),
   [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1709),
   [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2485),
   [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1938),
@@ -136174,9 +136125,9 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1569),
   [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1774),
   [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1997),
-  [27] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 1),
+  [27] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 1, 0, 0),
   [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(686),
-  [31] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 1),
+  [31] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 1, 0, 0),
   [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(842),
   [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(841),
   [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(838),
@@ -136186,48 +136137,48 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [45] = {.entry = {.count = 1, .reusable = true}}, SHIFT(609),
   [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(837),
   [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(836),
-  [51] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_break_statement, 1),
-  [53] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_statement, 1),
-  [55] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_continue_statement, 1),
-  [57] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_statement, 1),
-  [59] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_statement, 1),
-  [61] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 1),
-  [63] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(324),
-  [66] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2),
-  [68] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1751),
-  [71] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(607),
-  [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2),
-  [76] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(2218),
-  [79] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(831),
-  [82] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1727),
-  [85] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(839),
-  [88] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(390),
-  [91] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(321),
-  [94] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(850),
-  [97] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(850),
-  [100] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(606),
-  [103] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(606),
-  [106] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1248),
-  [109] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1982),
-  [112] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(614),
-  [115] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(621),
-  [118] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1880),
-  [121] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(598),
-  [124] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(478),
-  [127] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(605),
-  [130] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(5),
-  [133] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(4),
-  [136] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(3),
-  [139] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1738),
-  [142] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1382),
-  [145] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(400),
-  [148] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(400),
-  [151] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1787),
-  [154] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1935),
-  [157] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1817),
-  [160] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(396),
-  [163] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2),
-  [165] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2),
+  [51] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_break_statement, 1, 0, 0),
+  [53] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_statement, 1, 0, 0),
+  [55] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_continue_statement, 1, 0, 0),
+  [57] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_statement, 1, 0, 0),
+  [59] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_statement, 1, 0, 0),
+  [61] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 1, 0, 0),
+  [63] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(324),
+  [66] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0),
+  [68] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1751),
+  [71] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(607),
+  [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0),
+  [76] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(2218),
+  [79] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(831),
+  [82] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1727),
+  [85] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(839),
+  [88] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(390),
+  [91] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(321),
+  [94] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(850),
+  [97] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(850),
+  [100] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(606),
+  [103] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(606),
+  [106] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1248),
+  [109] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1982),
+  [112] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(614),
+  [115] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(621),
+  [118] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1880),
+  [121] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(598),
+  [124] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(478),
+  [127] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(605),
+  [130] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(5),
+  [133] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(4),
+  [136] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(3),
+  [139] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1738),
+  [142] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1382),
+  [145] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(400),
+  [148] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(400),
+  [151] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1787),
+  [154] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1935),
+  [157] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1817),
+  [160] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(396),
+  [163] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2, 0, 0),
+  [165] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2, 0, 0),
   [167] = {.entry = {.count = 1, .reusable = false}}, SHIFT(186),
   [169] = {.entry = {.count = 1, .reusable = false}}, SHIFT(729),
   [171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1754),
@@ -136266,36 +136217,36 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [237] = {.entry = {.count = 1, .reusable = true}}, SHIFT(274),
   [239] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1835),
   [241] = {.entry = {.count = 1, .reusable = true}}, SHIFT(275),
-  [243] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(186),
-  [246] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1754),
-  [249] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(594),
-  [252] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(2230),
-  [255] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(855),
-  [258] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1750),
-  [261] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(843),
-  [264] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(270),
-  [267] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(377),
-  [270] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(856),
-  [273] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(856),
-  [276] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1296),
-  [279] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(2114),
-  [282] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(617),
-  [285] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(616),
-  [288] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1900),
-  [291] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(615),
-  [294] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(479),
-  [297] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(613),
-  [300] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(13),
-  [303] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(11),
-  [306] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(12),
-  [309] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1748),
-  [312] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1385),
-  [315] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(274),
-  [318] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(274),
-  [321] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1770),
-  [324] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(2087),
-  [327] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1835),
-  [330] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(275),
+  [243] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(186),
+  [246] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1754),
+  [249] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(594),
+  [252] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(2230),
+  [255] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(855),
+  [258] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1750),
+  [261] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(843),
+  [264] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(270),
+  [267] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(377),
+  [270] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(856),
+  [273] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(856),
+  [276] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1296),
+  [279] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(2114),
+  [282] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(617),
+  [285] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(616),
+  [288] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1900),
+  [291] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(615),
+  [294] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(479),
+  [297] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(613),
+  [300] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(13),
+  [303] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(11),
+  [306] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(12),
+  [309] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1748),
+  [312] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1385),
+  [315] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(274),
+  [318] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(274),
+  [321] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1770),
+  [324] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(2087),
+  [327] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1835),
+  [330] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(275),
   [333] = {.entry = {.count = 1, .reusable = false}}, SHIFT(324),
   [335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1751),
   [337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(607),
@@ -136381,77 +136332,77 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38),
   [499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33),
   [501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32),
-  [503] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(781),
-  [506] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(775),
-  [509] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(775),
-  [512] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(38),
-  [515] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(33),
-  [518] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(32),
-  [521] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(472),
-  [524] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1752),
-  [527] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(618),
-  [530] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(2513),
-  [533] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(810),
-  [536] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1721),
-  [539] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(785),
-  [542] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(560),
-  [545] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(470),
-  [548] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(797),
-  [551] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(797),
-  [554] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1241),
-  [557] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1961),
-  [560] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(619),
-  [563] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(620),
-  [566] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1887),
-  [569] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(593),
-  [572] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(500),
-  [575] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(602),
-  [578] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(41),
-  [581] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(45),
-  [584] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(44),
-  [587] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1749),
-  [590] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1403),
-  [593] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(561),
-  [596] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(561),
-  [599] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1772),
-  [602] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(2062),
-  [605] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(1841),
-  [608] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(562),
-  [611] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_base_type, 2, .production_id = 4),
-  [613] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_base_type, 2, .production_id = 4),
+  [503] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(781),
+  [506] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(775),
+  [509] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(775),
+  [512] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(38),
+  [515] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(33),
+  [518] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(32),
+  [521] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(472),
+  [524] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1752),
+  [527] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(618),
+  [530] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(2513),
+  [533] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(810),
+  [536] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1721),
+  [539] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(785),
+  [542] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(560),
+  [545] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(470),
+  [548] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(797),
+  [551] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(797),
+  [554] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1241),
+  [557] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1961),
+  [560] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(619),
+  [563] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(620),
+  [566] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1887),
+  [569] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(593),
+  [572] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(500),
+  [575] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(602),
+  [578] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(41),
+  [581] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(45),
+  [584] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(44),
+  [587] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1749),
+  [590] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1403),
+  [593] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(561),
+  [596] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(561),
+  [599] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1772),
+  [602] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(2062),
+  [605] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1841),
+  [608] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(562),
+  [611] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_base_type, 2, 0, 4),
+  [613] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_base_type, 2, 0, 4),
   [615] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2209),
   [617] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1232),
-  [619] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_base_type, 1, .production_id = 1),
-  [621] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_base_type, 1, .production_id = 1),
-  [623] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_base_type_repeat1, 2),
-  [625] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_base_type_repeat1, 2),
-  [627] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_base_type_repeat1, 2), SHIFT_REPEAT(2209),
-  [630] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 6, .production_id = 16),
-  [632] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 6, .production_id = 16),
-  [634] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 6, .production_id = 19),
-  [636] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 6, .production_id = 19),
-  [638] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_args, 4),
-  [640] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_args, 4),
-  [642] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_base_type, 3, .production_id = 4),
-  [644] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_base_type, 3, .production_id = 4),
-  [646] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 9, .production_id = 20),
-  [648] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 9, .production_id = 20),
-  [650] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 3),
-  [652] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 3),
-  [654] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 9, .production_id = 24),
-  [656] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 9, .production_id = 24),
-  [658] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 4, .production_id = 11),
-  [660] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 4, .production_id = 11),
-  [662] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 5),
-  [664] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 5),
-  [666] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_args, 3),
-  [668] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_args, 3),
-  [670] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 5, .production_id = 16),
-  [672] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 5, .production_id = 16),
-  [674] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 5, .production_id = 11),
-  [676] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 5, .production_id = 11),
-  [678] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type, 1),
-  [680] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type, 1),
+  [619] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_base_type, 1, 0, 1),
+  [621] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_base_type, 1, 0, 1),
+  [623] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_base_type_repeat1, 2, 0, 0),
+  [625] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_base_type_repeat1, 2, 0, 0),
+  [627] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_base_type_repeat1, 2, 0, 0), SHIFT_REPEAT(2209),
+  [630] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 6, 0, 16),
+  [632] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 6, 0, 16),
+  [634] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 6, 0, 19),
+  [636] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 6, 0, 19),
+  [638] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_args, 4, 0, 0),
+  [640] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_args, 4, 0, 0),
+  [642] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_base_type, 3, 0, 4),
+  [644] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_base_type, 3, 0, 4),
+  [646] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 9, 0, 20),
+  [648] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 9, 0, 20),
+  [650] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 3, 0, 0),
+  [652] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 3, 0, 0),
+  [654] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 9, 0, 24),
+  [656] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 9, 0, 24),
+  [658] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 4, 0, 11),
+  [660] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 4, 0, 11),
+  [662] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 5, 0, 0),
+  [664] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 5, 0, 0),
+  [666] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_args, 3, 0, 0),
+  [668] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_args, 3, 0, 0),
+  [670] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 5, 0, 16),
+  [672] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 5, 0, 16),
+  [674] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 5, 0, 11),
+  [676] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 5, 0, 11),
+  [678] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type, 1, 0, 0),
+  [680] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type, 1, 0, 0),
   [682] = {.entry = {.count = 1, .reusable = true}}, SHIFT(149),
   [684] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155),
   [686] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154),
@@ -136463,51 +136414,51 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [698] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163),
   [700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166),
   [702] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159),
-  [704] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 9, .production_id = 26),
-  [706] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 9, .production_id = 26),
-  [708] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 6),
-  [710] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 6),
-  [712] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 6, .production_id = 18),
-  [714] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 6, .production_id = 18),
-  [716] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 6, .production_id = 12),
-  [718] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 6, .production_id = 12),
-  [720] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 6, .production_id = 5),
-  [722] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 6, .production_id = 5),
-  [724] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_base_type, 2, .production_id = 1),
-  [726] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_base_type, 2, .production_id = 1),
-  [728] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 4),
-  [730] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 4),
-  [732] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 5, .production_id = 5),
-  [734] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 5, .production_id = 5),
-  [736] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, .production_id = 17),
-  [738] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, .production_id = 17),
-  [740] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, .production_id = 18),
-  [742] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, .production_id = 18),
-  [744] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7),
-  [746] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7),
-  [748] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, .production_id = 21),
-  [750] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, .production_id = 21),
-  [752] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, .production_id = 12),
-  [754] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, .production_id = 12),
-  [756] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, .production_id = 22),
-  [758] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, .production_id = 22),
-  [760] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, .production_id = 19),
-  [762] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, .production_id = 19),
-  [764] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 10, .production_id = 26),
-  [766] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 10, .production_id = 26),
-  [768] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 8, .production_id = 17),
-  [770] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 8, .production_id = 17),
-  [772] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 8, .production_id = 24),
-  [774] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 8, .production_id = 24),
-  [776] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 8, .production_id = 20),
-  [778] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 8, .production_id = 20),
-  [780] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 8, .production_id = 21),
-  [782] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 8, .production_id = 21),
-  [784] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 8, .production_id = 22),
-  [786] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 8, .production_id = 22),
+  [704] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 9, 0, 26),
+  [706] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 9, 0, 26),
+  [708] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 6, 0, 0),
+  [710] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 6, 0, 0),
+  [712] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 6, 0, 18),
+  [714] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 6, 0, 18),
+  [716] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 6, 0, 12),
+  [718] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 6, 0, 12),
+  [720] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 6, 0, 5),
+  [722] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 6, 0, 5),
+  [724] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_base_type, 2, 0, 1),
+  [726] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_base_type, 2, 0, 1),
+  [728] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 4, 0, 0),
+  [730] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 4, 0, 0),
+  [732] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 5, 0, 5),
+  [734] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 5, 0, 5),
+  [736] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, 0, 17),
+  [738] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, 0, 17),
+  [740] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, 0, 18),
+  [742] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, 0, 18),
+  [744] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, 0, 0),
+  [746] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, 0, 0),
+  [748] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, 0, 21),
+  [750] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, 0, 21),
+  [752] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, 0, 12),
+  [754] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, 0, 12),
+  [756] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, 0, 22),
+  [758] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, 0, 22),
+  [760] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 7, 0, 19),
+  [762] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 7, 0, 19),
+  [764] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 10, 0, 26),
+  [766] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 10, 0, 26),
+  [768] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 8, 0, 17),
+  [770] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 8, 0, 17),
+  [772] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 8, 0, 24),
+  [774] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 8, 0, 24),
+  [776] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 8, 0, 20),
+  [778] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 8, 0, 20),
+  [780] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 8, 0, 21),
+  [782] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 8, 0, 21),
+  [784] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_type, 8, 0, 22),
+  [786] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_type, 8, 0, 22),
   [788] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2207),
   [790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1330),
-  [792] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_base_type_repeat1, 2), SHIFT_REPEAT(2207),
+  [792] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_base_type_repeat1, 2, 0, 0), SHIFT_REPEAT(2207),
   [795] = {.entry = {.count = 1, .reusable = true}}, SHIFT(211),
   [797] = {.entry = {.count = 1, .reusable = true}}, SHIFT(208),
   [799] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205),
@@ -136519,80 +136470,80 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [811] = {.entry = {.count = 1, .reusable = true}}, SHIFT(194),
   [813] = {.entry = {.count = 1, .reusable = true}}, SHIFT(192),
   [815] = {.entry = {.count = 1, .reusable = true}}, SHIFT(191),
-  [817] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_viewpoint_type, 3),
-  [819] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_viewpoint_type, 3),
+  [817] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_viewpoint_type, 3, 0, 0),
+  [819] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_viewpoint_type, 3, 0, 0),
   [821] = {.entry = {.count = 1, .reusable = false}}, SHIFT(165),
   [823] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164),
   [825] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1269),
   [827] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1271),
   [829] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1273),
-  [831] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 14),
-  [833] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 14),
+  [831] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 14, 0, 0),
+  [833] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 14, 0, 0),
   [835] = {.entry = {.count = 1, .reusable = true}}, SHIFT(318),
-  [837] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 13),
-  [839] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 13),
-  [841] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 12),
-  [843] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 12),
-  [845] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 11),
-  [847] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 11),
-  [849] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 10),
-  [851] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 10),
-  [853] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 7),
-  [855] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 7),
-  [857] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_declaration, 4),
-  [859] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable_declaration, 4),
-  [861] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 6),
-  [863] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 6),
-  [865] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 9),
-  [867] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 9),
-  [869] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_union_type_repeat1, 2),
-  [871] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_union_type_repeat1, 2),
-  [873] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 8),
-  [875] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 8),
-  [877] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cast_expression, 3),
-  [879] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cast_expression, 3),
-  [881] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_intersection_type_repeat1, 2),
-  [883] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_intersection_type_repeat1, 2),
-  [885] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_union_type, 2),
-  [887] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_union_type, 2),
-  [889] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_intersection_type_repeat1, 2), SHIFT_REPEAT(1271),
-  [892] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_intersection_type, 2),
-  [894] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_intersection_type, 2),
-  [896] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_union_type_repeat1, 2), SHIFT_REPEAT(1269),
-  [899] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_iso_type, 2),
-  [901] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_iso_type, 2),
-  [903] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_box_type, 2),
-  [905] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_box_type, 2),
-  [907] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_val_type, 2),
-  [909] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_val_type, 2),
-  [911] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tag_type, 2),
-  [913] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tag_type, 2),
-  [915] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ref_type, 2),
-  [917] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ref_type, 2),
-  [919] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trn_type, 2),
-  [921] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_trn_type, 2),
-  [923] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_type, 3),
-  [925] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_type, 3),
-  [927] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_read_type, 2),
-  [929] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_read_type, 2),
-  [931] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_intersection_type, 4),
-  [933] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_intersection_type, 4),
-  [935] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_any_type, 2),
-  [937] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_any_type, 2),
-  [939] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_union_type, 4),
-  [941] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_union_type, 4),
-  [943] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_send_type, 2),
-  [945] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_send_type, 2),
-  [947] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_type, 4),
-  [949] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_type, 4),
-  [951] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_share_type, 2),
-  [953] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_share_type, 2),
-  [955] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ephemeral_type, 2),
-  [957] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ephemeral_type, 2),
-  [959] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_aliased_type, 2),
-  [961] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_aliased_type, 2),
-  [963] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_alias_type, 2),
-  [965] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_alias_type, 2),
+  [837] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 13, 0, 0),
+  [839] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 13, 0, 0),
+  [841] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 12, 0, 0),
+  [843] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 12, 0, 0),
+  [845] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 11, 0, 0),
+  [847] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 11, 0, 0),
+  [849] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 10, 0, 0),
+  [851] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 10, 0, 0),
+  [853] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 7, 0, 0),
+  [855] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 7, 0, 0),
+  [857] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_declaration, 4, 0, 0),
+  [859] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable_declaration, 4, 0, 0),
+  [861] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 6, 0, 0),
+  [863] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 6, 0, 0),
+  [865] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 9, 0, 0),
+  [867] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 9, 0, 0),
+  [869] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_union_type_repeat1, 2, 0, 0),
+  [871] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_union_type_repeat1, 2, 0, 0),
+  [873] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 8, 0, 0),
+  [875] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 8, 0, 0),
+  [877] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cast_expression, 3, 0, 0),
+  [879] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cast_expression, 3, 0, 0),
+  [881] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_intersection_type_repeat1, 2, 0, 0),
+  [883] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_intersection_type_repeat1, 2, 0, 0),
+  [885] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_union_type, 2, 0, 0),
+  [887] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_union_type, 2, 0, 0),
+  [889] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_intersection_type_repeat1, 2, 0, 0), SHIFT_REPEAT(1271),
+  [892] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_intersection_type, 2, 0, 0),
+  [894] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_intersection_type, 2, 0, 0),
+  [896] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_union_type_repeat1, 2, 0, 0), SHIFT_REPEAT(1269),
+  [899] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_iso_type, 2, 0, 0),
+  [901] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_iso_type, 2, 0, 0),
+  [903] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_box_type, 2, 0, 0),
+  [905] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_box_type, 2, 0, 0),
+  [907] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_val_type, 2, 0, 0),
+  [909] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_val_type, 2, 0, 0),
+  [911] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tag_type, 2, 0, 0),
+  [913] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tag_type, 2, 0, 0),
+  [915] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ref_type, 2, 0, 0),
+  [917] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ref_type, 2, 0, 0),
+  [919] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trn_type, 2, 0, 0),
+  [921] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_trn_type, 2, 0, 0),
+  [923] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_type, 3, 0, 0),
+  [925] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_type, 3, 0, 0),
+  [927] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_read_type, 2, 0, 0),
+  [929] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_read_type, 2, 0, 0),
+  [931] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_intersection_type, 4, 0, 0),
+  [933] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_intersection_type, 4, 0, 0),
+  [935] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_any_type, 2, 0, 0),
+  [937] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_any_type, 2, 0, 0),
+  [939] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_union_type, 4, 0, 0),
+  [941] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_union_type, 4, 0, 0),
+  [943] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_send_type, 2, 0, 0),
+  [945] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_send_type, 2, 0, 0),
+  [947] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_type, 4, 0, 0),
+  [949] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_type, 4, 0, 0),
+  [951] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_share_type, 2, 0, 0),
+  [953] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_share_type, 2, 0, 0),
+  [955] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ephemeral_type, 2, 0, 0),
+  [957] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ephemeral_type, 2, 0, 0),
+  [959] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_aliased_type, 2, 0, 0),
+  [961] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_aliased_type, 2, 0, 0),
+  [963] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_alias_type, 2, 0, 0),
+  [965] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_alias_type, 2, 0, 0),
   [967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(371),
   [969] = {.entry = {.count = 1, .reusable = false}}, SHIFT(218),
   [971] = {.entry = {.count = 1, .reusable = true}}, SHIFT(217),
@@ -136601,88 +136552,88 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [977] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1237),
   [979] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2477),
   [981] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1340),
-  [983] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_union_type_repeat1, 2), SHIFT_REPEAT(1239),
-  [986] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_intersection_type_repeat1, 2), SHIFT_REPEAT(1238),
-  [989] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_base_type_repeat1, 2), SHIFT_REPEAT(2477),
-  [992] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1),
-  [994] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1),
+  [983] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_union_type_repeat1, 2, 0, 0), SHIFT_REPEAT(1239),
+  [986] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_intersection_type_repeat1, 2, 0, 0), SHIFT_REPEAT(1238),
+  [989] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_base_type_repeat1, 2, 0, 0), SHIFT_REPEAT(2477),
+  [992] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1, 0, 0),
+  [994] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1, 0, 0),
   [996] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1234),
-  [998] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_partial_application, 3),
-  [1000] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_partial_application, 3),
-  [1002] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 5, .production_id = 14),
-  [1004] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 5, .production_id = 14),
-  [1006] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ffi_identifier, 2),
-  [1008] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ffi_identifier, 2),
-  [1010] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_declaration, 2),
-  [1012] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable_declaration, 2),
+  [998] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_partial_application, 3, 0, 0),
+  [1000] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_partial_application, 3, 0, 0),
+  [1002] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 5, 0, 14),
+  [1004] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 5, 0, 14),
+  [1006] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ffi_identifier, 2, 0, 0),
+  [1008] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ffi_identifier, 2, 0, 0),
+  [1010] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_declaration, 2, 0, 0),
+  [1012] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable_declaration, 2, 0, 0),
   [1014] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1362),
-  [1016] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__string_literal, 3),
-  [1018] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__string_literal, 3),
-  [1020] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__multiline_string_literal, 2),
-  [1022] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__multiline_string_literal, 2),
-  [1024] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__string_literal, 2),
-  [1026] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__string_literal, 2),
-  [1028] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__multiline_string_literal, 3),
-  [1030] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__multiline_string_literal, 3),
-  [1032] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 2),
-  [1034] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 2),
-  [1036] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_member_expression, 3),
-  [1038] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_member_expression, 3),
-  [1040] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 1),
-  [1042] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 1),
-  [1044] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 4, .production_id = 14),
-  [1046] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 4, .production_id = 14),
-  [1048] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 4, .production_id = 10),
-  [1050] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 4, .production_id = 10),
-  [1052] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 3),
-  [1054] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 3),
-  [1056] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 3, .production_id = 10),
-  [1058] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 3, .production_id = 10),
-  [1060] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call_expression, 2, .production_id = 3),
-  [1062] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call_expression, 2, .production_id = 3),
+  [1016] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__string_literal, 3, 0, 0),
+  [1018] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__string_literal, 3, 0, 0),
+  [1020] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__multiline_string_literal, 2, 0, 0),
+  [1022] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__multiline_string_literal, 2, 0, 0),
+  [1024] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__string_literal, 2, 0, 0),
+  [1026] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__string_literal, 2, 0, 0),
+  [1028] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__multiline_string_literal, 3, 0, 0),
+  [1030] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__multiline_string_literal, 3, 0, 0),
+  [1032] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 2, 0, 0),
+  [1034] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 2, 0, 0),
+  [1036] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_member_expression, 3, 0, 0),
+  [1038] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_member_expression, 3, 0, 0),
+  [1040] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 1, 0, 0),
+  [1042] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 1, 0, 0),
+  [1044] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 4, 0, 14),
+  [1046] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 4, 0, 14),
+  [1048] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 4, 0, 10),
+  [1050] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 4, 0, 10),
+  [1052] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 3, 0, 0),
+  [1054] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 3, 0, 0),
+  [1056] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 3, 0, 10),
+  [1058] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 3, 0, 10),
+  [1060] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call_expression, 2, 0, 3),
+  [1062] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call_expression, 2, 0, 3),
   [1064] = {.entry = {.count = 1, .reusable = true}}, SHIFT(319),
-  [1066] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6),
-  [1068] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6),
-  [1070] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 2),
-  [1072] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_statement, 2),
-  [1074] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_statement, 2),
-  [1076] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_continue_statement, 2),
-  [1078] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_statement, 2),
-  [1080] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_break_statement, 2),
-  [1082] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_consume_statement, 2),
-  [1084] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_consume_statement, 2),
-  [1086] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_literal, 2),
-  [1088] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object_literal, 2),
-  [1090] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5),
-  [1092] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5),
-  [1094] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_expression, 2),
-  [1096] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generic_expression, 2),
-  [1098] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5),
-  [1100] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5),
-  [1102] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_iftype_statement, 7),
-  [1104] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_iftype_statement, 7),
-  [1106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_do_block, 3),
-  [1108] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_do_block, 3),
-  [1110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 3),
-  [1112] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 3),
-  [1114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 3),
-  [1116] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 3),
-  [1118] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 5, .production_id = 13),
-  [1120] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 5, .production_id = 13),
-  [1122] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 5),
-  [1124] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 5),
-  [1126] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_recover_statement, 5),
-  [1128] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_recover_statement, 5),
-  [1130] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_expression, 5),
-  [1132] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_expression, 5),
-  [1134] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 5),
-  [1136] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 5),
-  [1138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 5),
-  [1140] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_literal, 5),
-  [1142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_expression, 3),
-  [1144] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesized_expression, 3),
-  [1146] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_literal, 5),
-  [1148] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object_literal, 5),
+  [1066] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, 0, 0),
+  [1068] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, 0, 0),
+  [1070] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 2, 0, 0),
+  [1072] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_statement, 2, 0, 0),
+  [1074] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_statement, 2, 0, 0),
+  [1076] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_continue_statement, 2, 0, 0),
+  [1078] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_statement, 2, 0, 0),
+  [1080] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_break_statement, 2, 0, 0),
+  [1082] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_consume_statement, 2, 0, 0),
+  [1084] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_consume_statement, 2, 0, 0),
+  [1086] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_literal, 2, 0, 0),
+  [1088] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object_literal, 2, 0, 0),
+  [1090] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, 0, 0),
+  [1092] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, 0, 0),
+  [1094] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_expression, 2, 0, 0),
+  [1096] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generic_expression, 2, 0, 0),
+  [1098] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, 0, 0),
+  [1100] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, 0, 0),
+  [1102] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_iftype_statement, 7, 0, 0),
+  [1104] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_iftype_statement, 7, 0, 0),
+  [1106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_do_block, 3, 0, 0),
+  [1108] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_do_block, 3, 0, 0),
+  [1110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 3, 0, 0),
+  [1112] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 3, 0, 0),
+  [1114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 3, 0, 0),
+  [1116] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 3, 0, 0),
+  [1118] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 5, 0, 13),
+  [1120] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 5, 0, 13),
+  [1122] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 5, 0, 0),
+  [1124] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 5, 0, 0),
+  [1126] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_recover_statement, 5, 0, 0),
+  [1128] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_recover_statement, 5, 0, 0),
+  [1130] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_expression, 5, 0, 0),
+  [1132] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_expression, 5, 0, 0),
+  [1134] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 5, 0, 0),
+  [1136] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 5, 0, 0),
+  [1138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 5, 0, 0),
+  [1140] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_literal, 5, 0, 0),
+  [1142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_expression, 3, 0, 0),
+  [1144] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesized_expression, 3, 0, 0),
+  [1146] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_literal, 5, 0, 0),
+  [1148] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object_literal, 5, 0, 0),
   [1150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(460),
   [1152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(465),
   [1154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(449),
@@ -136694,114 +136645,114 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [1166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(453),
   [1168] = {.entry = {.count = 1, .reusable = true}}, SHIFT(452),
   [1170] = {.entry = {.count = 1, .reusable = true}}, SHIFT(461),
-  [1172] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5),
-  [1174] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5),
-  [1176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_iftype_statement, 8),
-  [1178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_iftype_statement, 8),
-  [1180] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 4),
-  [1182] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 4),
-  [1184] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 3),
-  [1186] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 3),
-  [1188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 3),
-  [1190] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_literal, 3),
-  [1192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_literal, 4),
-  [1194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object_literal, 4),
-  [1196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4),
-  [1198] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4),
-  [1200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_recover_statement, 4),
-  [1202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_recover_statement, 4),
-  [1204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 4),
-  [1206] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 4),
-  [1208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_recover_statement, 3),
-  [1210] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_recover_statement, 3),
-  [1212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 4),
-  [1214] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 4),
-  [1216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 4),
-  [1218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 4),
-  [1220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_literal, 1),
-  [1222] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_literal, 1),
-  [1224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean, 1),
-  [1226] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_boolean, 1),
-  [1228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 15),
-  [1230] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 15),
-  [1232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 6),
-  [1234] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_literal, 6),
-  [1236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_expression, 6),
-  [1238] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_expression, 6),
-  [1240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_consume_statement, 3),
-  [1242] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_consume_statement, 3),
-  [1244] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_iftype_statement, 6),
-  [1246] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_iftype_statement, 6),
-  [1248] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_literal, 3),
-  [1250] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object_literal, 3),
-  [1252] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_do_block, 4),
-  [1254] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_do_block, 4),
-  [1256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 6),
-  [1258] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 6),
-  [1260] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 6),
-  [1262] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 6),
-  [1264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 8),
-  [1266] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 8),
-  [1268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 7),
-  [1270] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 7),
-  [1272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 2),
-  [1274] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_literal, 2),
-  [1276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_compile_error, 2),
-  [1278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_compile_error, 2),
-  [1280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_character, 3),
-  [1282] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_character, 3),
-  [1284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment_expression, 3),
-  [1286] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment_expression, 3),
-  [1288] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_capability, 1),
-  [1290] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_capability, 1),
-  [1292] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call_expression, 3, .production_id = 3),
-  [1294] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call_expression, 3, .production_id = 3),
-  [1296] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_compile_error, 1),
-  [1298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_compile_error, 1),
-  [1300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 3),
-  [1302] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 3),
-  [1304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_literal, 6),
-  [1306] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object_literal, 6),
+  [1172] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 0),
+  [1174] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 0),
+  [1176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_iftype_statement, 8, 0, 0),
+  [1178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_iftype_statement, 8, 0, 0),
+  [1180] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 4, 0, 0),
+  [1182] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 4, 0, 0),
+  [1184] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 3, 0, 0),
+  [1186] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 3, 0, 0),
+  [1188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 3, 0, 0),
+  [1190] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_literal, 3, 0, 0),
+  [1192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_literal, 4, 0, 0),
+  [1194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object_literal, 4, 0, 0),
+  [1196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, 0, 0),
+  [1198] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, 0, 0),
+  [1200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_recover_statement, 4, 0, 0),
+  [1202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_recover_statement, 4, 0, 0),
+  [1204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 4, 0, 0),
+  [1206] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 4, 0, 0),
+  [1208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_recover_statement, 3, 0, 0),
+  [1210] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_recover_statement, 3, 0, 0),
+  [1212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 4, 0, 0),
+  [1214] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 4, 0, 0),
+  [1216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 4, 0, 0),
+  [1218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 4, 0, 0),
+  [1220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_literal, 1, 0, 0),
+  [1222] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_literal, 1, 0, 0),
+  [1224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean, 1, 0, 0),
+  [1226] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_boolean, 1, 0, 0),
+  [1228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 15, 0, 0),
+  [1230] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 15, 0, 0),
+  [1232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 6, 0, 0),
+  [1234] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_literal, 6, 0, 0),
+  [1236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_expression, 6, 0, 0),
+  [1238] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_expression, 6, 0, 0),
+  [1240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_consume_statement, 3, 0, 0),
+  [1242] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_consume_statement, 3, 0, 0),
+  [1244] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_iftype_statement, 6, 0, 0),
+  [1246] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_iftype_statement, 6, 0, 0),
+  [1248] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_literal, 3, 0, 0),
+  [1250] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object_literal, 3, 0, 0),
+  [1252] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_do_block, 4, 0, 0),
+  [1254] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_do_block, 4, 0, 0),
+  [1256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 6, 0, 0),
+  [1258] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 6, 0, 0),
+  [1260] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 6, 0, 0),
+  [1262] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 6, 0, 0),
+  [1264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 8, 0, 0),
+  [1266] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 8, 0, 0),
+  [1268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 7, 0, 0),
+  [1270] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 7, 0, 0),
+  [1272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 2, 0, 0),
+  [1274] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_literal, 2, 0, 0),
+  [1276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_compile_error, 2, 0, 0),
+  [1278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_compile_error, 2, 0, 0),
+  [1280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_character, 3, 0, 0),
+  [1282] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_character, 3, 0, 0),
+  [1284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment_expression, 3, 0, 0),
+  [1286] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment_expression, 3, 0, 0),
+  [1288] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_capability, 1, 0, 0),
+  [1290] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_capability, 1, 0, 0),
+  [1292] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call_expression, 3, 0, 3),
+  [1294] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call_expression, 3, 0, 3),
+  [1296] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_compile_error, 1, 0, 0),
+  [1298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_compile_error, 1, 0, 0),
+  [1300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 3, 0, 0),
+  [1302] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 3, 0, 0),
+  [1304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_literal, 6, 0, 0),
+  [1306] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object_literal, 6, 0, 0),
   [1308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1364),
   [1310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1363),
   [1312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(399),
-  [1314] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 1),
-  [1316] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 1),
-  [1318] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_expression, 2, .production_id = 2),
-  [1320] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_expression, 2, .production_id = 2),
-  [1322] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_expression, 3, .production_id = 6),
-  [1324] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_expression, 3, .production_id = 6),
-  [1326] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_chain_expression, 3),
-  [1328] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chain_expression, 3),
+  [1314] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 1, 0, 0),
+  [1316] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 1, 0, 0),
+  [1318] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_expression, 2, 0, 2),
+  [1320] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_expression, 2, 0, 2),
+  [1322] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_expression, 3, 0, 6),
+  [1324] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_expression, 3, 0, 6),
+  [1326] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_chain_expression, 3, 0, 0),
+  [1328] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chain_expression, 3, 0, 0),
   [1330] = {.entry = {.count = 1, .reusable = true}}, SHIFT(525),
   [1332] = {.entry = {.count = 1, .reusable = false}}, SHIFT(457),
   [1334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(462),
   [1336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1337),
   [1338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1338),
   [1340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1339),
-  [1342] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_intersection_type_repeat1, 2), SHIFT_REPEAT(1338),
-  [1345] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_union_type_repeat1, 2), SHIFT_REPEAT(1337),
+  [1342] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_intersection_type_repeat1, 2, 0, 0), SHIFT_REPEAT(1338),
+  [1345] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_union_type_repeat1, 2, 0, 0), SHIFT_REPEAT(1337),
   [1348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(855),
   [1350] = {.entry = {.count = 1, .reusable = false}}, SHIFT(856),
   [1352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(831),
   [1354] = {.entry = {.count = 1, .reusable = false}}, SHIFT(850),
-  [1356] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(855),
-  [1359] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(831),
+  [1356] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(855),
+  [1359] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(831),
   [1362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1265),
   [1364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2316),
   [1366] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1082),
   [1368] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1282),
   [1370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(565),
-  [1372] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_while_statement_repeat1, 1),
+  [1372] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_while_statement_repeat1, 1, 0, 0),
   [1374] = {.entry = {.count = 1, .reusable = false}}, SHIFT(663),
-  [1376] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 1),
+  [1376] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 1, 0, 0),
   [1378] = {.entry = {.count = 1, .reusable = false}}, SHIFT(800),
   [1380] = {.entry = {.count = 1, .reusable = false}}, SHIFT(811),
   [1382] = {.entry = {.count = 1, .reusable = true}}, SHIFT(800),
   [1384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(820),
   [1386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(823),
   [1388] = {.entry = {.count = 1, .reusable = false}}, SHIFT(775),
-  [1390] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(810),
+  [1390] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(810),
   [1393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(810),
   [1395] = {.entry = {.count = 1, .reusable = false}}, SHIFT(797),
   [1397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(484),
@@ -136861,38 +136812,38 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [1505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1042),
   [1507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1852),
   [1509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1041),
-  [1511] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(324),
-  [1514] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(1751),
-  [1517] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(607),
-  [1520] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(2218),
-  [1523] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(831),
-  [1526] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(1727),
-  [1529] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(390),
-  [1532] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(321),
-  [1535] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(815),
-  [1538] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(815),
-  [1541] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(606),
-  [1544] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(606),
-  [1547] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(1248),
-  [1550] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(1982),
-  [1553] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(614),
-  [1556] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(621),
-  [1559] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(1880),
-  [1562] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(598),
-  [1565] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2),
-  [1567] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(478),
-  [1570] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(605),
-  [1573] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(52),
-  [1576] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(53),
-  [1579] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(54),
-  [1582] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(1738),
-  [1585] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(1382),
-  [1588] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(400),
-  [1591] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(400),
-  [1594] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(1787),
-  [1597] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(1935),
-  [1600] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(1817),
-  [1603] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2), SHIFT_REPEAT(396),
+  [1511] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(324),
+  [1514] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1751),
+  [1517] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(607),
+  [1520] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(2218),
+  [1523] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(831),
+  [1526] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1727),
+  [1529] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(390),
+  [1532] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(321),
+  [1535] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(815),
+  [1538] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(815),
+  [1541] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(606),
+  [1544] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(606),
+  [1547] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1248),
+  [1550] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1982),
+  [1553] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(614),
+  [1556] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(621),
+  [1559] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1880),
+  [1562] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(598),
+  [1565] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0),
+  [1567] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(478),
+  [1570] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(605),
+  [1573] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(52),
+  [1576] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(53),
+  [1579] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(54),
+  [1582] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1738),
+  [1585] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1382),
+  [1588] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(400),
+  [1591] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(400),
+  [1594] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1787),
+  [1597] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1935),
+  [1600] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1817),
+  [1603] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_while_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(396),
   [1606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1004),
   [1608] = {.entry = {.count = 1, .reusable = true}}, SHIFT(551),
   [1610] = {.entry = {.count = 1, .reusable = true}}, SHIFT(868),
@@ -136908,14 +136859,14 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [1630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20),
   [1632] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2347),
   [1634] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1342),
-  [1636] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 6, .production_id = 8),
+  [1636] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 6, 0, 8),
   [1638] = {.entry = {.count = 1, .reusable = false}}, SHIFT(709),
   [1640] = {.entry = {.count = 1, .reusable = false}}, SHIFT(851),
   [1642] = {.entry = {.count = 1, .reusable = false}}, SHIFT(852),
   [1644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(851),
   [1646] = {.entry = {.count = 1, .reusable = true}}, SHIFT(853),
   [1648] = {.entry = {.count = 1, .reusable = true}}, SHIFT(854),
-  [1650] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_base_type_repeat1, 2), SHIFT_REPEAT(2347),
+  [1650] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_base_type_repeat1, 2, 0, 0), SHIFT_REPEAT(2347),
   [1653] = {.entry = {.count = 1, .reusable = true}}, SHIFT(943),
   [1655] = {.entry = {.count = 1, .reusable = true}}, SHIFT(933),
   [1657] = {.entry = {.count = 1, .reusable = true}}, SHIFT(947),
@@ -136939,8 +136890,8 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [1693] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1262),
   [1695] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1259),
   [1697] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1257),
-  [1699] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_intersection_type_repeat1, 2), SHIFT_REPEAT(1259),
-  [1702] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_union_type_repeat1, 2), SHIFT_REPEAT(1262),
+  [1699] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_intersection_type_repeat1, 2, 0, 0), SHIFT_REPEAT(1259),
+  [1702] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_union_type_repeat1, 2, 0, 0), SHIFT_REPEAT(1262),
   [1705] = {.entry = {.count = 1, .reusable = false}}, SHIFT(786),
   [1707] = {.entry = {.count = 1, .reusable = true}}, SHIFT(779),
   [1709] = {.entry = {.count = 1, .reusable = true}}, SHIFT(774),
@@ -136964,8 +136915,8 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [1745] = {.entry = {.count = 1, .reusable = true}}, SHIFT(501),
   [1747] = {.entry = {.count = 1, .reusable = true}}, SHIFT(978),
   [1749] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1331),
-  [1751] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_case_statement_repeat1, 2),
-  [1753] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_case_statement_repeat1, 2),
+  [1751] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_case_statement_repeat1, 2, 0, 0),
+  [1753] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_case_statement_repeat1, 2, 0, 0),
   [1755] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1243),
   [1757] = {.entry = {.count = 1, .reusable = true}}, SHIFT(989),
   [1759] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2263),
@@ -136973,7 +136924,7 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [1763] = {.entry = {.count = 1, .reusable = true}}, SHIFT(416),
   [1765] = {.entry = {.count = 1, .reusable = true}}, SHIFT(596),
   [1767] = {.entry = {.count = 1, .reusable = true}}, SHIFT(378),
-  [1769] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_tuple_expression_repeat1, 2),
+  [1769] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_tuple_expression_repeat1, 2, 0, 0),
   [1771] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1046),
   [1773] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1038),
   [1775] = {.entry = {.count = 1, .reusable = true}}, SHIFT(286),
@@ -136999,17 +136950,17 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [1815] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1290),
   [1817] = {.entry = {.count = 1, .reusable = true}}, SHIFT(813),
   [1819] = {.entry = {.count = 1, .reusable = true}}, SHIFT(252),
-  [1821] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_lambda_captures_repeat1, 4),
-  [1823] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 5, .production_id = 1),
-  [1825] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_lambda_captures_repeat1, 6),
-  [1827] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameter, 3, .production_id = 1),
-  [1829] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameter, 5, .production_id = 1),
-  [1831] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_argument, 3),
-  [1833] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_base_type_repeat1, 2), SHIFT_REPEAT(2293),
-  [1836] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_annotation, 4),
-  [1838] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation, 4),
-  [1840] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_annotation, 3),
-  [1842] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation, 3),
+  [1821] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_lambda_captures_repeat1, 4, 0, 0),
+  [1823] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 5, 0, 1),
+  [1825] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_lambda_captures_repeat1, 6, 0, 0),
+  [1827] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameter, 3, 0, 1),
+  [1829] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameter, 5, 0, 1),
+  [1831] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_argument, 3, 0, 0),
+  [1833] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_base_type_repeat1, 2, 0, 0), SHIFT_REPEAT(2293),
+  [1836] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_annotation, 4, 0, 0),
+  [1838] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation, 4, 0, 0),
+  [1840] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_annotation, 3, 0, 0),
+  [1842] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation, 3, 0, 0),
   [1844] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1156),
   [1846] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1162),
   [1848] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1165),
@@ -137026,62 +136977,62 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [1870] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1278),
   [1872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1288),
   [1874] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1291),
-  [1876] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 7),
+  [1876] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 7, 0, 0),
   [1878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2205),
   [1880] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1554),
   [1882] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1533),
   [1884] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1552),
-  [1886] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 4),
-  [1888] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 4),
-  [1890] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_union_type_repeat1, 2), SHIFT_REPEAT(1278),
-  [1893] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_intersection_type_repeat1, 2), SHIFT_REPEAT(1288),
-  [1896] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 6),
-  [1898] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 4),
-  [1900] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 7),
-  [1902] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6),
-  [1904] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 6),
-  [1906] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 4),
-  [1908] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 5),
-  [1910] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 6),
-  [1912] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 7),
-  [1914] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 6),
-  [1916] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 5),
-  [1918] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 6),
-  [1920] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 5),
-  [1922] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 7),
-  [1924] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 5),
-  [1926] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 5),
-  [1928] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 4),
-  [1930] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 4),
-  [1932] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5),
+  [1886] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 4, 0, 0),
+  [1888] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 4, 0, 0),
+  [1890] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_union_type_repeat1, 2, 0, 0), SHIFT_REPEAT(1278),
+  [1893] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_intersection_type_repeat1, 2, 0, 0), SHIFT_REPEAT(1288),
+  [1896] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 6, 0, 0),
+  [1898] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 4, 0, 0),
+  [1900] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 7, 0, 0),
+  [1902] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 0),
+  [1904] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 6, 0, 0),
+  [1906] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 4, 0, 0),
+  [1908] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 5, 0, 0),
+  [1910] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 6, 0, 0),
+  [1912] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 7, 0, 0),
+  [1914] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 6, 0, 0),
+  [1916] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 5, 0, 0),
+  [1918] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 6, 0, 0),
+  [1920] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 5, 0, 0),
+  [1922] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 7, 0, 0),
+  [1924] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 5, 0, 0),
+  [1926] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 5, 0, 0),
+  [1928] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 4, 0, 0),
+  [1930] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 4, 0, 0),
+  [1932] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 0),
   [1934] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2118),
   [1936] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1374),
   [1938] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1368),
   [1940] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1369),
-  [1942] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 3),
+  [1942] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 3, 0, 0),
   [1944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1275),
-  [1946] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 2),
+  [1946] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 2, 0, 0),
   [1948] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1344),
-  [1950] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 2),
+  [1950] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 2, 0, 0),
   [1952] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1311),
-  [1954] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 3),
+  [1954] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 3, 0, 0),
   [1956] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1218),
-  [1958] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 3),
+  [1958] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 3, 0, 0),
   [1960] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1208),
   [1962] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1375),
-  [1964] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 3),
+  [1964] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 3, 0, 0),
   [1966] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1210),
-  [1968] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 3),
+  [1968] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 3, 0, 0),
   [1970] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1247),
-  [1972] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 3),
+  [1972] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 3, 0, 0),
   [1974] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1220),
-  [1976] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 2),
+  [1976] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 2, 0, 0),
   [1978] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1361),
-  [1980] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 2),
+  [1980] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 2, 0, 0),
   [1982] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1283),
-  [1984] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 2),
+  [1984] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 2, 0, 0),
   [1986] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1373),
-  [1988] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 2),
+  [1988] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 2, 0, 0),
   [1990] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1356),
   [1992] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1211),
   [1994] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1230),
@@ -137089,27 +137040,27 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [1998] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1233),
   [2000] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1244),
   [2002] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1366),
-  [2004] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 4, .production_id = 8),
+  [2004] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 4, 0, 8),
   [2006] = {.entry = {.count = 1, .reusable = true}}, SHIFT(802),
   [2008] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1070),
   [2010] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2206),
   [2012] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1359),
   [2014] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1520),
   [2016] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1157),
-  [2018] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 5, .production_id = 12),
+  [2018] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 5, 0, 12),
   [2020] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1465),
   [2022] = {.entry = {.count = 1, .reusable = true}}, SHIFT(674),
-  [2024] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 7, .production_id = 20),
+  [2024] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 7, 0, 20),
   [2026] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1450),
   [2028] = {.entry = {.count = 1, .reusable = true}}, SHIFT(764),
   [2030] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1962),
-  [2032] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 8, .production_id = 23),
+  [2032] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 8, 0, 23),
   [2034] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1456),
   [2036] = {.entry = {.count = 1, .reusable = true}}, SHIFT(753),
-  [2038] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 6, .production_id = 17),
+  [2038] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 6, 0, 17),
   [2040] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1460),
   [2042] = {.entry = {.count = 1, .reusable = true}}, SHIFT(750),
-  [2044] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 9, .production_id = 25),
+  [2044] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 9, 0, 25),
   [2046] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1448),
   [2048] = {.entry = {.count = 1, .reusable = true}}, SHIFT(744),
   [2050] = {.entry = {.count = 1, .reusable = false}}, SHIFT(94),
@@ -137132,8 +137083,8 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2084] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1246),
   [2086] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1523),
   [2088] = {.entry = {.count = 1, .reusable = true}}, SHIFT(459),
-  [2090] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 8),
-  [2092] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 8),
+  [2090] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 8, 0, 0),
+  [2092] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 8, 0, 0),
   [2094] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1289),
   [2096] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2500),
   [2098] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1576),
@@ -137142,90 +137093,90 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(382),
   [2106] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1229),
   [2108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(231),
-  [2110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 7),
+  [2110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 7, 0, 0),
   [2112] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1235),
   [2114] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1026),
   [2116] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1365),
   [2118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(564),
-  [2120] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 8),
-  [2122] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 8),
-  [2124] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 7),
-  [2126] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 5, .production_id = 5),
+  [2120] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 8, 0, 0),
+  [2122] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 8, 0, 0),
+  [2124] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 7, 0, 0),
+  [2126] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 5, 0, 5),
   [2128] = {.entry = {.count = 1, .reusable = true}}, SHIFT(542),
   [2130] = {.entry = {.count = 1, .reusable = true}}, SHIFT(363),
   [2132] = {.entry = {.count = 1, .reusable = true}}, SHIFT(253),
   [2134] = {.entry = {.count = 1, .reusable = true}}, SHIFT(553),
   [2136] = {.entry = {.count = 1, .reusable = true}}, SHIFT(982),
-  [2138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 4),
+  [2138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 4, 0, 0),
   [2140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1018),
   [2142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(266),
-  [2144] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_members, 1),
+  [2144] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_members, 1, 0, 0),
   [2146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(347),
-  [2148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 2),
-  [2150] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameters, 2),
-  [2152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 3),
+  [2148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 2, 0, 0),
+  [2150] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameters, 2, 0, 0),
+  [2152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 3, 0, 0),
   [2154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1464),
   [2156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1206),
   [2158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(715),
-  [2160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 6),
+  [2160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 6, 0, 0),
   [2162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1462),
   [2164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1242),
   [2166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(752),
-  [2168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 4),
-  [2170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameters, 4),
-  [2172] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 4),
+  [2168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 4, 0, 0),
+  [2170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameters, 4, 0, 0),
+  [2172] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 4, 0, 0),
   [2174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1445),
   [2176] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1346),
   [2178] = {.entry = {.count = 1, .reusable = true}}, SHIFT(712),
   [2180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(857),
-  [2182] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 3),
-  [2184] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameters, 3),
-  [2186] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 5),
+  [2182] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 3, 0, 0),
+  [2184] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameters, 3, 0, 0),
+  [2186] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 5, 0, 0),
   [2188] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1459),
   [2190] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1277),
   [2192] = {.entry = {.count = 1, .reusable = true}}, SHIFT(671),
-  [2194] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 7),
+  [2194] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 7, 0, 0),
   [2196] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1457),
   [2198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1355),
   [2200] = {.entry = {.count = 1, .reusable = true}}, SHIFT(763),
-  [2202] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_parameters, 3),
-  [2204] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generic_parameters, 3),
-  [2206] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 5),
+  [2202] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_parameters, 3, 0, 0),
+  [2204] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generic_parameters, 3, 0, 0),
+  [2206] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 5, 0, 0),
   [2208] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1463),
   [2210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(668),
-  [2212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 3),
+  [2212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 3, 0, 0),
   [2214] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1447),
   [2216] = {.entry = {.count = 1, .reusable = true}}, SHIFT(719),
-  [2218] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 2),
-  [2220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2),
-  [2222] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(1709),
-  [2225] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(2485),
-  [2228] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(1938),
-  [2231] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(1583),
-  [2234] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(1960),
-  [2237] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(1584),
-  [2240] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(1570),
-  [2243] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(1569),
-  [2246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1),
-  [2248] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 4),
+  [2218] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 2, 0, 0),
+  [2220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0),
+  [2222] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(1709),
+  [2225] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(2485),
+  [2228] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(1938),
+  [2231] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(1583),
+  [2234] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(1960),
+  [2237] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(1584),
+  [2240] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(1570),
+  [2243] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(1569),
+  [2246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0),
+  [2248] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 4, 0, 0),
   [2250] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1455),
   [2252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(731),
-  [2254] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_parameters, 4),
-  [2256] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generic_parameters, 4),
-  [2258] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 6),
+  [2254] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_parameters, 4, 0, 0),
+  [2256] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generic_parameters, 4, 0, 0),
+  [2258] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 6, 0, 0),
   [2260] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1451),
   [2262] = {.entry = {.count = 1, .reusable = true}}, SHIFT(746),
   [2264] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1559),
   [2266] = {.entry = {.count = 1, .reusable = true}}, SHIFT(646),
-  [2268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_behavior, 3),
+  [2268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_behavior, 3, 0, 0),
   [2270] = {.entry = {.count = 1, .reusable = true}}, SHIFT(713),
-  [2272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 10, .production_id = 25),
+  [2272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 10, 0, 25),
   [2274] = {.entry = {.count = 1, .reusable = true}}, SHIFT(740),
   [2276] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1539),
   [2278] = {.entry = {.count = 1, .reusable = true}}, SHIFT(736),
-  [2280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 8, .production_id = 20),
+  [2280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 8, 0, 20),
   [2282] = {.entry = {.count = 1, .reusable = true}}, SHIFT(755),
-  [2284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 7),
+  [2284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 7, 0, 0),
   [2286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(766),
   [2288] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1542),
   [2290] = {.entry = {.count = 1, .reusable = true}}, SHIFT(706),
@@ -137233,29 +137184,29 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2294] = {.entry = {.count = 1, .reusable = true}}, SHIFT(660),
   [2296] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1564),
   [2298] = {.entry = {.count = 1, .reusable = true}}, SHIFT(665),
-  [2300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 9, .production_id = 23),
+  [2300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 9, 0, 23),
   [2302] = {.entry = {.count = 1, .reusable = true}}, SHIFT(745),
-  [2304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 8),
+  [2304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 8, 0, 0),
   [2306] = {.entry = {.count = 1, .reusable = true}}, SHIFT(751),
-  [2308] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_behavior, 6),
+  [2308] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_behavior, 6, 0, 0),
   [2310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(760),
-  [2312] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 7, .production_id = 17),
+  [2312] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 7, 0, 17),
   [2314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(765),
-  [2316] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_behavior, 5),
+  [2316] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_behavior, 5, 0, 0),
   [2318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(678),
-  [2320] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 6, .production_id = 12),
+  [2320] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 6, 0, 12),
   [2322] = {.entry = {.count = 1, .reusable = true}}, SHIFT(754),
-  [2324] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_behavior, 4),
+  [2324] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_behavior, 4, 0, 0),
   [2326] = {.entry = {.count = 1, .reusable = true}}, SHIFT(711),
-  [2328] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_members_repeat1, 2),
-  [2330] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat1, 2), SHIFT_REPEAT(2205),
-  [2333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2),
-  [2335] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2), SHIFT_REPEAT(1554),
-  [2338] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2), SHIFT_REPEAT(1533),
-  [2341] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2), SHIFT_REPEAT(1552),
-  [2344] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_members, 2),
-  [2346] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 7, .production_id = 8),
-  [2348] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 5, .production_id = 8),
+  [2328] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_members_repeat1, 2, 0, 0),
+  [2330] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat1, 2, 0, 0), SHIFT_REPEAT(2205),
+  [2333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2, 0, 0),
+  [2335] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2, 0, 0), SHIFT_REPEAT(1554),
+  [2338] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2, 0, 0), SHIFT_REPEAT(1533),
+  [2341] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2, 0, 0), SHIFT_REPEAT(1552),
+  [2344] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_members, 2, 0, 0),
+  [2346] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 7, 0, 8),
+  [2348] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 5, 0, 8),
   [2350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1212),
   [2352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(994),
   [2354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1305),
@@ -137264,31 +137215,31 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(515),
   [2362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1321),
   [2364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(281),
-  [2366] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 12, .production_id = 25),
-  [2368] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 9),
-  [2370] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 11, .production_id = 23),
-  [2372] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 11, .production_id = 25),
-  [2374] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_statement, 2),
+  [2366] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 12, 0, 25),
+  [2368] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 9, 0, 0),
+  [2370] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 11, 0, 23),
+  [2372] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 11, 0, 25),
+  [2374] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_statement, 2, 0, 0),
   [2376] = {.entry = {.count = 1, .reusable = false}}, SHIFT(611),
   [2378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(611),
-  [2380] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_behavior, 8),
-  [2382] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 8, .production_id = 17),
-  [2384] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 7, .production_id = 12),
-  [2386] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 8, .production_id = 12),
-  [2388] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 8),
-  [2390] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 9, .production_id = 20),
-  [2392] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 9),
-  [2394] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 9, .production_id = 17),
-  [2396] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 10, .production_id = 23),
-  [2398] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_statement, 4),
-  [2400] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_behavior, 7),
-  [2402] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 10, .production_id = 20),
-  [2404] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 10),
+  [2380] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_behavior, 8, 0, 0),
+  [2382] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 8, 0, 17),
+  [2384] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 7, 0, 12),
+  [2386] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 8, 0, 12),
+  [2388] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 8, 0, 0),
+  [2390] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 9, 0, 20),
+  [2392] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constructor, 9, 0, 0),
+  [2394] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 9, 0, 17),
+  [2396] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 10, 0, 23),
+  [2398] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_statement, 4, 0, 0),
+  [2400] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_behavior, 7, 0, 0),
+  [2402] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 10, 0, 20),
+  [2404] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method, 10, 0, 0),
   [2406] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1869),
   [2408] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1202),
-  [2410] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ffi_method, 6, .production_id = 9),
+  [2410] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ffi_method, 6, 0, 9),
   [2412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1534),
-  [2414] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ffi_method, 6, .production_id = 9),
+  [2414] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ffi_method, 6, 0, 9),
   [2416] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1884),
   [2418] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1902),
   [2420] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1546),
@@ -137313,7 +137264,7 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2458] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1560),
   [2460] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1341),
   [2462] = {.entry = {.count = 1, .reusable = true}}, SHIFT(654),
-  [2464] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_block, 3),
+  [2464] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_block, 3, 0, 0),
   [2466] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1555),
   [2468] = {.entry = {.count = 1, .reusable = true}}, SHIFT(735),
   [2470] = {.entry = {.count = 1, .reusable = true}}, SHIFT(828),
@@ -137321,11 +137272,11 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2474] = {.entry = {.count = 1, .reusable = true}}, SHIFT(698),
   [2476] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1857),
   [2478] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2228),
-  [2480] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ffi_method, 7, .production_id = 9),
-  [2482] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ffi_method, 7, .production_id = 9),
+  [2480] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ffi_method, 7, 0, 9),
+  [2482] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ffi_method, 7, 0, 9),
   [2484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1551),
   [2486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(641),
-  [2488] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_block, 2),
+  [2488] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_block, 2, 0, 0),
   [2490] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1889),
   [2492] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2320),
   [2494] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1548),
@@ -137342,14 +137293,14 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(265),
   [2518] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1862),
   [2520] = {.entry = {.count = 1, .reusable = true}}, SHIFT(679),
-  [2522] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_args_repeat1, 2),
+  [2522] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_args_repeat1, 2, 0, 0),
   [2524] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1089),
   [2526] = {.entry = {.count = 1, .reusable = true}}, SHIFT(659),
   [2528] = {.entry = {.count = 1, .reusable = true}}, SHIFT(661),
   [2530] = {.entry = {.count = 1, .reusable = true}}, SHIFT(455),
   [2532] = {.entry = {.count = 1, .reusable = true}}, SHIFT(664),
   [2534] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1292),
-  [2536] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_parameter, 3),
+  [2536] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_parameter, 3, 0, 0),
   [2538] = {.entry = {.count = 1, .reusable = true}}, SHIFT(666),
   [2540] = {.entry = {.count = 1, .reusable = true}}, SHIFT(849),
   [2542] = {.entry = {.count = 1, .reusable = true}}, SHIFT(687),
@@ -137367,23 +137318,23 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2566] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1892),
   [2568] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1158),
   [2570] = {.entry = {.count = 1, .reusable = true}}, SHIFT(858),
-  [2572] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 3, .production_id = 1),
+  [2572] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 3, 0, 1),
   [2574] = {.entry = {.count = 1, .reusable = true}}, SHIFT(894),
   [2576] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1992),
   [2578] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1180),
   [2580] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1170),
   [2582] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1898),
   [2584] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2333),
-  [2586] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_parameter, 3, .production_id = 7),
+  [2586] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_parameter, 3, 0, 7),
   [2588] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2381),
   [2590] = {.entry = {.count = 1, .reusable = true}}, SHIFT(294),
   [2592] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2372),
   [2594] = {.entry = {.count = 1, .reusable = true}}, SHIFT(289),
-  [2596] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 8),
-  [2598] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 8),
+  [2596] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_definition, 8, 0, 0),
+  [2598] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_actor_definition, 8, 0, 0),
   [2600] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2220),
   [2602] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106),
-  [2604] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 6, .production_id = 5),
+  [2604] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 6, 0, 5),
   [2606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2242),
   [2608] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1098),
   [2610] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2390),
@@ -137391,7 +137342,7 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2614] = {.entry = {.count = 1, .reusable = true}}, SHIFT(589),
   [2616] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2358),
   [2618] = {.entry = {.count = 1, .reusable = true}}, SHIFT(720),
-  [2620] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 5),
+  [2620] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 5, 0, 0),
   [2622] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2305),
   [2624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(889),
   [2626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2260),
@@ -137404,24 +137355,24 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(886),
   [2642] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2433),
   [2644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111),
-  [2646] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_statement, 3),
+  [2646] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_statement, 3, 0, 0),
   [2648] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2250),
   [2650] = {.entry = {.count = 1, .reusable = true}}, SHIFT(875),
   [2652] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2257),
   [2654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(878),
   [2656] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2252),
   [2658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(879),
-  [2660] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_platform_specifier, 1),
+  [2660] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_platform_specifier, 1, 0, 0),
   [2662] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2233),
   [2664] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1105),
   [2666] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2239),
   [2668] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1092),
   [2670] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2249),
   [2672] = {.entry = {.count = 1, .reusable = true}}, SHIFT(897),
-  [2674] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_parameter, 5, .production_id = 15),
+  [2674] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_parameter, 5, 0, 15),
   [2676] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2235),
   [2678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(737),
-  [2680] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 9),
+  [2680] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 9, 0, 0),
   [2682] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2221),
   [2684] = {.entry = {.count = 1, .reusable = true}}, SHIFT(767),
   [2686] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2388),
@@ -137450,7 +137401,7 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2732] = {.entry = {.count = 1, .reusable = true}}, SHIFT(304),
   [2734] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2503),
   [2736] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102),
-  [2738] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat1, 2), SHIFT_REPEAT(2500),
+  [2738] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat1, 2, 0, 0), SHIFT_REPEAT(2500),
   [2741] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2266),
   [2743] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1114),
   [2745] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2348),
@@ -137489,17 +137440,17 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2811] = {.entry = {.count = 1, .reusable = true}}, SHIFT(718),
   [2813] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2491),
   [2815] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128),
-  [2817] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_statement, 5),
+  [2817] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_statement, 5, 0, 0),
   [2819] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2280),
   [2821] = {.entry = {.count = 1, .reusable = true}}, SHIFT(689),
   [2823] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2362),
   [2825] = {.entry = {.count = 1, .reusable = true}}, SHIFT(710),
-  [2827] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 9),
+  [2827] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 9, 0, 0),
   [2829] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2317),
   [2831] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69),
-  [2833] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_statement, 1),
-  [2835] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 9),
-  [2837] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 9),
+  [2833] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_statement, 1, 0, 0),
+  [2835] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_definition, 9, 0, 0),
+  [2837] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_definition, 9, 0, 0),
   [2839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2354),
   [2841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75),
   [2843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2395),
@@ -137559,9 +137510,9 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [2951] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1897),
   [2953] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1899),
   [2955] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1154),
-  [2957] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2), SHIFT_REPEAT(1576),
-  [2960] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2), SHIFT_REPEAT(1537),
-  [2963] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2), SHIFT_REPEAT(1578),
+  [2957] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2, 0, 0), SHIFT_REPEAT(1576),
+  [2960] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2, 0, 0), SHIFT_REPEAT(1537),
+  [2963] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_members_repeat2, 2, 0, 0), SHIFT_REPEAT(1578),
   [2966] = {.entry = {.count = 1, .reusable = true}}, SHIFT(633),
   [2968] = {.entry = {.count = 1, .reusable = false}}, SHIFT(229),
   [2970] = {.entry = {.count = 1, .reusable = false}}, SHIFT(573),
@@ -137606,9 +137557,9 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3048] = {.entry = {.count = 1, .reusable = true}}, SHIFT(537),
   [3050] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2229),
   [3052] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1003),
-  [3054] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_character_repeat1, 2),
-  [3056] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_character_repeat1, 2), SHIFT_REPEAT(1769),
-  [3059] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_character_repeat1, 2), SHIFT_REPEAT(1769),
+  [3054] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_character_repeat1, 2, 0, 0),
+  [3056] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_character_repeat1, 2, 0, 0), SHIFT_REPEAT(1769),
+  [3059] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_character_repeat1, 2, 0, 0), SHIFT_REPEAT(1769),
   [3062] = {.entry = {.count = 1, .reusable = false}}, SHIFT(425),
   [3064] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1771),
   [3066] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1771),
@@ -137655,9 +137606,9 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3148] = {.entry = {.count = 1, .reusable = false}}, SHIFT(516),
   [3150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(563),
   [3152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(983),
-  [3154] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__string_literal_repeat1, 2),
-  [3156] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__string_literal_repeat1, 2), SHIFT_REPEAT(1803),
-  [3159] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__string_literal_repeat1, 2), SHIFT_REPEAT(1803),
+  [3154] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__string_literal_repeat1, 2, 0, 0),
+  [3156] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__string_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(1803),
+  [3159] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__string_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(1803),
   [3162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(769),
   [3164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2385),
   [3166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1270),
@@ -137668,13 +137619,13 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3176] = {.entry = {.count = 1, .reusable = true}}, SHIFT(986),
   [3178] = {.entry = {.count = 1, .reusable = true}}, SHIFT(610),
   [3180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1873),
-  [3182] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_statement_repeat1, 2), SHIFT_REPEAT(818),
+  [3182] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(818),
   [3185] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2387),
   [3187] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1268),
   [3189] = {.entry = {.count = 1, .reusable = true}}, SHIFT(651),
-  [3191] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2),
-  [3193] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2), SHIFT_REPEAT(603),
-  [3196] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2),
+  [3191] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 0),
+  [3193] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(603),
+  [3196] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 0),
   [3198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1280),
   [3200] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1877),
   [3202] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2419),
@@ -137683,8 +137634,8 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3208] = {.entry = {.count = 1, .reusable = true}}, SHIFT(241),
   [3210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1794),
   [3212] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1794),
-  [3214] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_statement_repeat1, 2), SHIFT_REPEAT(628),
-  [3217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_statement_repeat1, 2),
+  [3214] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(628),
+  [3217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_statement_repeat1, 2, 0, 0),
   [3219] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1264),
   [3221] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1281),
   [3223] = {.entry = {.count = 1, .reusable = true}}, SHIFT(532),
@@ -137696,9 +137647,9 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3235] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2341),
   [3237] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1286),
   [3239] = {.entry = {.count = 1, .reusable = true}}, SHIFT(757),
-  [3241] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_iftype_statement_repeat1, 2),
-  [3243] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_iftype_statement_repeat1, 2), SHIFT_REPEAT(1199),
-  [3246] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_iftype_statement_repeat1, 2),
+  [3241] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_iftype_statement_repeat1, 2, 0, 0),
+  [3243] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_iftype_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1199),
+  [3246] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_iftype_statement_repeat1, 2, 0, 0),
   [3248] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1209),
   [3250] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1252),
   [3252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(558),
@@ -137743,27 +137694,27 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3330] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1867),
   [3332] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2269),
   [3334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1249),
-  [3336] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_parameter, 1),
+  [3336] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_parameter, 1, 0, 0),
   [3338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1254),
   [3340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2508),
   [3342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1425),
   [3344] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2124),
-  [3346] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_expression_repeat1, 2), SHIFT_REPEAT(794),
-  [3349] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_args_repeat1, 2), SHIFT_REPEAT(1297),
+  [3346] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(794),
+  [3349] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_args_repeat1, 2, 0, 0), SHIFT_REPEAT(1297),
   [3352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(829),
   [3354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1272),
-  [3356] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_lambda_captures_repeat1, 2),
+  [3356] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_lambda_captures_repeat1, 2, 0, 0),
   [3358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(790),
   [3360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1253),
-  [3362] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameter, 1, .production_id = 1),
+  [3362] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameter, 1, 0, 1),
   [3364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2425),
   [3366] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1207),
   [3368] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107),
   [3370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2342),
   [3372] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1336),
   [3374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83),
-  [3376] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_then_block, 2),
-  [3378] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_then_block, 2),
+  [3376] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_then_block, 2, 0, 0),
+  [3378] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_then_block, 2, 0, 0),
   [3380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2000),
   [3382] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1431),
   [3384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2126),
@@ -137783,11 +137734,11 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1178),
   [3414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2410),
   [3416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(848),
-  [3418] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_with_statement_repeat1, 2), SHIFT_REPEAT(2138),
-  [3421] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_with_statement_repeat1, 2),
+  [3418] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_with_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(2138),
+  [3421] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_with_statement_repeat1, 2, 0, 0),
   [3423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1819),
-  [3425] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__multiline_string_literal_repeat1, 2),
-  [3427] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__multiline_string_literal_repeat1, 2), SHIFT_REPEAT(1942),
+  [3425] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__multiline_string_literal_repeat1, 2, 0, 0),
+  [3427] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__multiline_string_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(1942),
   [3430] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2469),
   [3432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1216),
   [3434] = {.entry = {.count = 1, .reusable = true}}, SHIFT(232),
@@ -137809,7 +137760,7 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3466] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1008),
   [3468] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1181),
   [3470] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2378),
-  [3472] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 2),
+  [3472] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 2, 0, 0),
   [3474] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61),
   [3476] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1161),
   [3478] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1813),
@@ -137817,15 +137768,15 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3482] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1223),
   [3484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(258),
   [3486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2159),
-  [3488] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_arguments, 2),
+  [3488] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_arguments, 2, 0, 0),
   [3490] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2441),
   [3492] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1224),
   [3494] = {.entry = {.count = 1, .reusable = true}}, SHIFT(320),
   [3496] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1820),
   [3498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1022),
   [3500] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1838),
-  [3502] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_then_block, 3),
-  [3504] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_then_block, 3),
+  [3502] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_then_block, 3, 0, 0),
+  [3504] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_then_block, 3, 0, 0),
   [3506] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1836),
   [3508] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1825),
   [3510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2287),
@@ -137842,28 +137793,28 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3532] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2435),
   [3534] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1298),
   [3536] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1088),
-  [3538] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_generic_parameters_repeat1, 2),
-  [3540] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_generic_parameters_repeat1, 2), SHIFT_REPEAT(2169),
+  [3538] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_generic_parameters_repeat1, 2, 0, 0),
+  [3540] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_generic_parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(2169),
   [3543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2499),
   [3545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1294),
   [3547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99),
   [3549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2303),
   [3551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1307),
   [3553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1103),
-  [3555] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 3),
+  [3555] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 3, 0, 0),
   [3557] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2393),
   [3559] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1228),
   [3561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(301),
   [3563] = {.entry = {.count = 1, .reusable = true}}, SHIFT(254),
   [3565] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2458),
-  [3567] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_arguments, 1),
+  [3567] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_arguments, 1, 0, 0),
   [3569] = {.entry = {.count = 1, .reusable = true}}, SHIFT(861),
   [3571] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2071),
   [3573] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1263),
   [3575] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1428),
   [3577] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1846),
-  [3579] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 4),
-  [3581] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_lambda_captures_repeat1, 2), SHIFT_REPEAT(2263),
+  [3579] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 4, 0, 0),
+  [3581] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_lambda_captures_repeat1, 2, 0, 0), SHIFT_REPEAT(2263),
   [3584] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1827),
   [3586] = {.entry = {.count = 1, .reusable = true}}, SHIFT(278),
   [3588] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1279),
@@ -137873,7 +137824,7 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3596] = {.entry = {.count = 1, .reusable = true}}, SHIFT(327),
   [3598] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2019),
   [3600] = {.entry = {.count = 1, .reusable = true}}, SHIFT(325),
-  [3602] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 2),
+  [3602] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 2, 0, 0),
   [3604] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2336),
   [3606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1293),
   [3608] = {.entry = {.count = 1, .reusable = true}}, SHIFT(891),
@@ -137881,10 +137832,10 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3612] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1303),
   [3614] = {.entry = {.count = 1, .reusable = true}}, SHIFT(899),
   [3616] = {.entry = {.count = 1, .reusable = true}}, SHIFT(934),
-  [3618] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_annotation_repeat1, 2),
-  [3620] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_annotation_repeat1, 2), SHIFT_REPEAT(2224),
-  [3623] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_lambda_expression_repeat1, 2), SHIFT_REPEAT(2126),
-  [3626] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_lambda_expression_repeat1, 2),
+  [3618] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_annotation_repeat1, 2, 0, 0),
+  [3620] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_annotation_repeat1, 2, 0, 0), SHIFT_REPEAT(2224),
+  [3623] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_lambda_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(2126),
+  [3626] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_lambda_expression_repeat1, 2, 0, 0),
   [3628] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1347),
   [3630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2311),
   [3632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1304),
@@ -137896,9 +137847,9 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2306),
   [3646] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1313),
   [3648] = {.entry = {.count = 1, .reusable = true}}, SHIFT(902),
-  [3650] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_arguments, 3),
-  [3652] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elseif_block, 3),
-  [3654] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elseif_block, 3),
+  [3650] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_arguments, 3, 0, 0),
+  [3652] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elseif_block, 3, 0, 0),
+  [3654] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elseif_block, 3, 0, 0),
   [3656] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2042),
   [3658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2298),
   [3660] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1314),
@@ -137912,10 +137863,10 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3676] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2246),
   [3678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1236),
   [3680] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1117),
-  [3682] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 4),
+  [3682] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 4, 0, 0),
   [3684] = {.entry = {.count = 1, .reusable = true}}, SHIFT(539),
-  [3686] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_parameters_repeat1, 2), SHIFT_REPEAT(2000),
-  [3689] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_parameters_repeat1, 2),
+  [3686] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(2000),
+  [3689] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_parameters_repeat1, 2, 0, 0),
   [3691] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2461),
   [3693] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1276),
   [3695] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1102),
@@ -137924,36 +137875,36 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3701] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2264),
   [3703] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1327),
   [3705] = {.entry = {.count = 1, .reusable = true}}, SHIFT(883),
-  [3707] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_statement, 5),
+  [3707] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_statement, 5, 0, 0),
   [3709] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1854),
   [3711] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2363),
   [3713] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1310),
   [3715] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112),
   [3717] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1822),
-  [3719] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 3),
-  [3721] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_statement, 4),
-  [3723] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_named_arguments_repeat1, 2), SHIFT_REPEAT(2159),
-  [3726] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_named_arguments_repeat1, 2),
+  [3719] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 3, 0, 0),
+  [3721] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_statement, 4, 0, 0),
+  [3723] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_named_arguments_repeat1, 2, 0, 0), SHIFT_REPEAT(2159),
+  [3726] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_named_arguments_repeat1, 2, 0, 0),
   [3728] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2357),
   [3730] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1335),
   [3732] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113),
-  [3734] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elseif_block, 4),
-  [3736] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elseif_block, 4),
+  [3734] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elseif_block, 4, 0, 0),
+  [3736] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elseif_block, 4, 0, 0),
   [3738] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2253),
   [3740] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1302),
   [3742] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1087),
   [3744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(529),
   [3746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2064),
-  [3748] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elseiftype_block, 6),
-  [3750] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elseiftype_block, 6),
+  [3748] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elseiftype_block, 6, 0, 0),
+  [3750] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elseiftype_block, 6, 0, 0),
   [3752] = {.entry = {.count = 1, .reusable = true}}, SHIFT(527),
   [3754] = {.entry = {.count = 1, .reusable = true}}, SHIFT(407),
   [3756] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130),
-  [3758] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 8),
+  [3758] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 8, 0, 0),
   [3760] = {.entry = {.count = 1, .reusable = true}}, SHIFT(497),
   [3762] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2070),
-  [3764] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elseiftype_block, 5),
-  [3766] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elseiftype_block, 5),
+  [3764] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elseiftype_block, 5, 0, 0),
+  [3766] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elseiftype_block, 5, 0, 0),
   [3768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(495),
   [3770] = {.entry = {.count = 1, .reusable = true}}, SHIFT(860),
   [3772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1055),
@@ -137964,7 +137915,7 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(965),
   [3784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(548),
   [3786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284),
-  [3788] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_statement, 6),
+  [3788] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_statement, 6, 0, 0),
   [3790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(893),
   [3792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2008),
   [3794] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2282),
@@ -137980,7 +137931,7 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(426),
   [3816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2088),
   [3818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(428),
-  [3820] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 7),
+  [3820] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 7, 0, 0),
   [3822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2196),
   [3824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1306),
   [3826] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64),
@@ -138015,22 +137966,22 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [3884] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204),
   [3886] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202),
   [3888] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2110),
-  [3890] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 5),
+  [3890] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 5, 0, 0),
   [3892] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1299),
   [3894] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2268),
-  [3896] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 6),
-  [3898] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_statement, 7),
+  [3896] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_captures, 6, 0, 0),
+  [3898] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_statement, 7, 0, 0),
   [3900] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1864),
-  [3902] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 1),
+  [3902] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 1, 0, 0),
   [3904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1839),
   [3906] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2021),
-  [3908] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_block, 2),
-  [3910] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_elem, 3),
+  [3908] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_block, 2, 0, 0),
+  [3910] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_elem, 3, 0, 0),
   [3912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1860),
   [3914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2459),
   [3916] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1916),
   [3918] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2339),
-  [3920] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_block, 3),
+  [3920] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_block, 3, 0, 0),
   [3922] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1898),
   [3924] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1905),
   [3926] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1518),
@@ -138270,6 +138221,37 @@ static const TSParseActionEntry ts_parse_actions[] = {
   [4394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1931),
 };
 
+enum ts_external_scanner_symbol_identifiers {
+  ts_external_token__type_args_start = 0,
+  ts_external_token_block_comment = 1,
+  ts_external_token__multiline_string_content = 2,
+};
+
+static const TSSymbol ts_external_scanner_symbol_map[EXTERNAL_TOKEN_COUNT] = {
+  [ts_external_token__type_args_start] = sym__type_args_start,
+  [ts_external_token_block_comment] = sym_block_comment,
+  [ts_external_token__multiline_string_content] = sym__multiline_string_content,
+};
+
+static const bool ts_external_scanner_states[5][EXTERNAL_TOKEN_COUNT] = {
+  [1] = {
+    [ts_external_token__type_args_start] = true,
+    [ts_external_token_block_comment] = true,
+    [ts_external_token__multiline_string_content] = true,
+  },
+  [2] = {
+    [ts_external_token_block_comment] = true,
+  },
+  [3] = {
+    [ts_external_token__type_args_start] = true,
+    [ts_external_token_block_comment] = true,
+  },
+  [4] = {
+    [ts_external_token_block_comment] = true,
+    [ts_external_token__multiline_string_content] = true,
+  },
+};
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -138279,11 +138261,15 @@ bool tree_sitter_pony_external_scanner_scan(void *, TSLexer *, const bool *);
 unsigned tree_sitter_pony_external_scanner_serialize(void *, char *);
 void tree_sitter_pony_external_scanner_deserialize(void *, const char *, unsigned);
 
-#ifdef _WIN32
-#define extern __declspec(dllexport)
+#ifdef TREE_SITTER_HIDE_SYMBOLS
+#define TS_PUBLIC
+#elif defined(_WIN32)
+#define TS_PUBLIC __declspec(dllexport)
+#else
+#define TS_PUBLIC __attribute__((visibility("default")))
 #endif
 
-extern const TSLanguage *tree_sitter_pony(void) {
+TS_PUBLIC const TSLanguage *tree_sitter_pony(void) {
   static const TSLanguage language = {
     .version = LANGUAGE_VERSION,
     .symbol_count = SYMBOL_COUNT,
diff --git a/src/tree_sitter/alloc.h b/src/tree_sitter/alloc.h
new file mode 100644
index 0000000..1f4466d
--- /dev/null
+++ b/src/tree_sitter/alloc.h
@@ -0,0 +1,54 @@
+#ifndef TREE_SITTER_ALLOC_H_
+#define TREE_SITTER_ALLOC_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+// Allow clients to override allocation functions
+#ifdef TREE_SITTER_REUSE_ALLOCATOR
+
+extern void *(*ts_current_malloc)(size_t);
+extern void *(*ts_current_calloc)(size_t, size_t);
+extern void *(*ts_current_realloc)(void *, size_t);
+extern void (*ts_current_free)(void *);
+
+#ifndef ts_malloc
+#define ts_malloc  ts_current_malloc
+#endif
+#ifndef ts_calloc
+#define ts_calloc  ts_current_calloc
+#endif
+#ifndef ts_realloc
+#define ts_realloc ts_current_realloc
+#endif
+#ifndef ts_free
+#define ts_free    ts_current_free
+#endif
+
+#else
+
+#ifndef ts_malloc
+#define ts_malloc  malloc
+#endif
+#ifndef ts_calloc
+#define ts_calloc  calloc
+#endif
+#ifndef ts_realloc
+#define ts_realloc realloc
+#endif
+#ifndef ts_free
+#define ts_free    free
+#endif
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // TREE_SITTER_ALLOC_H_
diff --git a/src/tree_sitter/array.h b/src/tree_sitter/array.h
new file mode 100644
index 0000000..15a3b23
--- /dev/null
+++ b/src/tree_sitter/array.h
@@ -0,0 +1,290 @@
+#ifndef TREE_SITTER_ARRAY_H_
+#define TREE_SITTER_ARRAY_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "./alloc.h"
+
+#include <assert.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef _MSC_VER
+#pragma warning(disable : 4101)
+#elif defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-variable"
+#endif
+
+#define Array(T)       \
+  struct {             \
+    T *contents;       \
+    uint32_t size;     \
+    uint32_t capacity; \
+  }
+
+/// Initialize an array.
+#define array_init(self) \
+  ((self)->size = 0, (self)->capacity = 0, (self)->contents = NULL)
+
+/// Create an empty array.
+#define array_new() \
+  { NULL, 0, 0 }
+
+/// Get a pointer to the element at a given `index` in the array.
+#define array_get(self, _index) \
+  (assert((uint32_t)(_index) < (self)->size), &(self)->contents[_index])
+
+/// Get a pointer to the first element in the array.
+#define array_front(self) array_get(self, 0)
+
+/// Get a pointer to the last element in the array.
+#define array_back(self) array_get(self, (self)->size - 1)
+
+/// Clear the array, setting its size to zero. Note that this does not free any
+/// memory allocated for the array's contents.
+#define array_clear(self) ((self)->size = 0)
+
+/// Reserve `new_capacity` elements of space in the array. If `new_capacity` is
+/// less than the array's current capacity, this function has no effect.
+#define array_reserve(self, new_capacity) \
+  _array__reserve((Array *)(self), array_elem_size(self), new_capacity)
+
+/// Free any memory allocated for this array. Note that this does not free any
+/// memory allocated for the array's contents.
+#define array_delete(self) _array__delete((Array *)(self))
+
+/// Push a new `element` onto the end of the array.
+#define array_push(self, element)                            \
+  (_array__grow((Array *)(self), 1, array_elem_size(self)), \
+   (self)->contents[(self)->size++] = (element))
+
+/// Increase the array's size by `count` elements.
+/// New elements are zero-initialized.
+#define array_grow_by(self, count) \
+  do { \
+    if ((count) == 0) break; \
+    _array__grow((Array *)(self), count, array_elem_size(self)); \
+    memset((self)->contents + (self)->size, 0, (count) * array_elem_size(self)); \
+    (self)->size += (count); \
+  } while (0)
+
+/// Append all elements from one array to the end of another.
+#define array_push_all(self, other)                                       \
+  array_extend((self), (other)->size, (other)->contents)
+
+/// Append `count` elements to the end of the array, reading their values from the
+/// `contents` pointer.
+#define array_extend(self, count, contents)                    \
+  _array__splice(                                               \
+    (Array *)(self), array_elem_size(self), (self)->size, \
+    0, count,  contents                                        \
+  )
+
+/// Remove `old_count` elements from the array starting at the given `index`. At
+/// the same index, insert `new_count` new elements, reading their values from the
+/// `new_contents` pointer.
+#define array_splice(self, _index, old_count, new_count, new_contents)  \
+  _array__splice(                                                       \
+    (Array *)(self), array_elem_size(self), _index,                \
+    old_count, new_count, new_contents                                 \
+  )
+
+/// Insert one `element` into the array at the given `index`.
+#define array_insert(self, _index, element) \
+  _array__splice((Array *)(self), array_elem_size(self), _index, 0, 1, &(element))
+
+/// Remove one element from the array at the given `index`.
+#define array_erase(self, _index) \
+  _array__erase((Array *)(self), array_elem_size(self), _index)
+
+/// Pop the last element off the array, returning the element by value.
+#define array_pop(self) ((self)->contents[--(self)->size])
+
+/// Assign the contents of one array to another, reallocating if necessary.
+#define array_assign(self, other) \
+  _array__assign((Array *)(self), (const Array *)(other), array_elem_size(self))
+
+/// Swap one array with another
+#define array_swap(self, other) \
+  _array__swap((Array *)(self), (Array *)(other))
+
+/// Get the size of the array contents
+#define array_elem_size(self) (sizeof *(self)->contents)
+
+/// Search a sorted array for a given `needle` value, using the given `compare`
+/// callback to determine the order.
+///
+/// If an existing element is found to be equal to `needle`, then the `index`
+/// out-parameter is set to the existing value's index, and the `exists`
+/// out-parameter is set to true. Otherwise, `index` is set to an index where
+/// `needle` should be inserted in order to preserve the sorting, and `exists`
+/// is set to false.
+#define array_search_sorted_with(self, compare, needle, _index, _exists) \
+  _array__search_sorted(self, 0, compare, , needle, _index, _exists)
+
+/// Search a sorted array for a given `needle` value, using integer comparisons
+/// of a given struct field (specified with a leading dot) to determine the order.
+///
+/// See also `array_search_sorted_with`.
+#define array_search_sorted_by(self, field, needle, _index, _exists) \
+  _array__search_sorted(self, 0, _compare_int, field, needle, _index, _exists)
+
+/// Insert a given `value` into a sorted array, using the given `compare`
+/// callback to determine the order.
+#define array_insert_sorted_with(self, compare, value) \
+  do { \
+    unsigned _index, _exists; \
+    array_search_sorted_with(self, compare, &(value), &_index, &_exists); \
+    if (!_exists) array_insert(self, _index, value); \
+  } while (0)
+
+/// Insert a given `value` into a sorted array, using integer comparisons of
+/// a given struct field (specified with a leading dot) to determine the order.
+///
+/// See also `array_search_sorted_by`.
+#define array_insert_sorted_by(self, field, value) \
+  do { \
+    unsigned _index, _exists; \
+    array_search_sorted_by(self, field, (value) field, &_index, &_exists); \
+    if (!_exists) array_insert(self, _index, value); \
+  } while (0)
+
+// Private
+
+typedef Array(void) Array;
+
+/// This is not what you're looking for, see `array_delete`.
+static inline void _array__delete(Array *self) {
+  if (self->contents) {
+    ts_free(self->contents);
+    self->contents = NULL;
+    self->size = 0;
+    self->capacity = 0;
+  }
+}
+
+/// This is not what you're looking for, see `array_erase`.
+static inline void _array__erase(Array *self, size_t element_size,
+                                uint32_t index) {
+  assert(index < self->size);
+  char *contents = (char *)self->contents;
+  memmove(contents + index * element_size, contents + (index + 1) * element_size,
+          (self->size - index - 1) * element_size);
+  self->size--;
+}
+
+/// This is not what you're looking for, see `array_reserve`.
+static inline void _array__reserve(Array *self, size_t element_size, uint32_t new_capacity) {
+  if (new_capacity > self->capacity) {
+    if (self->contents) {
+      self->contents = ts_realloc(self->contents, new_capacity * element_size);
+    } else {
+      self->contents = ts_malloc(new_capacity * element_size);
+    }
+    self->capacity = new_capacity;
+  }
+}
+
+/// This is not what you're looking for, see `array_assign`.
+static inline void _array__assign(Array *self, const Array *other, size_t element_size) {
+  _array__reserve(self, element_size, other->size);
+  self->size = other->size;
+  memcpy(self->contents, other->contents, self->size * element_size);
+}
+
+/// This is not what you're looking for, see `array_swap`.
+static inline void _array__swap(Array *self, Array *other) {
+  Array swap = *other;
+  *other = *self;
+  *self = swap;
+}
+
+/// This is not what you're looking for, see `array_push` or `array_grow_by`.
+static inline void _array__grow(Array *self, uint32_t count, size_t element_size) {
+  uint32_t new_size = self->size + count;
+  if (new_size > self->capacity) {
+    uint32_t new_capacity = self->capacity * 2;
+    if (new_capacity < 8) new_capacity = 8;
+    if (new_capacity < new_size) new_capacity = new_size;
+    _array__reserve(self, element_size, new_capacity);
+  }
+}
+
+/// This is not what you're looking for, see `array_splice`.
+static inline void _array__splice(Array *self, size_t element_size,
+                                 uint32_t index, uint32_t old_count,
+                                 uint32_t new_count, const void *elements) {
+  uint32_t new_size = self->size + new_count - old_count;
+  uint32_t old_end = index + old_count;
+  uint32_t new_end = index + new_count;
+  assert(old_end <= self->size);
+
+  _array__reserve(self, element_size, new_size);
+
+  char *contents = (char *)self->contents;
+  if (self->size > old_end) {
+    memmove(
+      contents + new_end * element_size,
+      contents + old_end * element_size,
+      (self->size - old_end) * element_size
+    );
+  }
+  if (new_count > 0) {
+    if (elements) {
+      memcpy(
+        (contents + index * element_size),
+        elements,
+        new_count * element_size
+      );
+    } else {
+      memset(
+        (contents + index * element_size),
+        0,
+        new_count * element_size
+      );
+    }
+  }
+  self->size += new_count - old_count;
+}
+
+/// A binary search routine, based on Rust's `std::slice::binary_search_by`.
+/// This is not what you're looking for, see `array_search_sorted_with` or `array_search_sorted_by`.
+#define _array__search_sorted(self, start, compare, suffix, needle, _index, _exists) \
+  do { \
+    *(_index) = start; \
+    *(_exists) = false; \
+    uint32_t size = (self)->size - *(_index); \
+    if (size == 0) break; \
+    int comparison; \
+    while (size > 1) { \
+      uint32_t half_size = size / 2; \
+      uint32_t mid_index = *(_index) + half_size; \
+      comparison = compare(&((self)->contents[mid_index] suffix), (needle)); \
+      if (comparison <= 0) *(_index) = mid_index; \
+      size -= half_size; \
+    } \
+    comparison = compare(&((self)->contents[*(_index)] suffix), (needle)); \
+    if (comparison == 0) *(_exists) = true; \
+    else if (comparison < 0) *(_index) += 1; \
+  } while (0)
+
+/// Helper macro for the `_sorted_by` routines below. This takes the left (existing)
+/// parameter by reference in order to work with the generic sorting function above.
+#define _compare_int(a, b) ((int)*(a) - (int)(b))
+
+#ifdef _MSC_VER
+#pragma warning(default : 4101)
+#elif defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic pop
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // TREE_SITTER_ARRAY_H_
diff --git a/src/tree_sitter/parser.h b/src/tree_sitter/parser.h
index 2b14ac1..17f0e94 100644
--- a/src/tree_sitter/parser.h
+++ b/src/tree_sitter/parser.h
@@ -13,9 +13,8 @@ extern "C" {
 #define ts_builtin_sym_end 0
 #define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024
 
-typedef uint16_t TSStateId;
-
 #ifndef TREE_SITTER_API_H_
+typedef uint16_t TSStateId;
 typedef uint16_t TSSymbol;
 typedef uint16_t TSFieldId;
 typedef struct TSLanguage TSLanguage;
@@ -87,6 +86,11 @@ typedef union {
   } entry;
 } TSParseActionEntry;
 
+typedef struct {
+  int32_t start;
+  int32_t end;
+} TSCharacterRange;
+
 struct TSLanguage {
   uint32_t version;
   uint32_t symbol_count;
@@ -126,13 +130,38 @@ struct TSLanguage {
   const TSStateId *primary_state_ids;
 };
 
+static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t lookahead) {
+  uint32_t index = 0;
+  uint32_t size = len - index;
+  while (size > 1) {
+    uint32_t half_size = size / 2;
+    uint32_t mid_index = index + half_size;
+    TSCharacterRange *range = &ranges[mid_index];
+    if (lookahead >= range->start && lookahead <= range->end) {
+      return true;
+    } else if (lookahead > range->end) {
+      index = mid_index;
+    }
+    size -= half_size;
+  }
+  TSCharacterRange *range = &ranges[index];
+  return (lookahead >= range->start && lookahead <= range->end);
+}
+
 /*
  *  Lexer Macros
  */
 
+#ifdef _MSC_VER
+#define UNUSED __pragma(warning(suppress : 4101))
+#else
+#define UNUSED __attribute__((unused))
+#endif
+
 #define START_LEXER()           \
   bool result = false;          \
   bool skip = false;            \
+  UNUSED                        \
   bool eof = false;             \
   int32_t lookahead;            \
   goto start;                   \
@@ -148,6 +177,17 @@ struct TSLanguage {
     goto next_state;         \
   }
 
+#define ADVANCE_MAP(...)                                              \
+  {                                                                   \
+    static const uint16_t map[] = { __VA_ARGS__ };                    \
+    for (uint32_t i = 0; i < sizeof(map) / sizeof(map[0]); i += 2) {  \
+      if (map[i] == lookahead) {                                      \
+        state = map[i + 1];                                           \
+        goto next_state;                                              \
+      }                                                               \
+    }                                                                 \
+  }
+
 #define SKIP(state_value) \
   {                       \
     skip = true;          \
@@ -166,7 +206,7 @@ struct TSLanguage {
  *  Parse Table Macros
  */
 
-#define SMALL_STATE(id) id - LARGE_STATE_COUNT
+#define SMALL_STATE(id) ((id) - LARGE_STATE_COUNT)
 
 #define STATE(id) id
 
@@ -176,7 +216,7 @@ struct TSLanguage {
   {{                                  \
     .shift = {                        \
       .type = TSParseActionTypeShift, \
-      .state = state_value            \
+      .state = (state_value)          \
     }                                 \
   }}
 
@@ -184,7 +224,7 @@ struct TSLanguage {
   {{                                  \
     .shift = {                        \
       .type = TSParseActionTypeShift, \
-      .state = state_value,           \
+      .state = (state_value),         \
       .repetition = true              \
     }                                 \
   }}
@@ -197,14 +237,15 @@ struct TSLanguage {
     }                                 \
   }}
 
-#define REDUCE(symbol_val, child_count_val, ...) \
-  {{                                             \
-    .reduce = {                                  \
-      .type = TSParseActionTypeReduce,           \
-      .symbol = symbol_val,                      \
-      .child_count = child_count_val,            \
-      __VA_ARGS__                                \
-    },                                           \
+#define REDUCE(symbol_name, children, precedence, prod_id) \
+  {{                                                       \
+    .reduce = {                                            \
+      .type = TSParseActionTypeReduce,                     \
+      .symbol = symbol_name,                               \
+      .child_count = children,                             \
+      .dynamic_precedence = precedence,                    \
+      .production_id = prod_id                             \
+    },                                                     \
   }}
 
 #define RECOVER()                    \
openSUSE Build Service is sponsored by