diff --git a/lib/rbs/parser.rb b/lib/rbs/parser.rb
index e8913e027..edae17f0d 100644
--- a/lib/rbs/parser.rb
+++ b/lib/rbs/parser.rb
@@ -8,7 +8,7 @@
 module RBS
   class Parser < Racc::Parser
 
-module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1393)
+module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1394)
 
 Types = RBS::Types
 Namespace = RBS::Namespace
@@ -340,6 +340,8 @@ def next_token
     new_token(:tLIDENT)
   when input.scan(/_[a-z]\w*\b/)
     new_token(:tUNDERSCOREIDENT)
+  when input.scan(/_/)
+    new_token(:kUNDERSCORE)
   when input.scan(/"(\\"|[^"])*"/)
     s = input.matched.yield_self {|s| s[1, s.length - 2] }
                      .gsub(DBL_QUOTE_STR_ESCAPE_SEQUENCES_RE) do |match|
@@ -422,83 +424,84 @@ def initialize(input:, location:)
 ##### State transition tables begin ###
 
 clist = [
-'350,351,113,33,352,101,102,5,-4,103,-243,49,337,33,33,117,349,-243,40',
-'41,335,37,113,55,56,57,58,59,60,61,62,354,33,63,54,64,65,66,77,67,68',
-'69,83,53,32,33,345,339,340,33,292,343,341,344,32,32,33,33,342,82,70',
-'71,72,74,76,75,338,347,348,73,78,80,126,32,185,323,84,85,81,86,350,351',
-'33,33,352,39,32,227,33,33,32,40,41,33,321,180,349,32,32,186,40,41,179',
-'55,56,57,58,59,60,61,62,79,228,63,54,64,65,66,77,67,68,69,83,32,32,160',
-'345,339,340,32,32,343,341,344,32,42,40,41,342,82,70,71,72,74,76,75,338',
-'347,348,73,78,80,282,333,161,365,84,85,81,86,350,351,406,43,352,39,96',
-'97,98,99,405,49,208,208,180,48,349,283,186,104,186,263,39,55,56,57,58',
-'59,60,61,62,79,397,63,54,64,65,66,77,67,68,69,83,53,53,53,345,339,340',
-'409,410,343,341,344,2,3,4,186,342,82,70,71,72,74,76,75,338,347,348,73',
-'78,80,40,41,186,186,84,85,81,86,350,351,40,41,352,120,96,97,98,99,40',
-'41,40,41,40,41,349,40,41,40,41,40,41,55,56,57,58,59,60,61,62,79,125',
-'63,54,64,65,66,77,67,68,69,83,40,41,165,345,339,340,40,41,343,341,344',
-'40,41,285,286,342,82,70,71,72,74,76,75,338,347,348,73,78,80,368,369',
-'40,41,84,85,81,86,350,351,40,41,352,166,96,97,98,99,384,385,40,41,40',
-'41,349,40,41,40,41,40,41,55,56,57,58,59,60,61,62,79,167,63,54,64,65',
-'66,77,67,68,69,83,40,41,168,345,339,340,40,41,343,341,344,170,171,172',
-'113,342,82,70,71,72,74,76,75,338,347,348,73,78,80,178,181,184,41,84',
-'85,81,86,350,351,187,189,352,180,190,174,-104,-105,177,-106,175,-107',
-'-108,-109,349,-110,-111,-112,-113,-114,48,55,56,57,58,59,60,61,62,79',
-'176,63,54,64,65,66,77,67,68,69,83,-129,196,197,345,339,340,198,199,343',
-'341,344,200,201,209,210,342,82,70,71,72,74,76,75,338,347,348,73,78,80',
-'42,211,229,243,84,85,81,86,350,351,252,253,352,254,96,97,98,99,256,258',
-'259,42,261,261,349,261,265,42,229,269,273,55,56,57,58,59,60,61,62,79',
-'275,63,54,64,65,66,77,67,68,69,83,290,291,314,345,339,340,273,316,343',
-'341,344,290,329,330,331,342,82,70,71,72,74,76,75,338,347,348,73,78,80',
-'356,356,356,364,84,85,81,86,350,351,366,367,352,370,372,379,380,381',
-'389,389,389,401,402,403,349,404,407,408,413,414,415,55,56,57,58,59,60',
-'61,62,79,417,63,54,64,65,66,77,67,68,69,83,420,413,,345,339,340,,,343',
-'341,344,,,,,342,82,70,71,72,74,76,75,338,347,348,73,78,80,,,,,84,85',
-'81,86,33,,,96,97,98,99,,,,22,23,21,,26,-219,25,,30,,131,132,133,134',
-'135,136,137,138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,',
-'156,,157,159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33',
-',,96,97,98,99,,,,22,23,21,,26,,25,,30,,131,132,133,134,135,136,137,138',
-'142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,,,,,,,,,,,82,70,71',
-'72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33,,,96,97,98,99,,,,22,23,21',
-',26,-219,25,,30,,131,132,133,134,135,136,137,138,142,16,139,130,140',
-'141,66,77,67,68,69,83,,32,,,,28,,156,,157,159,,,,,,82,70,71,72,74,76',
-'75,,,,73,78,80,,,,,84,85,81,86,33,,,96,97,98,99,,,,22,23,21,,26,-219',
+'192,195,33,193,192,195,33,193,192,195,33,193,113,192,195,33,193,192',
+'195,160,193,180,324,192,195,33,193,185,179,33,228,33,33,33,5,33,33,33',
+'37,174,283,322,177,32,175,40,41,32,161,40,41,32,186,40,41,229,32,49',
+'40,41,293,49,40,41,176,284,32,194,40,41,32,194,32,32,32,194,32,32,32',
+'196,194,351,352,196,194,353,42,196,334,53,194,338,196,53,209,407,196',
+'350,209,336,40,41,196,406,55,56,57,58,59,60,61,62,355,186,63,54,64,65',
+'66,77,67,68,69,83,40,41,53,346,340,341,53,366,344,342,345,126,2,3,4',
+'343,82,70,71,72,74,76,75,339,348,349,73,78,80,39,398,410,186,84,85,81',
+'86,351,352,40,41,353,180,43,411,-4,48,-244,104,264,33,39,117,350,-244',
+'186,186,40,41,113,55,56,57,58,59,60,61,62,79,186,63,54,64,65,66,77,67',
+'68,69,83,40,41,120,346,340,341,40,41,344,342,345,32,40,41,125,343,82',
+'70,71,72,74,76,75,339,348,349,73,78,80,40,41,40,41,84,85,81,86,351,352',
+'40,41,353,39,96,97,98,99,101,102,40,41,103,165,350,40,41,40,41,40,41',
+'55,56,57,58,59,60,61,62,79,166,63,54,64,65,66,77,67,68,69,83,40,41,167',
+'346,340,341,286,287,344,342,345,369,370,40,41,343,82,70,71,72,74,76',
+'75,339,348,349,73,78,80,40,41,385,386,84,85,81,86,351,352,40,41,353',
+'168,96,97,98,99,40,41,40,41,40,41,350,40,41,40,41,40,41,55,56,57,58',
+'59,60,61,62,79,170,63,54,64,65,66,77,67,68,69,83,171,172,113,346,340',
+'341,178,181,344,342,345,184,41,187,189,343,82,70,71,72,74,76,75,339',
+'348,349,73,78,80,180,190,-104,-105,84,85,81,86,351,352,-106,-107,353',
+'-108,96,97,98,99,-109,-110,-111,-112,-113,-114,350,48,-129,197,198,199',
+'200,55,56,57,58,59,60,61,62,79,201,63,54,64,65,66,77,67,68,69,83,202',
+'210,211,346,340,341,42,212,344,342,345,230,244,253,254,343,82,70,71',
+'72,74,76,75,339,348,349,73,78,80,255,257,259,260,84,85,81,86,351,352',
+'42,262,353,262,262,266,42,230,270,274,276,291,292,315,350,274,317,291',
+'330,331,332,55,56,57,58,59,60,61,62,79,357,63,54,64,65,66,77,67,68,69',
+'83,357,357,365,346,340,341,367,368,344,342,345,371,373,380,381,343,82',
+'70,71,72,74,76,75,339,348,349,73,78,80,382,390,390,390,84,85,81,86,351',
+'352,402,403,353,404,96,97,98,99,405,408,409,414,415,416,350,418,421',
+'414,,,,55,56,57,58,59,60,61,62,79,,63,54,64,65,66,77,67,68,69,83,,,',
+'346,340,341,,,344,342,345,,,,,343,82,70,71,72,74,76,75,339,348,349,73',
+'78,80,,,,,84,85,81,86,351,352,,,353,,,,,,,,,,,,350,,,,,,,55,56,57,58',
+'59,60,61,62,79,,63,54,64,65,66,77,67,68,69,83,,,,346,340,341,,,344,342',
+'345,,,,,343,82,70,71,72,74,76,75,339,348,349,73,78,80,,,,,84,85,81,86',
+'33,,,96,97,98,99,,,,22,23,21,,26,-219,25,,30,,131,132,133,134,135,136',
+'137,138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,,156,,157',
+'159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33,,,96,97',
+'98,99,,,,22,23,21,,26,,25,,30,,131,132,133,134,135,136,137,138,142,16',
+'139,130,140,141,66,77,67,68,69,83,,32,,,,28,,,,,,,,,,,82,70,71,72,74',
+'76,75,,,,73,78,80,,,,,84,85,81,86,33,,,96,97,98,99,,,,22,23,21,,26,-219',
 '25,,30,,131,132,133,134,135,136,137,138,142,16,139,130,140,141,66,77',
 '67,68,69,83,,32,,,,28,,156,,157,159,,,,,,82,70,71,72,74,76,75,,,,73',
 '78,80,,,,,84,85,81,86,33,,,96,97,98,99,,,,22,23,21,,26,-219,25,,30,',
 '131,132,133,134,135,136,137,138,142,16,139,130,140,141,66,77,67,68,69',
-'83,,32,,,,28,,235,,,159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84',
-'85,81,86,33,,,96,97,98,99,,,,22,23,21,,26,-219,25,,30,,131,132,133,134',
-'135,136,137,138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,',
-'156,,157,159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33',
-',,96,97,98,99,,,,22,23,21,,26,-219,25,,30,,131,132,133,134,135,136,137',
-'138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,,235,,,159,,',
-',,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,96,97,98,99,,,,90',
-'89,91,,,,,,,,55,56,57,58,59,60,61,62,79,,63,54,64,65,66,77,67,68,69',
-'83,,,,,,,,192,195,,193,,,,,,82,70,71,72,74,76,75,,95,94,73,78,80,,,',
-',84,85,81,86,96,97,98,99,,,,90,89,91,,,,,,40,41,55,56,57,58,59,60,61',
-'62,79,,63,54,64,65,66,77,67,68,69,83,194,,,,,,,,,,,,,,,,82,70,71,72',
-'74,76,75,,95,94,73,78,80,96,97,98,99,84,85,81,86,,,,,,,,,,55,56,57,58',
-'59,60,61,62,79,,63,54,64,65,66,77,67,68,69,83,,,,,,,,235,,,159,,,,,',
-'82,70,71,72,74,76,75,,,,73,78,80,96,97,98,99,84,85,81,86,,,,,,,,,,55',
-'56,57,58,59,60,61,62,79,,63,54,64,65,66,77,67,68,69,83,,,,,,,,235,,',
-'159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,96,97,98,99,84,85,81,86,,',
-',,,,,,,55,56,57,58,59,60,61,62,79,,63,54,64,65,66,77,67,68,69,83,192',
-'195,,193,192,195,,193,192,195,,193,192,195,,193,82,70,71,72,74,76,75',
-',,,73,78,80,,,,,84,85,81,86,192,195,,193,,,,,40,41,,,40,41,,,40,41,',
-',40,41,,,,,,,,,194,,,,194,,,,194,,,,194,,-243,40,41,33,,117,,-243,,',
-'311,312,113,,-243,,,33,,117,,-243,,194,311,312,113,,,,,313,,,,,,,,,308',
-'307,,,32,313,,,,,,,,,308,307,-243,,32,33,299,117,,-243,,,311,312,113',
-',,,,,317,,,174,,,177,,175,,,323,,313,,,,,,,,,308,307,,33,32,,176,,321',
-'327,324,325,326,22,23,21,328,26,,25,318,30,,8,12,19,20,9,10,13,14,15',
-'16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,45,30,,8,12,19,20',
+'83,,32,,,,28,,156,,157,159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,',
+',84,85,81,86,33,,,96,97,98,99,,,,22,23,21,,26,-219,25,,30,,131,132,133',
+'134,135,136,137,138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,',
+'28,,236,,,159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86',
+'33,,,96,97,98,99,,,,22,23,21,,26,-219,25,,30,,131,132,133,134,135,136',
+'137,138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,,156,,157',
+'159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33,,,96,97',
+'98,99,,,,22,23,21,,26,-219,25,,30,,131,132,133,134,135,136,137,138,142',
+'16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,,236,,,159,,,,,,82,70',
+'71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,96,97,98,99,,,,90,89,91,',
+',,,,,,55,56,57,58,59,60,61,62,79,,63,54,64,65,66,77,67,68,69,83,,,,',
+',,,,,,,,,,,,82,70,71,72,74,76,75,,95,94,73,78,80,,,,,84,85,81,86,96',
+'97,98,99,,,,90,89,91,,,,,,,,55,56,57,58,59,60,61,62,79,,63,54,64,65',
+'66,77,67,68,69,83,,,,,,,,,,,,,,,,,82,70,71,72,74,76,75,,95,94,73,78',
+'80,96,97,98,99,84,85,81,86,,,,,,,,,,55,56,57,58,59,60,61,62,79,,63,54',
+'64,65,66,77,67,68,69,83,,,,,,,,236,,,159,,,,,,82,70,71,72,74,76,75,',
+',,73,78,80,96,97,98,99,84,85,81,86,,,,,,,,,,55,56,57,58,59,60,61,62',
+'79,,63,54,64,65,66,77,67,68,69,83,,,,,,,,236,,,159,,,,,,82,70,71,72',
+'74,76,75,,,,73,78,80,96,97,98,99,84,85,81,86,,,,,,,,,,55,56,57,58,59',
+'60,61,62,79,,63,54,64,65,66,77,67,68,69,83,-244,,,33,,117,,-244,,,312',
+'313,113,,,,82,70,71,72,74,76,75,,,,73,78,80,,,314,,84,85,81,86,,,,309',
+'308,-244,,32,33,,117,,-244,,,312,313,113,,-244,,,33,300,117,,-244,,',
+'312,313,113,,,,,314,,,,,,,,,309,308,,,32,314,,,,,,,,,309,308,,33,32',
+',318,,,,,,,22,23,21,,26,,25,319,30,,8,12,19,20,9,10,13,14,15,16,17,18',
+'11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,45,30,,8,12,19,20,9,10,13,14',
+'15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20',
 '9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30',
 ',8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21',
 ',26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,',
 '28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33',
 ',,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18',
 '11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14',
-'15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20',
-'9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,-247',
+'15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,-248,30,,8,12,19',
+'20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,',
 '30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23',
 '21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32',
 ',,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27',
@@ -534,10 +537,9 @@ def initialize(input:, location:)
 '17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10',
 '13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12',
 '19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25',
-',30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23',
-'21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,,,,,,32,,',
-',28' ]
-        racc_action_table = arr = ::Array.new(3118, nil)
+',30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,174,,,177,,175,,32,324',
+',,28,,,,,,,,,,,,,,176,,322,328,325,326,327,,,,329' ]
+        racc_action_table = arr = ::Array.new(3142, nil)
         idx = 0
         clist.each do |str|
           str.split(',', -1).each do |i|
@@ -547,142 +549,142 @@ def initialize(input:, location:)
         end
 
 clist = [
-'323,323,279,48,323,31,31,1,34,31,34,28,322,34,177,34,323,34,44,44,322',
-'5,34,323,323,323,323,323,323,323,323,323,219,323,323,323,323,323,323',
-'323,323,323,323,28,48,220,323,323,323,221,279,323,323,323,34,177,263',
-'269,323,323,323,323,323,323,323,323,323,323,323,323,323,323,47,219,123',
-'297,323,323,323,323,355,355,275,290,355,34,220,183,321,327,221,169,169',
-'328,297,116,355,263,269,123,47,47,116,355,355,355,355,355,355,355,355',
-'355,183,355,355,355,355,355,355,355,355,355,355,275,290,51,355,355,355',
-'321,327,355,355,355,328,7,6,6,355,355,355,355,355,355,355,355,355,355',
-'355,355,355,355,270,320,51,332,355,355,355,355,357,357,389,24,357,6',
-'357,357,357,357,389,119,160,209,249,27,357,270,320,32,332,249,35,357',
-'357,357,357,357,357,357,357,357,382,357,357,357,357,357,357,357,357',
-'357,357,119,160,209,357,357,357,394,395,357,357,357,0,0,0,382,357,357',
-'357,357,357,357,357,357,357,357,357,357,357,357,188,188,394,395,357',
-'357,357,357,358,358,213,213,358,36,358,358,358,358,214,214,215,215,216',
-'216,358,217,217,218,218,224,224,358,358,358,358,358,358,358,358,358',
-'46,358,358,358,358,358,358,358,358,358,358,225,225,87,358,358,358,226',
-'226,358,358,358,266,266,272,272,358,358,358,358,358,358,358,358,358',
-'358,358,358,358,358,346,346,362,362,358,358,358,358,359,359,363,363',
-'359,89,359,359,359,359,367,367,387,387,390,390,359,392,392,396,396,416',
-'416,359,359,359,359,359,359,359,359,359,90,359,359,359,359,359,359,359',
-'359,359,359,418,418,91,359,359,359,419,419,359,359,359,93,94,95,113',
-'359,359,359,359,359,359,359,359,359,359,359,359,359,359,115,117,120',
-'121,359,359,359,359,370,370,124,127,370,128,129,114,130,131,114,132',
-'114,133,134,135,370,136,137,138,139,140,141,370,370,370,370,370,370',
-'370,370,370,114,370,370,370,370,370,370,370,370,370,370,142,145,146',
-'370,370,370,148,150,370,370,370,153,154,161,162,370,370,370,370,370',
-'370,370,370,370,370,370,370,370,370,163,164,190,207,370,370,370,370',
-'383,383,222,223,383,228,383,383,383,383,233,244,245,246,247,248,383',
-'250,251,255,258,260,261,383,383,383,383,383,383,383,383,383,262,383',
-'383,383,383,383,383,383,383,383,383,276,278,281,383,383,383,283,284',
-'383,383,383,288,311,312,313,383,383,383,383,383,383,383,383,383,383',
-'383,383,383,383,324,325,326,331,383,383,383,383,415,415,334,336,415',
-'354,356,360,361,364,374,376,378,384,385,386,415,388,391,393,398,400',
-'403,415,415,415,415,415,415,415,415,415,406,415,415,415,415,415,415',
-'415,415,415,415,412,420,,415,415,415,,,415,415,415,,,,,415,415,415,415',
-'415,415,415,415,415,415,415,415,415,415,,,,,415,415,415,415,49,,,49',
+'143,143,48,143,203,203,177,203,205,205,220,205,280,206,206,221,206,207',
+'207,51,207,116,298,240,240,222,240,123,116,264,183,270,276,291,1,322',
+'328,329,5,114,271,298,114,48,114,143,143,177,51,203,203,220,123,205',
+'205,183,221,28,206,206,280,119,207,207,114,271,222,143,240,240,264,203',
+'270,276,291,205,322,328,329,143,206,324,324,203,207,324,7,205,321,28',
+'240,323,206,119,160,390,207,324,210,323,44,44,240,390,324,324,324,324',
+'324,324,324,324,324,321,324,324,324,324,324,324,324,324,324,324,6,6',
+'160,324,324,324,210,333,324,324,324,47,0,0,0,324,324,324,324,324,324',
+'324,324,324,324,324,324,324,324,6,383,395,333,324,324,324,324,356,356',
+'47,47,356,250,24,396,34,27,34,32,250,34,35,34,356,34,383,395,169,169',
+'34,356,356,356,356,356,356,356,356,356,396,356,356,356,356,356,356,356',
+'356,356,356,188,188,36,356,356,356,214,214,356,356,356,34,215,215,46',
+'356,356,356,356,356,356,356,356,356,356,356,356,356,356,216,216,217',
+'217,356,356,356,356,358,358,218,218,358,34,358,358,358,358,31,31,219',
+'219,31,87,358,225,225,226,226,227,227,358,358,358,358,358,358,358,358',
+'358,89,358,358,358,358,358,358,358,358,358,358,267,267,90,358,358,358',
+'273,273,358,358,358,347,347,363,363,358,358,358,358,358,358,358,358',
+'358,358,358,358,358,358,364,364,368,368,358,358,358,358,359,359,388',
+'388,359,91,359,359,359,359,391,391,393,393,397,397,359,417,417,419,419',
+'420,420,359,359,359,359,359,359,359,359,359,93,359,359,359,359,359,359',
+'359,359,359,359,94,95,113,359,359,359,115,117,359,359,359,120,121,124',
+'127,359,359,359,359,359,359,359,359,359,359,359,359,359,359,128,129',
+'130,131,359,359,359,359,360,360,132,133,360,134,360,360,360,360,135',
+'136,137,138,139,140,360,141,142,145,146,148,150,360,360,360,360,360',
+'360,360,360,360,153,360,360,360,360,360,360,360,360,360,360,154,161',
+'162,360,360,360,163,164,360,360,360,190,208,223,224,360,360,360,360',
+'360,360,360,360,360,360,360,360,360,360,229,234,245,246,360,360,360',
+'360,371,371,247,248,371,249,251,252,256,259,261,262,263,277,279,282',
+'371,284,285,289,312,313,314,371,371,371,371,371,371,371,371,371,325',
+'371,371,371,371,371,371,371,371,371,371,326,327,332,371,371,371,335',
+'337,371,371,371,355,357,361,362,371,371,371,371,371,371,371,371,371',
+'371,371,371,371,371,365,375,377,379,371,371,371,371,384,384,385,386',
+'384,387,384,384,384,384,389,392,394,399,401,404,384,407,413,421,,,,384',
+'384,384,384,384,384,384,384,384,,384,384,384,384,384,384,384,384,384',
+'384,,,,384,384,384,,,384,384,384,,,,,384,384,384,384,384,384,384,384',
+'384,384,384,384,384,384,,,,,384,384,384,384,416,416,,,416,,,,,,,,,,',
+',416,,,,,,,416,416,416,416,416,416,416,416,416,,416,416,416,416,416',
+'416,416,416,416,416,,,,416,416,416,,,416,416,416,,,,,416,416,416,416',
+'416,416,416,416,416,416,416,416,416,416,,,,,416,416,416,416,49,,,49',
 '49,49,49,,,,49,49,49,,49,49,49,,49,,49,49,49,49,49,49,49,49,49,49,49',
 '49,49,49,49,49,49,49,49,49,,49,,,,49,,49,,49,49,,,,,,49,49,49,49,49',
 '49,49,,,,49,49,49,,,,,49,49,49,49,156,,,156,156,156,156,,,,156,156,156',
 ',156,,156,,156,,156,156,156,156,156,156,156,156,156,156,156,156,156',
 '156,156,156,156,156,156,156,,156,,,,156,,,,,,,,,,,156,156,156,156,156',
-'156,156,,,,156,156,156,,,,,156,156,156,156,197,,,197,197,197,197,,,',
-'197,197,197,,197,197,197,,197,,197,197,197,197,197,197,197,197,197,197',
-'197,197,197,197,197,197,197,197,197,197,,197,,,,197,,197,,197,197,,',
-',,,197,197,197,197,197,197,197,,,,197,197,197,,,,,197,197,197,197,198',
-',,198,198,198,198,,,,198,198,198,,198,198,198,,198,,198,198,198,198',
-'198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,,198',
-',,,198,,198,,198,198,,,,,,198,198,198,198,198,198,198,,,,198,198,198',
-',,,,198,198,198,198,199,,,199,199,199,199,,,,199,199,199,,199,199,199',
-',199,,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199',
-'199,199,199,199,,199,,,,199,,199,,,199,,,,,,199,199,199,199,199,199',
-'199,,,,199,199,199,,,,,199,199,199,199,208,,,208,208,208,208,,,,208',
-'208,208,,208,208,208,,208,,208,208,208,208,208,208,208,208,208,208,208',
-'208,208,208,208,208,208,208,208,208,,208,,,,208,,208,,208,208,,,,,,208',
-'208,208,208,208,208,208,,,,208,208,208,,,,,208,208,208,208,256,,,256',
-'256,256,256,,,,256,256,256,,256,256,256,,256,,256,256,256,256,256,256',
-'256,256,256,256,256,256,256,256,256,256,256,256,256,256,,256,,,,256',
-',256,,,256,,,,,,256,256,256,256,256,256,256,,,,256,256,256,,,,,256,256',
-'256,256,30,30,30,30,,,,30,30,30,,,,,,,,30,30,30,30,30,30,30,30,30,,30',
-'30,30,30,30,30,30,30,30,30,,,,,,,,143,143,,143,,,,,,30,30,30,30,30,30',
-'30,,30,30,30,30,30,,,,,30,30,30,30,165,165,165,165,,,,165,165,165,,',
-',,,143,143,165,165,165,165,165,165,165,165,165,,165,165,165,165,165',
-'165,165,165,165,165,143,,,,,,,,,,,,,,,,165,165,165,165,165,165,165,',
-'165,165,165,165,165,200,200,200,200,165,165,165,165,,,,,,,,,,200,200',
-'200,200,200,200,200,200,200,,200,200,200,200,200,200,200,200,200,200',
-',,,,,,,200,,,200,,,,,,200,200,200,200,200,200,200,,,,200,200,200,201',
-'201,201,201,200,200,200,200,,,,,,,,,,201,201,201,201,201,201,201,201',
-'201,,201,201,201,201,201,201,201,201,201,201,,,,,,,,201,,,201,,,,,,201',
-'201,201,201,201,201,201,,,,201,201,201,235,235,235,235,201,201,201,201',
-',,,,,,,,,235,235,235,235,235,235,235,235,235,,235,235,235,235,235,235',
-'235,235,235,235,202,202,,202,204,204,,204,205,205,,205,206,206,,206',
-'235,235,235,235,235,235,235,,,,235,235,235,,,,,235,235,235,235,239,239',
-',239,,,,,202,202,,,204,204,,,205,205,,,206,206,,,,,,,,,202,,,,204,,',
-',205,,,,206,,280,239,239,280,,280,,280,,,280,280,280,,287,,,287,,287',
-',287,,239,287,287,287,,,,,280,,,,,,,,,280,280,,,280,287,,,,,,,,,287',
-'287,289,,287,289,280,289,,289,,,289,289,289,,,,,,287,,,298,,,298,,298',
-',,298,,289,,,,,,,,,289,289,,2,289,,298,,298,298,298,298,298,2,2,2,298',
-'2,,2,289,2,,2,2,2,2,2,2,2,2,2,2,2,2,2,2,,,25,,,,,2,,,,2,25,25,25,,25',
-',25,25,25,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,,,26,,,,,25,,,',
-'25,26,26,26,,26,,26,,26,,26,26,26,26,26,26,26,26,26,26,26,26,26,26,',
-',40,,,,,26,,,,26,40,40,40,,40,,40,,40,,40,40,40,40,40,40,40,40,40,40',
-'40,40,40,40,,,41,,,,,40,,,,40,41,41,41,,41,,41,,41,,41,41,41,41,41,41',
-'41,41,41,41,41,41,41,41,,,43,,,,,41,,,,41,43,43,43,,43,,43,,43,,43,43',
-'43,43,43,43,43,43,43,43,43,43,43,43,,,53,,,,,43,,,,43,53,53,53,,53,',
-'53,,53,,53,53,53,53,53,53,53,53,53,53,53,53,53,53,,,92,,,,,53,,,,53',
-'92,92,92,,92,,92,,92,,92,92,92,92,92,92,92,92,92,92,92,92,92,92,,,125',
-',,,,92,,,,92,125,125,125,,125,,125,125,125,,125,125,125,125,125,125',
-'125,125,125,125,125,125,125,125,,,157,,,,,125,,,,125,157,157,157,,157',
-',157,,157,,157,157,157,157,157,157,157,157,157,157,157,157,157,157,',
-',158,,,,,157,,,,157,158,158,158,,158,,158,,158,,158,158,158,158,158',
-'158,158,158,158,158,158,158,158,158,,,159,,,,,158,,,,158,159,159,159',
-',159,,159,,159,,159,159,159,159,159,159,159,159,159,159,159,159,159',
-'159,,,166,,,,,159,,,,159,166,166,166,,166,,166,,166,,166,166,166,166',
-'166,166,166,166,166,166,166,166,166,166,,,167,,,,,166,,,,166,167,167',
-'167,,167,,167,,167,,167,167,167,167,167,167,167,167,167,167,167,167',
-'167,167,,,168,,,,,167,,,,167,168,168,168,,168,,168,,168,,168,168,168',
-'168,168,168,168,168,168,168,168,168,168,168,,,170,,,,,168,,,,168,170',
-'170,170,,170,,170,,170,,170,170,170,170,170,170,170,170,170,170,170',
-'170,170,170,,,171,,,,,170,,,,170,171,171,171,,171,,171,,171,,171,171',
-'171,171,171,171,171,171,171,171,171,171,171,171,,,172,,,,,171,,,,171',
-'172,172,172,,172,,172,,172,,172,172,172,172,172,172,172,172,172,172',
-'172,172,172,172,,,178,,,,,172,,,,172,178,178,178,,178,,178,,178,,178',
-'178,178,178,178,178,178,178,178,178,178,178,178,178,,,179,,,,,178,,',
-',178,179,179,179,,179,,179,,179,,179,179,179,179,179,179,179,179,179',
-'179,179,179,179,179,,,181,,,,,179,,,,179,181,181,181,,181,,181,,181',
-',181,181,181,181,181,181,181,181,181,181,181,181,181,181,,,186,,,,,181',
-',,,181,186,186,186,,186,,186,,186,,186,186,186,186,186,186,186,186,186',
-'186,186,186,186,186,,,203,,,,,186,,,,186,203,203,203,,203,,203,,203',
-',203,203,203,203,203,203,203,203,203,203,203,203,203,203,,,210,,,,,203',
-',,,203,210,210,210,,210,,210,,210,,210,210,210,210,210,210,210,210,210',
-'210,210,210,210,210,,,229,,,,,210,,,,210,229,229,229,,229,,229,,229',
-',229,229,229,229,229,229,229,229,229,229,229,229,229,229,,,252,,,,,229',
-',,,229,252,252,252,,252,,252,,252,,252,252,252,252,252,252,252,252,252',
-'252,252,252,252,252,,,291,,,,,252,,,,252,291,291,291,,291,,291,,291',
-',291,291,291,291,291,291,291,291,291,291,291,291,291,291,,,314,,,,,291',
-',,,291,314,314,314,,314,,314,,314,,314,314,314,314,314,314,314,314,314',
-'314,314,314,314,314,,,329,,,,,314,,,,314,329,329,329,,329,,329,,329',
-',329,329,329,329,329,329,329,329,329,329,329,329,329,329,,,330,,,,,329',
-',,,329,330,330,330,,330,,330,,330,,330,330,330,330,330,330,330,330,330',
-'330,330,330,330,330,,,366,,,,,330,,,,330,366,366,366,,366,,366,,366',
-',366,366,366,366,366,366,366,366,366,366,366,366,366,366,,,373,,,,,366',
-',,,366,373,373,373,,373,,373,,373,,373,373,373,373,373,373,373,373,373',
-'373,373,373,373,373,,,375,,,,,373,,,,373,375,375,375,,375,,375,,375',
-',375,375,375,375,375,375,375,375,375,375,375,375,375,375,,,377,,,,,375',
-',,,375,377,377,377,,377,,377,,377,,377,377,377,377,377,377,377,377,377',
-'377,377,377,377,377,,,379,,,,,377,,,,377,379,379,379,,379,,379,,379',
-',379,379,379,379,379,379,379,379,379,379,379,379,379,379,,,380,,,,,379',
-',,,379,380,380,380,,380,,380,,380,,380,380,380,380,380,380,380,380,380',
+'156,156,,,,156,156,156,,,,,156,156,156,156,198,,,198,198,198,198,,,',
+'198,198,198,,198,198,198,,198,,198,198,198,198,198,198,198,198,198,198',
+'198,198,198,198,198,198,198,198,198,198,,198,,,,198,,198,,198,198,,',
+',,,198,198,198,198,198,198,198,,,,198,198,198,,,,,198,198,198,198,199',
+',,199,199,199,199,,,,199,199,199,,199,199,199,,199,,199,199,199,199',
+'199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,,199',
+',,,199,,199,,199,199,,,,,,199,199,199,199,199,199,199,,,,199,199,199',
+',,,,199,199,199,199,200,,,200,200,200,200,,,,200,200,200,,200,200,200',
+',200,,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200',
+'200,200,200,200,,200,,,,200,,200,,,200,,,,,,200,200,200,200,200,200',
+'200,,,,200,200,200,,,,,200,200,200,200,209,,,209,209,209,209,,,,209',
+'209,209,,209,209,209,,209,,209,209,209,209,209,209,209,209,209,209,209',
+'209,209,209,209,209,209,209,209,209,,209,,,,209,,209,,209,209,,,,,,209',
+'209,209,209,209,209,209,,,,209,209,209,,,,,209,209,209,209,257,,,257',
+'257,257,257,,,,257,257,257,,257,257,257,,257,,257,257,257,257,257,257',
+'257,257,257,257,257,257,257,257,257,257,257,257,257,257,,257,,,,257',
+',257,,,257,,,,,,257,257,257,257,257,257,257,,,,257,257,257,,,,,257,257',
+'257,257,30,30,30,30,,,,30,30,30,,,,,,,,30,30,30,30,30,30,30,30,30,,30',
+'30,30,30,30,30,30,30,30,30,,,,,,,,,,,,,,,,,30,30,30,30,30,30,30,,30',
+'30,30,30,30,,,,,30,30,30,30,165,165,165,165,,,,165,165,165,,,,,,,,165',
+'165,165,165,165,165,165,165,165,,165,165,165,165,165,165,165,165,165',
+'165,,,,,,,,,,,,,,,,,165,165,165,165,165,165,165,,165,165,165,165,165',
+'201,201,201,201,165,165,165,165,,,,,,,,,,201,201,201,201,201,201,201',
+'201,201,,201,201,201,201,201,201,201,201,201,201,,,,,,,,201,,,201,,',
+',,,201,201,201,201,201,201,201,,,,201,201,201,202,202,202,202,201,201',
+'201,201,,,,,,,,,,202,202,202,202,202,202,202,202,202,,202,202,202,202',
+'202,202,202,202,202,202,,,,,,,,202,,,202,,,,,,202,202,202,202,202,202',
+'202,,,,202,202,202,236,236,236,236,202,202,202,202,,,,,,,,,,236,236',
+'236,236,236,236,236,236,236,,236,236,236,236,236,236,236,236,236,236',
+'281,,,281,,281,,281,,,281,281,281,,,,236,236,236,236,236,236,236,,,',
+'236,236,236,,,281,,236,236,236,236,,,,281,281,288,,281,288,,288,,288',
+',,288,288,288,,290,,,290,281,290,,290,,,290,290,290,,,,,288,,,,,,,,',
+'288,288,,,288,290,,,,,,,,,290,290,,2,290,,288,,,,,,,2,2,2,,2,,2,290',
+'2,,2,2,2,2,2,2,2,2,2,2,2,2,2,2,,,25,,,,,2,,,,2,25,25,25,,25,,25,25,25',
+',25,25,25,25,25,25,25,25,25,25,25,25,25,25,,,26,,,,,25,,,,25,26,26,26',
+',26,,26,,26,,26,26,26,26,26,26,26,26,26,26,26,26,26,26,,,40,,,,,26,',
+',,26,40,40,40,,40,,40,,40,,40,40,40,40,40,40,40,40,40,40,40,40,40,40',
+',,41,,,,,40,,,,40,41,41,41,,41,,41,,41,,41,41,41,41,41,41,41,41,41,41',
+'41,41,41,41,,,43,,,,,41,,,,41,43,43,43,,43,,43,,43,,43,43,43,43,43,43',
+'43,43,43,43,43,43,43,43,,,53,,,,,43,,,,43,53,53,53,,53,,53,,53,,53,53',
+'53,53,53,53,53,53,53,53,53,53,53,53,,,92,,,,,53,,,,53,92,92,92,,92,',
+'92,,92,,92,92,92,92,92,92,92,92,92,92,92,92,92,92,,,125,,,,,92,,,,92',
+'125,125,125,,125,,125,125,125,,125,125,125,125,125,125,125,125,125,125',
+'125,125,125,125,,,157,,,,,125,,,,125,157,157,157,,157,,157,,157,,157',
+'157,157,157,157,157,157,157,157,157,157,157,157,157,,,158,,,,,157,,',
+',157,158,158,158,,158,,158,,158,,158,158,158,158,158,158,158,158,158',
+'158,158,158,158,158,,,159,,,,,158,,,,158,159,159,159,,159,,159,,159',
+',159,159,159,159,159,159,159,159,159,159,159,159,159,159,,,166,,,,,159',
+',,,159,166,166,166,,166,,166,,166,,166,166,166,166,166,166,166,166,166',
+'166,166,166,166,166,,,167,,,,,166,,,,166,167,167,167,,167,,167,,167',
+',167,167,167,167,167,167,167,167,167,167,167,167,167,167,,,168,,,,,167',
+',,,167,168,168,168,,168,,168,,168,,168,168,168,168,168,168,168,168,168',
+'168,168,168,168,168,,,170,,,,,168,,,,168,170,170,170,,170,,170,,170',
+',170,170,170,170,170,170,170,170,170,170,170,170,170,170,,,171,,,,,170',
+',,,170,171,171,171,,171,,171,,171,,171,171,171,171,171,171,171,171,171',
+'171,171,171,171,171,,,172,,,,,171,,,,171,172,172,172,,172,,172,,172',
+',172,172,172,172,172,172,172,172,172,172,172,172,172,172,,,178,,,,,172',
+',,,172,178,178,178,,178,,178,,178,,178,178,178,178,178,178,178,178,178',
+'178,178,178,178,178,,,179,,,,,178,,,,178,179,179,179,,179,,179,,179',
+',179,179,179,179,179,179,179,179,179,179,179,179,179,179,,,181,,,,,179',
+',,,179,181,181,181,,181,,181,,181,,181,181,181,181,181,181,181,181,181',
+'181,181,181,181,181,,,186,,,,,181,,,,181,186,186,186,,186,,186,,186',
+',186,186,186,186,186,186,186,186,186,186,186,186,186,186,,,204,,,,,186',
+',,,186,204,204,204,,204,,204,,204,,204,204,204,204,204,204,204,204,204',
+'204,204,204,204,204,,,211,,,,,204,,,,204,211,211,211,,211,,211,,211',
+',211,211,211,211,211,211,211,211,211,211,211,211,211,211,,,230,,,,,211',
+',,,211,230,230,230,,230,,230,,230,,230,230,230,230,230,230,230,230,230',
+'230,230,230,230,230,,,253,,,,,230,,,,230,253,253,253,,253,,253,,253',
+',253,253,253,253,253,253,253,253,253,253,253,253,253,253,,,292,,,,,253',
+',,,253,292,292,292,,292,,292,,292,,292,292,292,292,292,292,292,292,292',
+'292,292,292,292,292,,,315,,,,,292,,,,292,315,315,315,,315,,315,,315',
+',315,315,315,315,315,315,315,315,315,315,315,315,315,315,,,330,,,,,315',
+',,,315,330,330,330,,330,,330,,330,,330,330,330,330,330,330,330,330,330',
+'330,330,330,330,330,,,331,,,,,330,,,,330,331,331,331,,331,,331,,331',
+',331,331,331,331,331,331,331,331,331,331,331,331,331,331,,,367,,,,,331',
+',,,331,367,367,367,,367,,367,,367,,367,367,367,367,367,367,367,367,367',
+'367,367,367,367,367,,,374,,,,,367,,,,367,374,374,374,,374,,374,,374',
+',374,374,374,374,374,374,374,374,374,374,374,374,374,374,,,376,,,,,374',
+',,,374,376,376,376,,376,,376,,376,,376,376,376,376,376,376,376,376,376',
+'376,376,376,376,376,,,378,,,,,376,,,,376,378,378,378,,378,,378,,378',
+',378,378,378,378,378,378,378,378,378,378,378,378,378,378,,,380,,,,,378',
+',,,378,380,380,380,,380,,380,,380,,380,380,380,380,380,380,380,380,380',
 '380,380,380,380,380,,,381,,,,,380,,,,380,381,381,381,,381,,381,,381',
-',381,381,381,381,381,381,381,381,381,381,381,381,381,381,,,404,,,,,381',
-',,,381,404,404,404,,404,,404,,404,,404,404,404,404,404,404,404,404,404',
-'404,404,404,404,404,,,407,,,,,404,,,,404,407,407,407,,407,,407,,407',
-',407,407,407,407,407,407,407,407,407,407,407,407,407,407,,,408,,,,,407',
-',,,407,408,408,408,,408,,408,,408,,408,408,408,408,408,408,408,408,408',
-'408,408,408,408,408,,,,,,,,408,,,,408' ]
-        racc_action_check = arr = ::Array.new(3118, nil)
+',381,381,381,381,381,381,381,381,381,381,381,381,381,381,,,382,,,,,381',
+',,,381,382,382,382,,382,,382,,382,,382,382,382,382,382,382,382,382,382',
+'382,382,382,382,382,,,405,,,,,382,,,,382,405,405,405,,405,,405,,405',
+',405,405,405,405,405,405,405,405,405,405,405,405,405,405,,,408,,,,,405',
+',,,405,408,408,408,,408,,408,,408,,408,408,408,408,408,408,408,408,408',
+'408,408,408,408,408,,,409,,,,,408,,,,408,409,409,409,,409,,409,,409',
+',409,409,409,409,409,409,409,409,409,409,409,409,409,409,299,,,299,',
+'299,,409,299,,,409,,,,,,,,,,,,,,299,,299,299,299,299,299,,,,299' ]
+        racc_action_check = arr = ::Array.new(3142, nil)
         idx = 0
         clist.each do |str|
           str.split(',', -1).each do |i|
@@ -692,455 +694,456 @@ def initialize(input:, location:)
         end
 
 racc_action_pointer = [
-   140,     7,  1663,   nil,   nil,    21,    88,    83,   nil,   nil,
+    62,    34,  1663,   nil,   nil,    38,    76,    34,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   142,  1699,  1735,   156,    -8,   nil,
-  1171,     3,   174,   nil,     8,   105,   224,   nil,   nil,   nil,
-  1771,  1807,   nil,  1843,   -30,   nil,   225,    52,    -2,   635,
-   nil,   102,   nil,  1879,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   146,  1699,  1735,   151,    38,   nil,
+  1252,   249,   167,   nil,   169,    98,   185,   nil,   nil,   nil,
+  1771,  1807,   nil,  1843,    52,   nil,   171,   115,    -3,   716,
+   nil,    -4,   nil,  1879,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   238,   nil,   269,
-   296,   309,  1915,   329,   330,   331,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   209,   nil,   217,
+   230,   270,  1915,   308,   319,   320,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   363,   371,   347,    93,   348,   nil,   152,
-   392,   346,   nil,    52,   380,  1951,   nil,   383,   403,   386,
-   363,   364,   366,   368,   369,   370,   372,   373,   374,   375,
-   376,   403,   398,  1220,   nil,   399,   398,   nil,   402,   nil,
-   403,   nil,   nil,   407,   408,   nil,   712,  1987,  2023,  2059,
-   153,   433,   406,   420,   449,  1245,  2095,  2131,  2167,    43,
-  2203,  2239,  2275,   nil,   nil,   nil,   nil,     9,  2311,  2347,
-   nil,  2383,   nil,    65,   nil,   nil,  2419,   nil,   184,   nil,
-   423,   nil,   nil,   nil,   nil,   nil,   nil,   789,   866,   943,
-  1311,  1377,  1485,  2455,  1489,  1493,  1497,   451,  1020,   154,
-  2491,   nil,   nil,   194,   202,   204,   206,   209,   211,    27,
-    40,    44,   425,   480,   213,   235,   241,   nil,   483,  2527,
-   nil,   nil,   nil,   443,   nil,  1443,   nil,   nil,   nil,  1522,
-   nil,   nil,   nil,   nil,   471,   468,   441,   473,   474,   172,
-   476,   492,  2563,   nil,   nil,   447,  1097,   nil,   449,   nil,
-   441,   422,   467,    51,   nil,   nil,   246,   nil,   nil,    52,
-   130,   nil,   218,   nil,   nil,    77,   476,   nil,   503,   -12,
-  1567,   504,   nil,   449,   528,   nil,   nil,  1581,   487,  1623,
-    78,  2599,   nil,   nil,   nil,   nil,   nil,    31,  1610,   nil,
+   nil,   nil,   nil,   352,     3,   325,    19,   326,   nil,    42,
+   373,   327,   nil,     5,   355,  1951,   nil,   358,   391,   374,
+   350,   351,   358,   359,   361,   366,   367,   368,   369,   370,
+   371,   399,   374,    -3,   nil,   375,   374,   nil,   375,   nil,
+   376,   nil,   nil,   386,   397,   nil,   793,  1987,  2023,  2059,
+    75,   422,   395,   398,   427,  1326,  2095,  2131,  2167,   133,
+  2203,  2239,  2275,   nil,   nil,   nil,   nil,     1,  2311,  2347,
+   nil,  2383,   nil,     8,   nil,   nil,  2419,   nil,   156,   nil,
+   404,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   870,   947,
+  1024,  1392,  1458,     1,  2455,     5,    10,    14,   432,  1101,
+    79,  2491,   nil,   nil,   162,   168,   185,   187,   195,   205,
+     5,    10,    20,   400,   455,   210,   212,   214,   nil,   471,
+  2527,   nil,   nil,   nil,   427,   nil,  1524,   nil,   nil,   nil,
+    20,   nil,   nil,   nil,   nil,   455,   452,   431,   463,   465,
+   164,   466,   482,  2563,   nil,   nil,   437,  1178,   nil,   439,
+   nil,   431,   412,   448,    24,   nil,   nil,   236,   nil,   nil,
+    26,    18,   nil,   212,   nil,   nil,    27,   447,   nil,   474,
+    -2,  1567,   475,   nil,   418,   497,   nil,   nil,  1609,   453,
+  1623,    28,  2599,   nil,   nil,   nil,   nil,   nil,   -22,  3070,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   490,   491,   479,  2635,   nil,   nil,   nil,   nil,   nil,
-   131,    83,   -61,    -2,   519,   520,   521,    84,    88,  2671,
-  2707,   543,   133,   nil,   541,   nil,   523,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   260,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   507,    78,   508,   158,   238,   318,
-   546,   547,   266,   274,   524,   nil,  2743,   297,   nil,   nil,
-   398,   nil,   nil,  2779,   551,  2815,   552,  2851,   553,  2887,
-  2923,  2959,   170,   478,   515,   516,   542,   284,   532,   150,
-   286,   533,   289,   534,   187,   188,   291,   nil,   521,   nil,
-   536,   nil,   nil,   524,  2995,   nil,   572,  3031,  3067,   nil,
-   nil,   nil,   555,   nil,   nil,   558,   293,   nil,   315,   321,
-   545,   nil,   nil ]
+   nil,   nil,   456,   457,   445,  2635,   nil,   nil,   nil,   nil,
+   nil,    66,    30,    18,    79,   480,   491,   492,    31,    32,
+  2671,  2707,   514,   109,   nil,   509,   nil,   491,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   243,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   477,   159,   478,   239,   319,
+   399,   516,   517,   249,   265,   508,   nil,  2743,   282,   nil,
+   nil,   479,   nil,   nil,  2779,   535,  2815,   536,  2851,   537,
+  2887,  2923,  2959,   132,   559,   505,   506,   533,   275,   526,
+    83,   283,   527,   285,   528,   133,   146,   287,   nil,   515,
+   nil,   530,   nil,   nil,   518,  2995,   nil,   558,  3031,  3067,
+   nil,   nil,   nil,   531,   nil,   nil,   639,   290,   nil,   292,
+   294,   521,   nil,   nil ]
 
 racc_action_default = [
-  -249,  -249,  -243,    -6,   -15,  -249,    -4,  -157,  -160,  -161,
+  -250,  -250,  -244,    -6,   -15,  -250,    -4,  -157,  -160,  -161,
   -162,  -163,  -164,  -165,  -166,  -167,  -168,  -169,  -170,  -171,
-  -172,  -173,  -174,  -175,  -176,  -243,  -243,  -249,   -80,  -184,
-  -249,  -249,  -244,  -246,   -16,    -4,  -147,   423,    -1,    -5,
-  -243,  -243,  -183,  -243,  -185,  -178,  -248,  -249,  -243,  -243,
-  -182,  -249,  -204,  -243,  -104,  -105,  -106,  -107,  -108,  -109,
+  -172,  -173,  -174,  -175,  -176,  -244,  -244,  -250,   -80,  -184,
+  -250,  -250,  -245,  -247,   -16,    -4,  -147,   424,    -1,    -5,
+  -244,  -244,  -183,  -244,  -185,  -178,  -249,  -250,  -244,  -244,
+  -182,  -250,  -204,  -244,  -104,  -105,  -106,  -107,  -108,  -109,
   -110,  -111,  -112,  -113,  -114,  -115,  -116,  -117,  -118,  -119,
   -120,  -121,  -122,  -123,  -124,  -125,  -126,  -127,  -128,  -129,
-  -130,  -131,  -132,  -133,  -134,  -135,  -136,  -248,  -188,  -249,
-  -249,  -249,  -243,  -249,  -249,  -249,  -199,  -200,  -201,  -202,
-  -236,  -237,  -238,  -239,  -245,    -2,    -7,    -8,    -9,   -10,
-   -11,   -12,   -13,   -16,  -249,  -249,  -249,  -249,    -3,   -80,
-  -249,  -158,  -159,  -249,  -249,  -243,  -180,  -249,  -249,  -249,
+  -130,  -131,  -132,  -133,  -134,  -135,  -136,  -249,  -188,  -250,
+  -250,  -250,  -244,  -250,  -250,  -250,  -199,  -200,  -201,  -202,
+  -237,  -238,  -239,  -240,  -246,    -2,    -7,    -8,    -9,   -10,
+   -11,   -12,   -13,   -16,  -250,  -250,  -250,  -250,    -3,   -80,
+  -250,  -158,  -159,  -250,  -250,  -244,  -180,  -250,  -250,  -250,
   -170,  -160,  -164,  -171,  -172,  -161,  -162,  -165,  -166,  -169,
-  -163,  -115,  -167,  -231,  -197,  -249,  -208,  -209,  -211,  -212,
-  -214,  -215,  -218,  -221,  -223,  -224,  -243,  -243,  -243,  -243,
-  -249,  -249,  -249,  -206,  -249,  -247,  -243,  -243,  -243,  -193,
-  -243,  -243,  -243,   -17,   -14,   -14,   -14,  -243,  -243,  -243,
-  -241,  -243,   -79,  -249,  -149,  -177,  -243,  -179,  -186,  -181,
-   -81,  -225,  -232,  -233,  -234,  -235,  -198,  -243,  -243,  -243,
-  -219,  -219,  -231,  -243,  -231,  -231,  -231,  -249,  -243,  -249,
-  -243,  -187,  -189,  -190,  -191,  -192,  -194,  -195,  -196,  -243,
-  -243,  -243,  -249,  -249,  -154,  -155,  -156,  -148,  -249,  -243,
-  -207,  -215,  -210,  -217,  -213,  -249,  -220,  -222,  -226,  -231,
-  -227,  -228,  -230,   -82,  -249,  -249,  -203,  -137,  -137,  -249,
-  -137,  -249,  -243,  -242,  -150,  -205,  -243,  -229,  -249,   -83,
-   -19,  -145,   -24,  -243,   -57,  -240,  -153,  -216,   -30,  -243,
-  -249,  -139,  -142,  -146,   -30,  -243,   -30,   -26,   -29,   -16,
-   -16,   -20,  -138,  -145,  -249,  -143,  -144,   -16,   -25,   -16,
-  -243,  -243,   -56,   -58,   -59,   -60,   -61,   -71,   -71,   -18,
-   -31,   -32,   -33,   -34,   -35,   -36,   -37,   -38,   -39,   -40,
-   -41,  -249,  -249,  -249,  -243,  -140,  -141,   -22,   -23,   -27,
-  -249,  -243,   -68,  -249,   -42,   -42,   -42,  -243,  -243,  -243,
-  -243,  -249,  -249,   -28,   -62,   -69,  -249,   -72,   -86,   -87,
-   -88,   -89,   -90,   -91,   -92,   -93,   -94,   -97,   -98,   -99,
-  -100,  -101,  -102,  -103,  -129,  -249,  -249,  -249,  -249,  -249,
-   -64,   -66,   -53,   -54,  -249,   -21,  -243,   -73,   -95,   -96,
-  -249,  -151,   -43,  -243,   -50,  -243,   -50,  -243,   -50,  -243,
-  -243,  -243,  -249,  -249,  -249,  -249,  -249,   -44,  -249,  -249,
-   -46,  -249,   -48,  -249,  -249,  -249,   -55,   -63,   -15,   -84,
-  -249,   -74,   -75,  -249,  -243,   -51,  -249,  -243,  -243,   -65,
-   -67,   -70,   -76,   -77,   -85,  -249,   -45,   -52,   -47,   -49,
-   -15,  -152,   -78 ]
+  -163,  -115,  -167,  -231,  -197,  -250,  -208,  -209,  -211,  -212,
+  -214,  -215,  -218,  -221,  -223,  -224,  -244,  -244,  -244,  -244,
+  -250,  -250,  -250,  -206,  -250,  -248,  -244,  -244,  -244,  -193,
+  -244,  -244,  -244,   -17,   -14,   -14,   -14,  -244,  -244,  -244,
+  -242,  -244,   -79,  -250,  -149,  -177,  -244,  -179,  -186,  -181,
+   -81,  -225,  -232,  -233,  -234,  -235,  -236,  -198,  -244,  -244,
+  -244,  -219,  -219,  -231,  -244,  -231,  -231,  -231,  -250,  -244,
+  -250,  -244,  -187,  -189,  -190,  -191,  -192,  -194,  -195,  -196,
+  -244,  -244,  -244,  -250,  -250,  -154,  -155,  -156,  -148,  -250,
+  -244,  -207,  -215,  -210,  -217,  -213,  -250,  -220,  -222,  -226,
+  -231,  -227,  -228,  -230,   -82,  -250,  -250,  -203,  -137,  -137,
+  -250,  -137,  -250,  -244,  -243,  -150,  -205,  -244,  -229,  -250,
+   -83,   -19,  -145,   -24,  -244,   -57,  -241,  -153,  -216,   -30,
+  -244,  -250,  -139,  -142,  -146,   -30,  -244,   -30,   -26,   -29,
+   -16,   -16,   -20,  -138,  -145,  -250,  -143,  -144,   -16,   -25,
+   -16,  -244,  -244,   -56,   -58,   -59,   -60,   -61,   -71,   -71,
+   -18,   -31,   -32,   -33,   -34,   -35,   -36,   -37,   -38,   -39,
+   -40,   -41,  -250,  -250,  -250,  -244,  -140,  -141,   -22,   -23,
+   -27,  -250,  -244,   -68,  -250,   -42,   -42,   -42,  -244,  -244,
+  -244,  -244,  -250,  -250,   -28,   -62,   -69,  -250,   -72,   -86,
+   -87,   -88,   -89,   -90,   -91,   -92,   -93,   -94,   -97,   -98,
+   -99,  -100,  -101,  -102,  -103,  -129,  -250,  -250,  -250,  -250,
+  -250,   -64,   -66,   -53,   -54,  -250,   -21,  -244,   -73,   -95,
+   -96,  -250,  -151,   -43,  -244,   -50,  -244,   -50,  -244,   -50,
+  -244,  -244,  -244,  -250,  -250,  -250,  -250,  -250,   -44,  -250,
+  -250,   -46,  -250,   -48,  -250,  -250,  -250,   -55,   -63,   -15,
+   -84,  -250,   -74,   -75,  -250,  -244,   -51,  -250,  -244,  -244,
+   -65,   -67,   -70,   -76,   -77,   -85,  -250,   -45,   -52,   -47,
+   -49,   -15,  -152,   -78 ]
 
 racc_goto_table = [
-     6,    46,   116,   127,    93,   163,   114,    92,    88,   191,
-    50,   207,   129,   203,   355,   278,   128,   124,   231,   123,
-   234,   411,   271,    38,    47,   233,   233,   278,   276,   280,
-   388,     1,   391,    34,   393,   287,    35,   289,   121,   122,
-   288,   106,   278,   422,   315,   268,   371,   143,   374,   376,
-   378,   105,   118,   260,   262,   274,   264,   319,   164,   294,
-   245,   386,   219,   220,   221,   357,   358,   359,   238,   295,
-   240,   241,   242,   334,   400,   236,   237,   267,   296,   360,
-   361,   250,   279,   233,   293,   173,   336,   383,   398,   119,
-   169,   162,   203,   270,   284,   183,   222,    87,   232,   100,
-   nil,   182,   nil,   nil,   nil,   257,   421,   nil,   nil,   nil,
+     6,    46,   116,    88,    93,   163,   114,    92,   127,   191,
+   356,   129,    50,   204,   208,   232,   128,   235,   124,   123,
+   234,   234,   279,    38,    47,   277,   412,   281,   272,   261,
+   263,     1,   265,   288,   279,   290,    34,   289,   121,   122,
+   237,   238,   372,    35,   375,   377,   379,   143,   423,   279,
+   316,   105,   118,   106,   389,   269,   392,   387,   394,   164,
+   220,   221,   222,   275,   246,   358,   359,   360,   320,   239,
+   401,   241,   242,   243,   268,   295,   296,   297,   234,   251,
+   335,   280,   294,   337,   384,   173,   361,   362,   399,   119,
+   169,   162,   271,   204,   285,   183,   223,    87,   233,   100,
+   nil,   nil,   422,   182,   nil,   nil,   258,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   188,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    93,
-   nil,   nil,    92,   212,   nil,   223,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   202,   204,   205,   206,   nil,   nil,
-   230,   nil,   246,   nil,   213,   214,   215,   nil,   216,   217,
-   218,   244,   nil,   nil,   247,   248,   224,   225,   nil,   226,
-   nil,   255,   nil,   nil,   188,   nil,   nil,   128,   249,   251,
-   nil,   nil,   nil,   nil,   nil,   143,   143,   143,   nil,   nil,
-   nil,   239,   nil,   nil,   nil,   nil,   143,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   213,    93,
+   nil,   nil,    92,   nil,   nil,   224,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   203,   205,   206,   207,   nil,   nil,
+   231,   nil,   nil,   247,   214,   215,   216,   nil,   217,   218,
+   219,   245,   nil,   nil,   nil,   nil,   225,   226,   nil,   227,
+   248,   249,   256,   nil,   188,   nil,   nil,   nil,   128,   250,
+   252,   nil,   nil,   nil,   nil,   nil,   143,   143,   143,   nil,
+   nil,   nil,   240,   nil,   nil,   nil,   nil,   143,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   281,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   128,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   116,   nil,
-   266,   297,   nil,   nil,   143,   116,   nil,   116,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   320,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   282,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   128,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   116,
+   nil,   267,   298,   nil,   nil,   143,   116,   nil,   116,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   321,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   332,   nil,   nil,   nil,   nil,   nil,   nil,   353,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   333,   nil,   nil,   nil,   nil,   nil,   nil,   354,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   362,   363,   353,
-   nil,   353,   353,   353,   373,   375,   377,   nil,   nil,   nil,
-   nil,   nil,   382,   nil,   353,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   394,   395,   353,   nil,   nil,
-   399,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   387,   nil,   390,   nil,   392,   nil,   nil,   nil,   396,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   353,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   416,   nil,   nil,   418,   419 ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   363,   364,
+   354,   nil,   354,   354,   354,   374,   376,   378,   nil,   nil,
+   nil,   nil,   nil,   383,   nil,   354,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   395,   396,   354,   nil,
+   nil,   400,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   388,   nil,   391,   nil,   393,   nil,   nil,   nil,
+   397,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   354,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   417,   nil,   nil,   419,   420 ]
 
 racc_goto_check = [
-     2,    20,    22,    16,    53,    60,    15,    35,    64,    76,
-    47,    51,    49,    65,    36,    25,    22,    61,    71,    20,
-    71,    45,    55,     3,     2,    66,    66,    25,    23,    19,
-    37,     1,    37,     4,    37,    19,     5,    19,     2,     2,
-    23,     6,    25,    45,    55,    18,    36,     2,    36,    36,
-    36,     3,     3,    17,    17,    21,    17,    24,    61,    27,
-    51,    36,    13,    13,    13,    34,    34,    34,    76,    28,
-    76,    76,    76,    25,    36,    72,    72,    71,    33,    25,
-    25,    38,    39,    66,    40,    15,    41,    43,    44,    46,
-     2,    50,    65,    54,    57,    58,    59,    63,    67,    77,
-   nil,    47,   nil,   nil,   nil,    76,    36,   nil,   nil,   nil,
+     2,    20,    22,    64,    53,    60,    15,    35,    16,    76,
+    36,    49,    47,    65,    51,    71,    22,    71,    61,    20,
+    66,    66,    25,     3,     2,    23,    45,    19,    55,    17,
+    17,     1,    17,    19,    25,    19,     4,    23,     2,     2,
+    72,    72,    36,     5,    36,    36,    36,     2,    45,    25,
+    55,     3,     3,     6,    37,    18,    37,    36,    37,    61,
+    13,    13,    13,    21,    51,    34,    34,    34,    24,    76,
+    36,    76,    76,    76,    71,    27,    28,    33,    66,    38,
+    25,    39,    40,    41,    43,    15,    25,    25,    44,    46,
+     2,    50,    54,    65,    57,    58,    59,    63,    67,    77,
+   nil,   nil,    36,    47,   nil,   nil,    76,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,     2,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    53,
-   nil,   nil,    35,    64,   nil,    22,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    64,    53,
+   nil,   nil,    35,   nil,   nil,    22,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,     2,     2,     2,     2,   nil,   nil,
-    49,   nil,    60,   nil,     2,     2,     2,   nil,     2,     2,
-     2,    49,   nil,   nil,    16,    16,     2,     2,   nil,     2,
-   nil,    60,   nil,   nil,     2,   nil,   nil,    22,    22,    22,
-   nil,   nil,   nil,   nil,   nil,     2,     2,     2,   nil,   nil,
-   nil,     2,   nil,   nil,   nil,   nil,     2,   nil,   nil,   nil,
+    49,   nil,   nil,    60,     2,     2,     2,   nil,     2,     2,
+     2,    49,   nil,   nil,   nil,   nil,     2,     2,   nil,     2,
+    16,    16,    60,   nil,     2,   nil,   nil,   nil,    22,    22,
+    22,   nil,   nil,   nil,   nil,   nil,     2,     2,     2,   nil,
+   nil,   nil,     2,   nil,   nil,   nil,   nil,     2,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    16,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    22,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    22,   nil,
-     2,    15,   nil,   nil,     2,    22,   nil,    22,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    20,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    16,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    22,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    22,
+   nil,     2,    15,   nil,   nil,     2,    22,   nil,    22,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    20,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    20,   nil,   nil,   nil,   nil,   nil,   nil,    53,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    20,   nil,   nil,   nil,   nil,   nil,   nil,    53,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,     2,     2,    53,
-   nil,    53,    53,    53,    35,    35,    35,   nil,   nil,   nil,
-   nil,   nil,    20,   nil,    53,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,    20,    20,    53,   nil,   nil,
-    35,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,     2,   nil,     2,   nil,     2,   nil,   nil,   nil,     2,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    53,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,     2,   nil,   nil,     2,     2 ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,     2,     2,
+    53,   nil,    53,    53,    53,    35,    35,    35,   nil,   nil,
+   nil,   nil,   nil,    20,   nil,    53,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,    20,    20,    53,   nil,
+   nil,    35,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,     2,   nil,     2,   nil,     2,   nil,   nil,   nil,
+     2,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    53,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,     2,   nil,   nil,     2,     2 ]
 
 racc_goto_pointer = [
-   nil,    31,    -2,    17,    30,    32,     7,   nil,   nil,   nil,
-   nil,   nil,   nil,  -112,   nil,   -28,   -45,  -194,  -215,  -239,
-   -24,  -207,   -32,  -235,  -233,  -248,   nil,  -220,  -210,   nil,
-   nil,   nil,   nil,  -201,  -259,   -23,  -309,  -344,  -140,  -182,
-  -195,  -236,   nil,  -280,  -295,  -377,    53,   -18,   nil,   -37,
-    40,  -149,   nil,   -26,  -168,  -239,   nil,  -178,   -25,   -81,
-   -48,   -29,   nil,    67,   -22,  -143,  -173,  -100,   nil,   nil,
-   nil,  -179,  -125,   nil,   nil,   nil,  -134,    68 ]
+   nil,    31,    -2,    17,    33,    39,    19,   nil,   nil,   nil,
+   nil,   nil,   nil,  -114,   nil,   -28,   -40,  -219,  -206,  -242,
+   -24,  -200,   -32,  -239,  -223,  -242,   nil,  -205,  -204,   nil,
+   nil,   nil,   nil,  -203,  -260,   -23,  -314,  -321,  -143,  -184,
+  -198,  -240,   nil,  -284,  -296,  -373,    53,   -16,   nil,   -38,
+    40,  -146,   nil,   -26,  -170,  -234,   nil,  -179,   -25,   -81,
+   -48,   -28,   nil,    67,   -27,  -143,  -179,  -101,   nil,   nil,
+   nil,  -183,  -161,   nil,   nil,   nil,  -134,    68 ]
 
 racc_goto_default = [
-   nil,   nil,    44,   nil,   nil,   412,   310,   107,   108,   109,
-   110,   111,   112,   nil,    36,   298,   115,   nil,   nil,   nil,
-   nil,   nil,    31,   nil,   277,    24,   300,   301,   302,   303,
-   304,   305,   306,   309,   nil,   144,   nil,   nil,   nil,   nil,
-   nil,   nil,   322,   nil,   nil,   nil,   nil,   nil,    51,   nil,
-   nil,    52,   346,   145,   nil,   nil,   272,   nil,   nil,   nil,
+   nil,   nil,    44,   nil,   nil,   413,   311,   107,   108,   109,
+   110,   111,   112,   nil,    36,   299,   115,   nil,   nil,   nil,
+   nil,   nil,    31,   nil,   278,    24,   301,   302,   303,   304,
+   305,   306,   307,   310,   nil,   144,   nil,   nil,   nil,   nil,
+   nil,   nil,   323,   nil,   nil,   nil,   nil,   nil,    51,   nil,
+   nil,    52,   347,   145,   nil,   nil,   273,   nil,   nil,   nil,
      7,   nil,    29,   nil,   nil,   158,   146,   147,   148,   149,
    150,   151,   152,   153,   154,   155,   nil,   nil ]
 
 racc_reduce_table = [
   0, 0, :racc_error,
-  3, 83, :_reduce_1,
-  3, 83, :_reduce_2,
-  3, 83, :_reduce_3,
-  0, 85, :_reduce_none,
+  3, 84, :_reduce_1,
+  3, 84, :_reduce_2,
+  3, 84, :_reduce_3,
+  0, 86, :_reduce_none,
+  1, 86, :_reduce_none,
+  0, 87, :_reduce_6,
+  2, 87, :_reduce_7,
+  1, 89, :_reduce_none,
+  1, 89, :_reduce_none,
+  1, 89, :_reduce_none,
+  1, 89, :_reduce_none,
+  1, 89, :_reduce_none,
+  1, 89, :_reduce_none,
+  0, 96, :_reduce_14,
+  0, 97, :_reduce_15,
+  0, 98, :_reduce_16,
+  2, 98, :_reduce_17,
+  8, 95, :_reduce_18,
+  0, 101, :_reduce_19,
+  2, 101, :_reduce_20,
+  5, 101, :_reduce_21,
+  8, 94, :_reduce_22,
+  8, 94, :_reduce_23,
+  0, 104, :_reduce_24,
+  2, 104, :_reduce_25,
+  1, 106, :_reduce_26,
+  3, 106, :_reduce_27,
+  4, 107, :_reduce_28,
+  1, 107, :_reduce_29,
+  0, 102, :_reduce_30,
+  2, 102, :_reduce_31,
+  1, 109, :_reduce_none,
+  1, 109, :_reduce_none,
+  1, 109, :_reduce_none,
+  1, 109, :_reduce_none,
+  1, 109, :_reduce_none,
+  1, 109, :_reduce_none,
+  1, 109, :_reduce_38,
+  1, 109, :_reduce_39,
+  1, 109, :_reduce_none,
+  1, 109, :_reduce_none,
+  0, 117, :_reduce_42,
+  2, 117, :_reduce_43,
+  5, 115, :_reduce_44,
+  7, 115, :_reduce_45,
+  5, 115, :_reduce_46,
+  7, 115, :_reduce_47,
+  5, 115, :_reduce_48,
+  7, 115, :_reduce_49,
+  0, 120, :_reduce_50,
+  2, 120, :_reduce_51,
+  3, 120, :_reduce_52,
+  3, 114, :_reduce_53,
+  3, 114, :_reduce_54,
+  5, 114, :_reduce_55,
+  7, 93, :_reduce_56,
+  0, 122, :_reduce_57,
+  2, 122, :_reduce_58,
+  1, 123, :_reduce_59,
+  1, 123, :_reduce_60,
+  1, 123, :_reduce_none,
+  3, 111, :_reduce_62,
+  6, 111, :_reduce_63,
+  3, 112, :_reduce_64,
+  6, 112, :_reduce_65,
+  3, 113, :_reduce_66,
+  6, 113, :_reduce_67,
+  0, 124, :_reduce_68,
+  1, 124, :_reduce_69,
+  7, 110, :_reduce_70,
+  0, 125, :_reduce_none,
+  2, 125, :_reduce_72,
+  0, 126, :_reduce_73,
+  2, 126, :_reduce_74,
+  2, 126, :_reduce_75,
+  1, 128, :_reduce_76,
+  1, 128, :_reduce_77,
+  3, 128, :_reduce_78,
+  3, 88, :_reduce_79,
+  0, 131, :_reduce_80,
+  3, 131, :_reduce_81,
+  3, 133, :_reduce_82,
+  4, 133, :_reduce_83,
+  1, 127, :_reduce_84,
+  2, 127, :_reduce_85,
+  1, 119, :_reduce_none,
+  1, 119, :_reduce_none,
+  1, 119, :_reduce_none,
+  1, 119, :_reduce_none,
+  1, 119, :_reduce_none,
+  1, 119, :_reduce_none,
+  1, 119, :_reduce_none,
+  1, 119, :_reduce_none,
+  1, 119, :_reduce_none,
+  2, 119, :_reduce_95,
+  2, 119, :_reduce_96,
+  1, 119, :_reduce_none,
+  1, 119, :_reduce_none,
+  1, 119, :_reduce_none,
+  1, 135, :_reduce_none,
+  1, 135, :_reduce_none,
+  1, 135, :_reduce_none,
+  1, 135, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  1, 136, :_reduce_none,
+  0, 100, :_reduce_137,
+  3, 100, :_reduce_138,
+  1, 137, :_reduce_139,
+  3, 137, :_reduce_140,
+  3, 138, :_reduce_141,
+  0, 140, :_reduce_142,
+  1, 140, :_reduce_143,
+  1, 140, :_reduce_144,
+  0, 139, :_reduce_145,
+  1, 139, :_reduce_146,
+  0, 129, :_reduce_147,
+  3, 129, :_reduce_148,
+  1, 141, :_reduce_149,
+  3, 141, :_reduce_150,
+  4, 116, :_reduce_151,
+  8, 116, :_reduce_152,
+  5, 90, :_reduce_153,
+  3, 91, :_reduce_154,
+  3, 91, :_reduce_155,
+  3, 92, :_reduce_156,
   1, 85, :_reduce_none,
-  0, 86, :_reduce_6,
-  2, 86, :_reduce_7,
-  1, 88, :_reduce_none,
-  1, 88, :_reduce_none,
-  1, 88, :_reduce_none,
-  1, 88, :_reduce_none,
-  1, 88, :_reduce_none,
-  1, 88, :_reduce_none,
-  0, 95, :_reduce_14,
-  0, 96, :_reduce_15,
-  0, 97, :_reduce_16,
-  2, 97, :_reduce_17,
-  8, 94, :_reduce_18,
-  0, 100, :_reduce_19,
-  2, 100, :_reduce_20,
-  5, 100, :_reduce_21,
-  8, 93, :_reduce_22,
-  8, 93, :_reduce_23,
-  0, 103, :_reduce_24,
-  2, 103, :_reduce_25,
-  1, 105, :_reduce_26,
-  3, 105, :_reduce_27,
-  4, 106, :_reduce_28,
-  1, 106, :_reduce_29,
-  0, 101, :_reduce_30,
-  2, 101, :_reduce_31,
-  1, 108, :_reduce_none,
-  1, 108, :_reduce_none,
-  1, 108, :_reduce_none,
-  1, 108, :_reduce_none,
-  1, 108, :_reduce_none,
-  1, 108, :_reduce_none,
-  1, 108, :_reduce_38,
-  1, 108, :_reduce_39,
-  1, 108, :_reduce_none,
-  1, 108, :_reduce_none,
-  0, 116, :_reduce_42,
-  2, 116, :_reduce_43,
-  5, 114, :_reduce_44,
-  7, 114, :_reduce_45,
-  5, 114, :_reduce_46,
-  7, 114, :_reduce_47,
-  5, 114, :_reduce_48,
-  7, 114, :_reduce_49,
-  0, 119, :_reduce_50,
-  2, 119, :_reduce_51,
-  3, 119, :_reduce_52,
-  3, 113, :_reduce_53,
-  3, 113, :_reduce_54,
-  5, 113, :_reduce_55,
-  7, 92, :_reduce_56,
-  0, 121, :_reduce_57,
-  2, 121, :_reduce_58,
-  1, 122, :_reduce_59,
-  1, 122, :_reduce_60,
-  1, 122, :_reduce_none,
-  3, 110, :_reduce_62,
-  6, 110, :_reduce_63,
-  3, 111, :_reduce_64,
-  6, 111, :_reduce_65,
-  3, 112, :_reduce_66,
-  6, 112, :_reduce_67,
-  0, 123, :_reduce_68,
-  1, 123, :_reduce_69,
-  7, 109, :_reduce_70,
-  0, 124, :_reduce_none,
-  2, 124, :_reduce_72,
-  0, 125, :_reduce_73,
-  2, 125, :_reduce_74,
-  2, 125, :_reduce_75,
-  1, 127, :_reduce_76,
-  1, 127, :_reduce_77,
-  3, 127, :_reduce_78,
-  3, 87, :_reduce_79,
-  0, 130, :_reduce_80,
-  3, 130, :_reduce_81,
-  3, 132, :_reduce_82,
-  4, 132, :_reduce_83,
-  1, 126, :_reduce_84,
-  2, 126, :_reduce_85,
-  1, 118, :_reduce_none,
-  1, 118, :_reduce_none,
-  1, 118, :_reduce_none,
-  1, 118, :_reduce_none,
-  1, 118, :_reduce_none,
-  1, 118, :_reduce_none,
-  1, 118, :_reduce_none,
-  1, 118, :_reduce_none,
+  3, 85, :_reduce_158,
+  3, 85, :_reduce_159,
+  1, 143, :_reduce_160,
+  1, 143, :_reduce_161,
+  1, 143, :_reduce_162,
+  1, 143, :_reduce_163,
+  1, 143, :_reduce_164,
+  1, 143, :_reduce_165,
+  1, 143, :_reduce_166,
+  1, 143, :_reduce_167,
+  1, 143, :_reduce_168,
+  1, 143, :_reduce_169,
+  1, 143, :_reduce_170,
+  1, 143, :_reduce_171,
+  1, 143, :_reduce_172,
+  1, 143, :_reduce_173,
+  1, 143, :_reduce_174,
+  1, 143, :_reduce_175,
+  1, 143, :_reduce_176,
+  4, 143, :_reduce_177,
+  2, 143, :_reduce_178,
+  4, 143, :_reduce_179,
+  3, 143, :_reduce_180,
+  4, 143, :_reduce_181,
+  2, 143, :_reduce_182,
+  2, 143, :_reduce_183,
+  1, 143, :_reduce_none,
+  1, 103, :_reduce_185,
+  3, 103, :_reduce_186,
+  4, 145, :_reduce_187,
+  1, 146, :_reduce_188,
+  3, 146, :_reduce_189,
+  3, 147, :_reduce_190,
+  3, 147, :_reduce_191,
+  3, 147, :_reduce_192,
+  2, 147, :_reduce_193,
+  3, 147, :_reduce_194,
+  3, 147, :_reduce_195,
+  3, 147, :_reduce_196,
+  1, 148, :_reduce_none,
+  2, 148, :_reduce_198,
   1, 118, :_reduce_none,
-  2, 118, :_reduce_95,
-  2, 118, :_reduce_96,
   1, 118, :_reduce_none,
   1, 118, :_reduce_none,
   1, 118, :_reduce_none,
-  1, 134, :_reduce_none,
-  1, 134, :_reduce_none,
-  1, 134, :_reduce_none,
-  1, 134, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  1, 135, :_reduce_none,
-  0, 99, :_reduce_137,
-  3, 99, :_reduce_138,
-  1, 136, :_reduce_139,
-  3, 136, :_reduce_140,
-  3, 137, :_reduce_141,
-  0, 139, :_reduce_142,
-  1, 139, :_reduce_143,
-  1, 139, :_reduce_144,
-  0, 138, :_reduce_145,
-  1, 138, :_reduce_146,
-  0, 128, :_reduce_147,
-  3, 128, :_reduce_148,
-  1, 140, :_reduce_149,
-  3, 140, :_reduce_150,
-  4, 115, :_reduce_151,
-  8, 115, :_reduce_152,
-  5, 89, :_reduce_153,
-  3, 90, :_reduce_154,
-  3, 90, :_reduce_155,
-  3, 91, :_reduce_156,
-  1, 84, :_reduce_none,
-  3, 84, :_reduce_158,
-  3, 84, :_reduce_159,
-  1, 142, :_reduce_160,
-  1, 142, :_reduce_161,
-  1, 142, :_reduce_162,
-  1, 142, :_reduce_163,
-  1, 142, :_reduce_164,
-  1, 142, :_reduce_165,
-  1, 142, :_reduce_166,
-  1, 142, :_reduce_167,
-  1, 142, :_reduce_168,
-  1, 142, :_reduce_169,
-  1, 142, :_reduce_170,
-  1, 142, :_reduce_171,
-  1, 142, :_reduce_172,
-  1, 142, :_reduce_173,
-  1, 142, :_reduce_174,
-  1, 142, :_reduce_175,
-  1, 142, :_reduce_176,
-  4, 142, :_reduce_177,
-  2, 142, :_reduce_178,
-  4, 142, :_reduce_179,
-  3, 142, :_reduce_180,
-  4, 142, :_reduce_181,
-  2, 142, :_reduce_182,
-  2, 142, :_reduce_183,
-  1, 142, :_reduce_none,
-  1, 102, :_reduce_185,
-  3, 102, :_reduce_186,
-  4, 144, :_reduce_187,
-  1, 145, :_reduce_188,
-  3, 145, :_reduce_189,
-  3, 146, :_reduce_190,
-  3, 146, :_reduce_191,
-  3, 146, :_reduce_192,
-  2, 146, :_reduce_193,
-  3, 146, :_reduce_194,
-  3, 146, :_reduce_195,
-  3, 146, :_reduce_196,
-  1, 147, :_reduce_none,
-  2, 147, :_reduce_198,
-  1, 117, :_reduce_none,
-  1, 117, :_reduce_none,
-  1, 117, :_reduce_none,
-  1, 117, :_reduce_none,
-  4, 129, :_reduce_203,
-  1, 129, :_reduce_204,
-  5, 133, :_reduce_205,
-  2, 133, :_reduce_206,
-  3, 131, :_reduce_207,
-  1, 131, :_reduce_208,
-  1, 131, :_reduce_none,
-  3, 149, :_reduce_210,
-  1, 149, :_reduce_211,
-  1, 149, :_reduce_none,
-  3, 151, :_reduce_213,
-  1, 151, :_reduce_214,
-  1, 151, :_reduce_none,
-  3, 153, :_reduce_216,
-  1, 153, :_reduce_217,
-  1, 153, :_reduce_none,
-  0, 154, :_reduce_219,
-  3, 154, :_reduce_220,
-  1, 154, :_reduce_221,
-  3, 154, :_reduce_222,
-  1, 154, :_reduce_223,
-  1, 154, :_reduce_224,
-  2, 148, :_reduce_225,
-  3, 150, :_reduce_226,
-  3, 152, :_reduce_227,
-  3, 155, :_reduce_228,
-  4, 156, :_reduce_229,
-  3, 157, :_reduce_230,
-  0, 158, :_reduce_none,
-  1, 158, :_reduce_none,
-  1, 158, :_reduce_none,
-  1, 158, :_reduce_none,
-  1, 158, :_reduce_none,
-  2, 107, :_reduce_236,
+  4, 130, :_reduce_203,
+  1, 130, :_reduce_204,
+  5, 134, :_reduce_205,
+  2, 134, :_reduce_206,
+  3, 132, :_reduce_207,
+  1, 132, :_reduce_208,
+  1, 132, :_reduce_none,
+  3, 150, :_reduce_210,
+  1, 150, :_reduce_211,
+  1, 150, :_reduce_none,
+  3, 152, :_reduce_213,
+  1, 152, :_reduce_214,
+  1, 152, :_reduce_none,
+  3, 154, :_reduce_216,
+  1, 154, :_reduce_217,
+  1, 154, :_reduce_none,
+  0, 155, :_reduce_219,
+  3, 155, :_reduce_220,
+  1, 155, :_reduce_221,
+  3, 155, :_reduce_222,
+  1, 155, :_reduce_223,
+  1, 155, :_reduce_224,
+  2, 149, :_reduce_225,
+  3, 151, :_reduce_226,
+  3, 153, :_reduce_227,
+  3, 156, :_reduce_228,
+  4, 157, :_reduce_229,
+  3, 158, :_reduce_230,
+  0, 159, :_reduce_none,
   1, 159, :_reduce_none,
   1, 159, :_reduce_none,
   1, 159, :_reduce_none,
-  2, 120, :_reduce_240,
-  2, 98, :_reduce_241,
-  2, 141, :_reduce_242,
-  0, 104, :_reduce_243,
-  1, 104, :_reduce_244,
-  2, 104, :_reduce_245,
-  1, 104, :_reduce_246,
-  1, 143, :_reduce_none,
-  0, 143, :_reduce_none ]
-
-racc_reduce_n = 249
-
-racc_shift_n = 423
+  1, 159, :_reduce_none,
+  1, 159, :_reduce_none,
+  2, 108, :_reduce_237,
+  1, 160, :_reduce_none,
+  1, 160, :_reduce_none,
+  1, 160, :_reduce_none,
+  2, 121, :_reduce_241,
+  2, 99, :_reduce_242,
+  2, 142, :_reduce_243,
+  0, 105, :_reduce_244,
+  1, 105, :_reduce_245,
+  2, 105, :_reduce_246,
+  1, 105, :_reduce_247,
+  1, 144, :_reduce_none,
+  0, 144, :_reduce_none ]
+
+racc_reduce_n = 250
+
+racc_shift_n = 424
 
 racc_token_table = {
   false => 0,
@@ -1224,9 +1227,10 @@ def initialize(input:, location:)
   :kOUT => 78,
   :kIN => 79,
   :kUNCHECKED => 80,
-  :kOVERLOAD => 81 }
+  :kOVERLOAD => 81,
+  :kUNDERSCORE => 82 }
 
-racc_nt_base = 82
+racc_nt_base = 83
 
 racc_use_result_var = true
 
@@ -1329,6 +1333,7 @@ def initialize(input:, location:)
   "kIN",
   "kUNCHECKED",
   "kOVERLOAD",
+  "kUNDERSCORE",
   "$start",
   "target",
   "type",
@@ -1414,7 +1419,7 @@ def initialize(input:, location:)
 
 # reduce 0 omitted
 
-module_eval(<<'.,.,', 'parser.y', 28)
+module_eval(<<'.,.,', 'parser.y', 29)
   def _reduce_1(val, _values, result)
             result = val[1]
 
@@ -1422,7 +1427,7 @@ def _reduce_1(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 31)
+module_eval(<<'.,.,', 'parser.y', 32)
   def _reduce_2(val, _values, result)
             result = val[1]
 
@@ -1430,7 +1435,7 @@ def _reduce_2(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 34)
+module_eval(<<'.,.,', 'parser.y', 35)
   def _reduce_3(val, _values, result)
             result = val[1]
 
@@ -1442,14 +1447,14 @@ def _reduce_3(val, _values, result)
 
 # reduce 5 omitted
 
-module_eval(<<'.,.,', 'parser.y', 40)
+module_eval(<<'.,.,', 'parser.y', 41)
   def _reduce_6(val, _values, result)
      result = []
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 42)
+module_eval(<<'.,.,', 'parser.y', 43)
   def _reduce_7(val, _values, result)
             result = val[0].push(val[1])
 
@@ -1469,28 +1474,28 @@ def _reduce_7(val, _values, result)
 
 # reduce 13 omitted
 
-module_eval(<<'.,.,', 'parser.y', 53)
+module_eval(<<'.,.,', 'parser.y', 54)
   def _reduce_14(val, _values, result)
      start_new_variables_scope
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 54)
+module_eval(<<'.,.,', 'parser.y', 55)
   def _reduce_15(val, _values, result)
      start_merged_variables_scope
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 57)
+module_eval(<<'.,.,', 'parser.y', 58)
   def _reduce_16(val, _values, result)
      result = []
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 59)
+module_eval(<<'.,.,', 'parser.y', 60)
   def _reduce_17(val, _values, result)
             result = val[1].unshift(Annotation.new(string: val[0].value, location: val[0].location))
 
@@ -1498,7 +1503,7 @@ def _reduce_17(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 64)
+module_eval(<<'.,.,', 'parser.y', 65)
   def _reduce_18(val, _values, result)
             reset_variable_scope
 
@@ -1528,14 +1533,14 @@ def _reduce_18(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 90)
+module_eval(<<'.,.,', 'parser.y', 91)
   def _reduce_19(val, _values, result)
      result = nil
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 92)
+module_eval(<<'.,.,', 'parser.y', 93)
   def _reduce_20(val, _values, result)
             loc = val[1].location.with_children(
           required: { name: val[1].location },
@@ -1548,7 +1553,7 @@ def _reduce_20(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 100)
+module_eval(<<'.,.,', 'parser.y', 101)
   def _reduce_21(val, _values, result)
             loc = (val[1].location + val[4].location).with_children(
           required: { name: val[1].location },
@@ -1561,7 +1566,7 @@ def _reduce_21(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 110)
+module_eval(<<'.,.,', 'parser.y', 111)
   def _reduce_22(val, _values, result)
             reset_variable_scope
 
@@ -1604,7 +1609,7 @@ def _reduce_22(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 148)
+module_eval(<<'.,.,', 'parser.y', 149)
   def _reduce_23(val, _values, result)
             reset_variable_scope
 
@@ -1637,14 +1642,14 @@ def _reduce_23(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 177)
+module_eval(<<'.,.,', 'parser.y', 178)
   def _reduce_24(val, _values, result)
      result = LocatedValue.new(value: [], location: nil)
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 179)
+module_eval(<<'.,.,', 'parser.y', 180)
   def _reduce_25(val, _values, result)
             result = LocatedValue.new(value: val[1], location: val[0].location)
 
@@ -1652,7 +1657,7 @@ def _reduce_25(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 184)
+module_eval(<<'.,.,', 'parser.y', 185)
   def _reduce_26(val, _values, result)
             result = [val[0]]
 
@@ -1660,7 +1665,7 @@ def _reduce_26(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 187)
+module_eval(<<'.,.,', 'parser.y', 188)
   def _reduce_27(val, _values, result)
             result = val[0].push(val[2])
 
@@ -1668,7 +1673,7 @@ def _reduce_27(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 192)
+module_eval(<<'.,.,', 'parser.y', 193)
   def _reduce_28(val, _values, result)
             name = val[0].value
         args = val[2]
@@ -1691,7 +1696,7 @@ def _reduce_28(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 210)
+module_eval(<<'.,.,', 'parser.y', 211)
   def _reduce_29(val, _values, result)
             name = val[0].value
         args = []
@@ -1713,14 +1718,14 @@ def _reduce_29(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 228)
+module_eval(<<'.,.,', 'parser.y', 229)
   def _reduce_30(val, _values, result)
      result = []
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 230)
+module_eval(<<'.,.,', 'parser.y', 231)
   def _reduce_31(val, _values, result)
             result = val[0].push(val[1])
 
@@ -1740,7 +1745,7 @@ def _reduce_31(val, _values, result)
 
 # reduce 37 omitted
 
-module_eval(<<'.,.,', 'parser.y', 241)
+module_eval(<<'.,.,', 'parser.y', 242)
   def _reduce_38(val, _values, result)
             result = Members::Public.new(location: val[0].location)
 
@@ -1748,7 +1753,7 @@ def _reduce_38(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 244)
+module_eval(<<'.,.,', 'parser.y', 245)
   def _reduce_39(val, _values, result)
             result = Members::Private.new(location: val[0].location)
 
@@ -1760,21 +1765,21 @@ def _reduce_39(val, _values, result)
 
 # reduce 41 omitted
 
-module_eval(<<'.,.,', 'parser.y', 250)
+module_eval(<<'.,.,', 'parser.y', 251)
   def _reduce_42(val, _values, result)
      result = LocatedValue.new(value: :instance, location: nil)
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 251)
+module_eval(<<'.,.,', 'parser.y', 252)
   def _reduce_43(val, _values, result)
      result = LocatedValue.new(value: :singleton, location: val[0].location + val[1].location)
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 255)
+module_eval(<<'.,.,', 'parser.y', 256)
   def _reduce_44(val, _values, result)
             location = val[1].location + val[4].location
         name_loc, colon_loc = split_kw_loc(val[3].location)
@@ -1794,7 +1799,7 @@ def _reduce_44(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 270)
+module_eval(<<'.,.,', 'parser.y', 271)
   def _reduce_45(val, _values, result)
             location = val[1].location + val[6].location
         ivar_loc = val[4]&.location
@@ -1825,7 +1830,7 @@ def _reduce_45(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 296)
+module_eval(<<'.,.,', 'parser.y', 297)
   def _reduce_46(val, _values, result)
             location = val[1].location + val[4].location
         name_loc, colon_loc = split_kw_loc(val[3].location)
@@ -1845,7 +1850,7 @@ def _reduce_46(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 311)
+module_eval(<<'.,.,', 'parser.y', 312)
   def _reduce_47(val, _values, result)
             location = val[1].location + val[6].location
         ivar_loc = val[4]&.location
@@ -1877,7 +1882,7 @@ def _reduce_47(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 338)
+module_eval(<<'.,.,', 'parser.y', 339)
   def _reduce_48(val, _values, result)
             location = val[1].location + val[4].location
         name_loc, colon_loc = split_kw_loc(val[3].location)
@@ -1898,7 +1903,7 @@ def _reduce_48(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 354)
+module_eval(<<'.,.,', 'parser.y', 355)
   def _reduce_49(val, _values, result)
             location = val[1].location + val[6].location
         ivar_loc = val[4]&.location
@@ -1930,21 +1935,21 @@ def _reduce_49(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 382)
+module_eval(<<'.,.,', 'parser.y', 383)
   def _reduce_50(val, _values, result)
      result = nil
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 383)
+module_eval(<<'.,.,', 'parser.y', 384)
   def _reduce_51(val, _values, result)
      result = LocatedValue.new(value: false, location: val[0].location + val[1].location)
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 385)
+module_eval(<<'.,.,', 'parser.y', 386)
   def _reduce_52(val, _values, result)
             result = LocatedValue.new(
           value: val[1],
@@ -1955,7 +1960,7 @@ def _reduce_52(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 393)
+module_eval(<<'.,.,', 'parser.y', 394)
   def _reduce_53(val, _values, result)
             location = (val[0].location + val[2].location).with_children(
           required: { name: val[0].location, colon: val[1].location },
@@ -1973,7 +1978,7 @@ def _reduce_53(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 406)
+module_eval(<<'.,.,', 'parser.y', 407)
   def _reduce_54(val, _values, result)
             type = val[2]
 
@@ -2001,7 +2006,7 @@ def _reduce_54(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 429)
+module_eval(<<'.,.,', 'parser.y', 430)
   def _reduce_55(val, _values, result)
           type = val[4]
 
@@ -2029,7 +2034,7 @@ def _reduce_55(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 454)
+module_eval(<<'.,.,', 'parser.y', 455)
   def _reduce_56(val, _values, result)
             reset_variable_scope
 
@@ -2051,14 +2056,14 @@ def _reduce_56(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 472)
+module_eval(<<'.,.,', 'parser.y', 473)
   def _reduce_57(val, _values, result)
      result = []
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 474)
+module_eval(<<'.,.,', 'parser.y', 475)
   def _reduce_58(val, _values, result)
             result = val[0].push(val[1])
 
@@ -2066,7 +2071,7 @@ def _reduce_58(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 479)
+module_eval(<<'.,.,', 'parser.y', 480)
   def _reduce_59(val, _values, result)
             unless val[0].kind == :instance
           raise SemanticsError.new("Interface cannot have singleton method", subject: val[0], location: val[0].location)
@@ -2082,7 +2087,7 @@ def _reduce_59(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 490)
+module_eval(<<'.,.,', 'parser.y', 491)
   def _reduce_60(val, _values, result)
             unless val[0].name.interface?
           raise SemanticsError.new("Interface should include an interface", subject: val[0], location: val[0].location)
@@ -2096,7 +2101,7 @@ def _reduce_60(val, _values, result)
 
 # reduce 61 omitted
 
-module_eval(<<'.,.,', 'parser.y', 500)
+module_eval(<<'.,.,', 'parser.y', 501)
   def _reduce_62(val, _values, result)
             if val[2].value.alias?
           raise SemanticsError.new("Should include module or interface", subject: val[2].value, location: val[2].location)
@@ -2117,7 +2122,7 @@ def _reduce_62(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 516)
+module_eval(<<'.,.,', 'parser.y', 517)
   def _reduce_63(val, _values, result)
             if val[2].value.alias?
           raise SemanticsError.new("Should include module or interface", subject: val[2].value, location: val[2].location)
@@ -2138,7 +2143,7 @@ def _reduce_63(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 534)
+module_eval(<<'.,.,', 'parser.y', 535)
   def _reduce_64(val, _values, result)
             if val[2].value.alias?
           raise SemanticsError.new("Should extend module or interface", subject: val[2].value, location: val[2].location)
@@ -2159,7 +2164,7 @@ def _reduce_64(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 550)
+module_eval(<<'.,.,', 'parser.y', 551)
   def _reduce_65(val, _values, result)
             if val[2].value.alias?
           raise SemanticsError.new("Should extend module or interface", subject: val[2].value, location: val[2].location)
@@ -2180,7 +2185,7 @@ def _reduce_65(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 568)
+module_eval(<<'.,.,', 'parser.y', 569)
   def _reduce_66(val, _values, result)
             unless val[2].value.class?
           raise SemanticsError.new("Should prepend module", subject: val[2].value, location: val[2].location)
@@ -2201,7 +2206,7 @@ def _reduce_66(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 584)
+module_eval(<<'.,.,', 'parser.y', 585)
   def _reduce_67(val, _values, result)
             unless val[2].value.class?
           raise SemanticsError.new("Should prepend module", subject: val[2].value, location: val[2].location)
@@ -2222,14 +2227,14 @@ def _reduce_67(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 601)
+module_eval(<<'.,.,', 'parser.y', 602)
   def _reduce_68(val, _values, result)
      result = nil
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 603)
+module_eval(<<'.,.,', 'parser.y', 604)
   def _reduce_69(val, _values, result)
             RBS.logger.warn "`overload def` syntax is deprecated. Use `...` syntax instead."
         result = val[0]
@@ -2238,7 +2243,7 @@ def _reduce_69(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 609)
+module_eval(<<'.,.,', 'parser.y', 610)
   def _reduce_70(val, _values, result)
             location = val[3].location + val[6].last.location
 
@@ -2277,7 +2282,7 @@ def _reduce_70(val, _values, result)
 
 # reduce 71 omitted
 
-module_eval(<<'.,.,', 'parser.y', 643)
+module_eval(<<'.,.,', 'parser.y', 644)
   def _reduce_72(val, _values, result)
             RBS.logger.warn "`incompatible` method attribute is deprecated and ignored."
 
@@ -2285,42 +2290,42 @@ def _reduce_72(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 647)
+module_eval(<<'.,.,', 'parser.y', 648)
   def _reduce_73(val, _values, result)
      result = nil
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 648)
+module_eval(<<'.,.,', 'parser.y', 649)
   def _reduce_74(val, _values, result)
      result = LocatedValue.new(value: :singleton, location: val[0].location + val[1].location)
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 649)
+module_eval(<<'.,.,', 'parser.y', 650)
   def _reduce_75(val, _values, result)
      result = LocatedValue.new(value: :singleton_instance, location: val[0].location + val[1].location)
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 652)
+module_eval(<<'.,.,', 'parser.y', 653)
   def _reduce_76(val, _values, result)
      result = [val[0]]
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 653)
+module_eval(<<'.,.,', 'parser.y', 654)
   def _reduce_77(val, _values, result)
      result = [LocatedValue.new(value: :dot3, location: val[0].location)]
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 655)
+module_eval(<<'.,.,', 'parser.y', 656)
   def _reduce_78(val, _values, result)
             result = val[2].unshift(val[0])
 
@@ -2328,7 +2333,7 @@ def _reduce_78(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 660)
+module_eval(<<'.,.,', 'parser.y', 661)
   def _reduce_79(val, _values, result)
             reset_variable_scope
 
@@ -2346,14 +2351,14 @@ def _reduce_79(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 674)
+module_eval(<<'.,.,', 'parser.y', 675)
   def _reduce_80(val, _values, result)
      result = nil
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 676)
+module_eval(<<'.,.,', 'parser.y', 677)
   def _reduce_81(val, _values, result)
             result = LocatedValue.new(value: val[1], location: val[0].location + val[2].location)
 
@@ -2361,7 +2366,7 @@ def _reduce_81(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 681)
+module_eval(<<'.,.,', 'parser.y', 682)
   def _reduce_82(val, _values, result)
             block = Types::Block.new(type: val[1].value, required: true)
         result = LocatedValue.new(value: block, location: val[0].location + val[2].location)
@@ -2370,7 +2375,7 @@ def _reduce_82(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 685)
+module_eval(<<'.,.,', 'parser.y', 686)
   def _reduce_83(val, _values, result)
             block = Types::Block.new(type: val[2].value, required: false)
         result = LocatedValue.new(value: block, location: val[0].location + val[3].location)
@@ -2379,7 +2384,7 @@ def _reduce_83(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 691)
+module_eval(<<'.,.,', 'parser.y', 692)
   def _reduce_84(val, _values, result)
             loc = val[0].location
 
@@ -2392,7 +2397,7 @@ def _reduce_84(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 699)
+module_eval(<<'.,.,', 'parser.y', 700)
   def _reduce_85(val, _values, result)
             result = LocatedValue.new(value: val[0].value.to_sym,
                                   location: val[0].location + val[1].location)
@@ -2419,7 +2424,7 @@ def _reduce_85(val, _values, result)
 
 # reduce 94 omitted
 
-module_eval(<<'.,.,', 'parser.y', 708)
+module_eval(<<'.,.,', 'parser.y', 709)
   def _reduce_95(val, _values, result)
             unless val[0].location.pred?(val[1].location)
           raise SyntaxError.new(token_str: "kQUESTION", error_value: val[1])
@@ -2432,7 +2437,7 @@ def _reduce_95(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 716)
+module_eval(<<'.,.,', 'parser.y', 717)
   def _reduce_96(val, _values, result)
             unless val[0].location.pred?(val[1].location)
           raise SyntaxError.new(token_str: "kEXCLAMATION", error_value: val[1])
@@ -2525,14 +2530,14 @@ def _reduce_96(val, _values, result)
 
 # reduce 136 omitted
 
-module_eval(<<'.,.,', 'parser.y', 736)
+module_eval(<<'.,.,', 'parser.y', 737)
   def _reduce_137(val, _values, result)
      result = nil
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 738)
+module_eval(<<'.,.,', 'parser.y', 739)
   def _reduce_138(val, _values, result)
             val[1].each {|p| insert_bound_variable(p.name) }
 
@@ -2542,7 +2547,7 @@ def _reduce_138(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 745)
+module_eval(<<'.,.,', 'parser.y', 746)
   def _reduce_139(val, _values, result)
             result = Declarations::ModuleTypeParams.new()
         result.add(val[0])
@@ -2551,7 +2556,7 @@ def _reduce_139(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 749)
+module_eval(<<'.,.,', 'parser.y', 750)
   def _reduce_140(val, _values, result)
             result = val[0].add(val[2])
 
@@ -2559,7 +2564,7 @@ def _reduce_140(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 754)
+module_eval(<<'.,.,', 'parser.y', 755)
   def _reduce_141(val, _values, result)
             loc = case
               when l0 = val[0].location
@@ -2584,49 +2589,49 @@ def _reduce_141(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 775)
+module_eval(<<'.,.,', 'parser.y', 776)
   def _reduce_142(val, _values, result)
      result = LocatedValue.new(value: :invariant, location: nil)
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 776)
+module_eval(<<'.,.,', 'parser.y', 777)
   def _reduce_143(val, _values, result)
      result = LocatedValue.new(value: :covariant, location: val[0].location)
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 777)
+module_eval(<<'.,.,', 'parser.y', 778)
   def _reduce_144(val, _values, result)
      result = LocatedValue.new(value: :contravariant, location: val[0].location)
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 780)
+module_eval(<<'.,.,', 'parser.y', 781)
   def _reduce_145(val, _values, result)
      result = LocatedValue.new(value: false, location: nil)
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 781)
+module_eval(<<'.,.,', 'parser.y', 782)
   def _reduce_146(val, _values, result)
      result = LocatedValue.new(value: true, location: val[0].location)
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 784)
+module_eval(<<'.,.,', 'parser.y', 785)
   def _reduce_147(val, _values, result)
      result = nil
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 786)
+module_eval(<<'.,.,', 'parser.y', 787)
   def _reduce_148(val, _values, result)
             val[1].each {|var| insert_bound_variable(var) }
 
@@ -2637,7 +2642,7 @@ def _reduce_148(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 794)
+module_eval(<<'.,.,', 'parser.y', 795)
   def _reduce_149(val, _values, result)
             result = [val[0].value.to_sym]
 
@@ -2645,7 +2650,7 @@ def _reduce_149(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 797)
+module_eval(<<'.,.,', 'parser.y', 798)
   def _reduce_150(val, _values, result)
             result = val[0].push(val[2].value.to_sym)
 
@@ -2653,7 +2658,7 @@ def _reduce_150(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 802)
+module_eval(<<'.,.,', 'parser.y', 803)
   def _reduce_151(val, _values, result)
             location = val[1].location + val[3].location
         location = location.with_children(
@@ -2673,7 +2678,7 @@ def _reduce_151(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 817)
+module_eval(<<'.,.,', 'parser.y', 818)
   def _reduce_152(val, _values, result)
             location = val[1].location + val[7].location
         location = location.with_children(
@@ -2696,7 +2701,7 @@ def _reduce_152(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 837)
+module_eval(<<'.,.,', 'parser.y', 838)
   def _reduce_153(val, _values, result)
             location = val[1].location + val[4].location
         location = location.with_children(
@@ -2714,7 +2719,7 @@ def _reduce_153(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 852)
+module_eval(<<'.,.,', 'parser.y', 853)
   def _reduce_154(val, _values, result)
             location = val[0].location + val[2].location
         location = location.with_children(
@@ -2729,7 +2734,7 @@ def _reduce_154(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 862)
+module_eval(<<'.,.,', 'parser.y', 863)
   def _reduce_155(val, _values, result)
             location = (val[0] || val[1]).location + val[2].location
 
@@ -2749,7 +2754,7 @@ def _reduce_155(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 879)
+module_eval(<<'.,.,', 'parser.y', 880)
   def _reduce_156(val, _values, result)
             location = val[0].location + val[2].location
         location = location.with_children(
@@ -2766,7 +2771,7 @@ def _reduce_156(val, _values, result)
 
 # reduce 157 omitted
 
-module_eval(<<'.,.,', 'parser.y', 892)
+module_eval(<<'.,.,', 'parser.y', 893)
   def _reduce_158(val, _values, result)
             types = case l = val[0]
                 when Types::Union
@@ -2781,7 +2786,7 @@ def _reduce_158(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 902)
+module_eval(<<'.,.,', 'parser.y', 903)
   def _reduce_159(val, _values, result)
             types = case l = val[0]
                 when Types::Intersection
@@ -2797,7 +2802,7 @@ def _reduce_159(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 915)
+module_eval(<<'.,.,', 'parser.y', 916)
   def _reduce_160(val, _values, result)
             result = Types::Bases::Void.new(location: val[0].location)
 
@@ -2805,7 +2810,7 @@ def _reduce_160(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 918)
+module_eval(<<'.,.,', 'parser.y', 919)
   def _reduce_161(val, _values, result)
             RBS.logger.warn "`any` type is deprecated. Use `untyped` instead. (#{val[0].location.to_s})"
         result = Types::Bases::Any.new(location: val[0].location)
@@ -2814,7 +2819,7 @@ def _reduce_161(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 922)
+module_eval(<<'.,.,', 'parser.y', 923)
   def _reduce_162(val, _values, result)
             result = Types::Bases::Any.new(location: val[0].location)
 
@@ -2822,7 +2827,7 @@ def _reduce_162(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 925)
+module_eval(<<'.,.,', 'parser.y', 926)
   def _reduce_163(val, _values, result)
             result = Types::Bases::Bool.new(location: val[0].location)
 
@@ -2830,7 +2835,7 @@ def _reduce_163(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 928)
+module_eval(<<'.,.,', 'parser.y', 929)
   def _reduce_164(val, _values, result)
             result = Types::Bases::Nil.new(location: val[0].location)
 
@@ -2838,7 +2843,7 @@ def _reduce_164(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 931)
+module_eval(<<'.,.,', 'parser.y', 932)
   def _reduce_165(val, _values, result)
             result = Types::Bases::Top.new(location: val[0].location)
 
@@ -2846,7 +2851,7 @@ def _reduce_165(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 934)
+module_eval(<<'.,.,', 'parser.y', 935)
   def _reduce_166(val, _values, result)
             result = Types::Bases::Bottom.new(location: val[0].location)
 
@@ -2854,7 +2859,7 @@ def _reduce_166(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 937)
+module_eval(<<'.,.,', 'parser.y', 938)
   def _reduce_167(val, _values, result)
             result = Types::Bases::Self.new(location: val[0].location)
 
@@ -2862,7 +2867,7 @@ def _reduce_167(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 940)
+module_eval(<<'.,.,', 'parser.y', 941)
   def _reduce_168(val, _values, result)
             result = Types::Optional.new(type: Types::Bases::Self.new(location: val[0].location),
                                      location: val[0].location)
@@ -2871,7 +2876,7 @@ def _reduce_168(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 944)
+module_eval(<<'.,.,', 'parser.y', 945)
   def _reduce_169(val, _values, result)
             result = Types::Bases::Instance.new(location: val[0].location)
 
@@ -2879,7 +2884,7 @@ def _reduce_169(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 947)
+module_eval(<<'.,.,', 'parser.y', 948)
   def _reduce_170(val, _values, result)
             result = Types::Bases::Class.new(location: val[0].location)
 
@@ -2887,7 +2892,7 @@ def _reduce_170(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 950)
+module_eval(<<'.,.,', 'parser.y', 951)
   def _reduce_171(val, _values, result)
             result = Types::Literal.new(literal: true, location: val[0].location)
 
@@ -2895,7 +2900,7 @@ def _reduce_171(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 953)
+module_eval(<<'.,.,', 'parser.y', 954)
   def _reduce_172(val, _values, result)
             result = Types::Literal.new(literal: false, location: val[0].location)
 
@@ -2903,7 +2908,7 @@ def _reduce_172(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 956)
+module_eval(<<'.,.,', 'parser.y', 957)
   def _reduce_173(val, _values, result)
             result = Types::Literal.new(literal: val[0].value, location: val[0].location)
 
@@ -2911,7 +2916,7 @@ def _reduce_173(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 959)
+module_eval(<<'.,.,', 'parser.y', 960)
   def _reduce_174(val, _values, result)
             result = Types::Literal.new(literal: val[0].value, location: val[0].location)
 
@@ -2919,7 +2924,7 @@ def _reduce_174(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 962)
+module_eval(<<'.,.,', 'parser.y', 963)
   def _reduce_175(val, _values, result)
             result = Types::Literal.new(literal: val[0].value, location: val[0].location)
 
@@ -2927,7 +2932,7 @@ def _reduce_175(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 965)
+module_eval(<<'.,.,', 'parser.y', 966)
   def _reduce_176(val, _values, result)
             name = val[0].value
         args = []
@@ -2962,7 +2967,7 @@ def _reduce_176(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 995)
+module_eval(<<'.,.,', 'parser.y', 996)
   def _reduce_177(val, _values, result)
             name = val[0].value
         args = val[2]
@@ -2992,7 +2997,7 @@ def _reduce_177(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1020)
+module_eval(<<'.,.,', 'parser.y', 1021)
   def _reduce_178(val, _values, result)
             location = val[0].location + val[1].location
         result = Types::Tuple.new(types: [], location: location)
@@ -3001,7 +3006,7 @@ def _reduce_178(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1024)
+module_eval(<<'.,.,', 'parser.y', 1025)
   def _reduce_179(val, _values, result)
             location = val[0].location + val[3].location
         types = val[1]
@@ -3011,7 +3016,7 @@ def _reduce_179(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1029)
+module_eval(<<'.,.,', 'parser.y', 1030)
   def _reduce_180(val, _values, result)
             type = val[1].dup
         type.instance_eval do
@@ -3023,7 +3028,7 @@ def _reduce_180(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1036)
+module_eval(<<'.,.,', 'parser.y', 1037)
   def _reduce_181(val, _values, result)
             location = val[0].location + val[3].location
         location = location.with_children(
@@ -3035,7 +3040,7 @@ def _reduce_181(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1043)
+module_eval(<<'.,.,', 'parser.y', 1044)
   def _reduce_182(val, _values, result)
             type, block = val[1].value
         result = Types::Proc.new(type: type, block: block, location: val[0].location + val[1].location)
@@ -3044,7 +3049,7 @@ def _reduce_182(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1047)
+module_eval(<<'.,.,', 'parser.y', 1048)
   def _reduce_183(val, _values, result)
             result = Types::Optional.new(type: val[0], location: val[0].location + val[1].location)
 
@@ -3054,7 +3059,7 @@ def _reduce_183(val, _values, result)
 
 # reduce 184 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1053)
+module_eval(<<'.,.,', 'parser.y', 1054)
   def _reduce_185(val, _values, result)
             result = [val[0]]
 
@@ -3062,7 +3067,7 @@ def _reduce_185(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1056)
+module_eval(<<'.,.,', 'parser.y', 1057)
   def _reduce_186(val, _values, result)
             result = val[0] + [val[2]]
 
@@ -3070,7 +3075,7 @@ def _reduce_186(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1061)
+module_eval(<<'.,.,', 'parser.y', 1062)
   def _reduce_187(val, _values, result)
             result = Types::Record.new(
           fields: val[1],
@@ -3081,7 +3086,7 @@ def _reduce_187(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1069)
+module_eval(<<'.,.,', 'parser.y', 1070)
   def _reduce_188(val, _values, result)
             result = val[0]
 
@@ -3089,7 +3094,7 @@ def _reduce_188(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1072)
+module_eval(<<'.,.,', 'parser.y', 1073)
   def _reduce_189(val, _values, result)
             result = val[0].merge!(val[2])
 
@@ -3097,7 +3102,7 @@ def _reduce_189(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1077)
+module_eval(<<'.,.,', 'parser.y', 1078)
   def _reduce_190(val, _values, result)
             result = { val[0].value => val[2] }
 
@@ -3105,7 +3110,7 @@ def _reduce_190(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1080)
+module_eval(<<'.,.,', 'parser.y', 1081)
   def _reduce_191(val, _values, result)
             result = { val[0].value => val[2] }
 
@@ -3113,7 +3118,7 @@ def _reduce_191(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1083)
+module_eval(<<'.,.,', 'parser.y', 1084)
   def _reduce_192(val, _values, result)
             result = { val[0].value => val[2] }
 
@@ -3121,7 +3126,7 @@ def _reduce_192(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1086)
+module_eval(<<'.,.,', 'parser.y', 1087)
   def _reduce_193(val, _values, result)
             result = { val[0].value => val[1] }
 
@@ -3129,7 +3134,7 @@ def _reduce_193(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1089)
+module_eval(<<'.,.,', 'parser.y', 1090)
   def _reduce_194(val, _values, result)
             result = { val[0].value => val[2] }
 
@@ -3137,7 +3142,7 @@ def _reduce_194(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1092)
+module_eval(<<'.,.,', 'parser.y', 1093)
   def _reduce_195(val, _values, result)
             result = { val[0].value => val[2] }
 
@@ -3145,7 +3150,7 @@ def _reduce_195(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1095)
+module_eval(<<'.,.,', 'parser.y', 1096)
   def _reduce_196(val, _values, result)
             result = { val[0].value => val[2] }
 
@@ -3155,7 +3160,7 @@ def _reduce_196(val, _values, result)
 
 # reduce 197 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1101)
+module_eval(<<'.,.,', 'parser.y', 1102)
   def _reduce_198(val, _values, result)
             result = val[0]
 
@@ -3171,7 +3176,7 @@ def _reduce_198(val, _values, result)
 
 # reduce 202 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1108)
+module_eval(<<'.,.,', 'parser.y', 1109)
   def _reduce_203(val, _values, result)
             location = (val[0] || val[1] || val[2]).location + val[3].location
 
@@ -3196,7 +3201,7 @@ def _reduce_203(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1128)
+module_eval(<<'.,.,', 'parser.y', 1129)
   def _reduce_204(val, _values, result)
             result = LocatedValue.new(value: [val[0].value, nil], location: val[0].location)
 
@@ -3204,7 +3209,7 @@ def _reduce_204(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1133)
+module_eval(<<'.,.,', 'parser.y', 1134)
   def _reduce_205(val, _values, result)
             location = val[0].location + val[4].location
         type = Types::Function.new(
@@ -3224,7 +3229,7 @@ def _reduce_205(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1148)
+module_eval(<<'.,.,', 'parser.y', 1149)
   def _reduce_206(val, _values, result)
             location = val[0].location + val[1].location
         type = Types::Function.new(
@@ -3244,7 +3249,7 @@ def _reduce_206(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1165)
+module_eval(<<'.,.,', 'parser.y', 1166)
   def _reduce_207(val, _values, result)
             result = val[2]
         result[0].unshift(val[0])
@@ -3253,7 +3258,7 @@ def _reduce_207(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1169)
+module_eval(<<'.,.,', 'parser.y', 1170)
   def _reduce_208(val, _values, result)
             result = empty_params_result
         result[0].unshift(val[0])
@@ -3264,7 +3269,7 @@ def _reduce_208(val, _values, result)
 
 # reduce 209 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1176)
+module_eval(<<'.,.,', 'parser.y', 1177)
   def _reduce_210(val, _values, result)
             result = val[2]
         result[1].unshift(val[0])
@@ -3273,7 +3278,7 @@ def _reduce_210(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1180)
+module_eval(<<'.,.,', 'parser.y', 1181)
   def _reduce_211(val, _values, result)
             result = empty_params_result
         result[1].unshift(val[0])
@@ -3284,7 +3289,7 @@ def _reduce_211(val, _values, result)
 
 # reduce 212 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1187)
+module_eval(<<'.,.,', 'parser.y', 1188)
   def _reduce_213(val, _values, result)
             result = val[2]
         result[2] = val[0]
@@ -3293,7 +3298,7 @@ def _reduce_213(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1191)
+module_eval(<<'.,.,', 'parser.y', 1192)
   def _reduce_214(val, _values, result)
             result = empty_params_result
         result[2] = val[0]
@@ -3304,7 +3309,7 @@ def _reduce_214(val, _values, result)
 
 # reduce 215 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1198)
+module_eval(<<'.,.,', 'parser.y', 1199)
   def _reduce_216(val, _values, result)
             result = val[2]
         result[3].unshift(val[0])
@@ -3313,7 +3318,7 @@ def _reduce_216(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1202)
+module_eval(<<'.,.,', 'parser.y', 1203)
   def _reduce_217(val, _values, result)
             result = empty_params_result
         result[3].unshift(val[0])
@@ -3324,7 +3329,7 @@ def _reduce_217(val, _values, result)
 
 # reduce 218 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1209)
+module_eval(<<'.,.,', 'parser.y', 1210)
   def _reduce_219(val, _values, result)
             result = empty_params_result
 
@@ -3332,7 +3337,7 @@ def _reduce_219(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1212)
+module_eval(<<'.,.,', 'parser.y', 1213)
   def _reduce_220(val, _values, result)
             result = val[2]
         result[4].merge!(val[0])
@@ -3341,7 +3346,7 @@ def _reduce_220(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1216)
+module_eval(<<'.,.,', 'parser.y', 1217)
   def _reduce_221(val, _values, result)
             result = empty_params_result
         result[4].merge!(val[0])
@@ -3350,7 +3355,7 @@ def _reduce_221(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1220)
+module_eval(<<'.,.,', 'parser.y', 1221)
   def _reduce_222(val, _values, result)
             result = val[2]
         result[5].merge!(val[0])
@@ -3359,7 +3364,7 @@ def _reduce_222(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1224)
+module_eval(<<'.,.,', 'parser.y', 1225)
   def _reduce_223(val, _values, result)
             result = empty_params_result
         result[5].merge!(val[0])
@@ -3368,7 +3373,7 @@ def _reduce_223(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1228)
+module_eval(<<'.,.,', 'parser.y', 1229)
   def _reduce_224(val, _values, result)
             result = empty_params_result
         result[6] = val[0]
@@ -3377,7 +3382,7 @@ def _reduce_224(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1234)
+module_eval(<<'.,.,', 'parser.y', 1235)
   def _reduce_225(val, _values, result)
             loc = val[0].location
         if var_name = val[1]
@@ -3395,7 +3400,7 @@ def _reduce_225(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1249)
+module_eval(<<'.,.,', 'parser.y', 1250)
   def _reduce_226(val, _values, result)
             loc = val[0].location + val[1].location
         if var_name = val[2]
@@ -3413,7 +3418,7 @@ def _reduce_226(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1264)
+module_eval(<<'.,.,', 'parser.y', 1265)
   def _reduce_227(val, _values, result)
             loc = val[0].location + val[1].location
         if var_name = val[2]
@@ -3431,7 +3436,7 @@ def _reduce_227(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1279)
+module_eval(<<'.,.,', 'parser.y', 1280)
   def _reduce_228(val, _values, result)
             loc = val[0].location + val[1].location
         if var_name = val[2]
@@ -3451,7 +3456,7 @@ def _reduce_228(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1296)
+module_eval(<<'.,.,', 'parser.y', 1297)
   def _reduce_229(val, _values, result)
             loc = val[0].location + val[2].location
         if var_name = val[3]
@@ -3471,7 +3476,7 @@ def _reduce_229(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1313)
+module_eval(<<'.,.,', 'parser.y', 1314)
   def _reduce_230(val, _values, result)
             loc = val[0].location + val[1].location
         if var_name = val[2]
@@ -3500,8 +3505,10 @@ def _reduce_230(val, _values, result)
 
 # reduce 235 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1332)
-  def _reduce_236(val, _values, result)
+# reduce 236 omitted
+
+module_eval(<<'.,.,', 'parser.y', 1333)
+  def _reduce_237(val, _values, result)
             namespace = val[0]&.value || Namespace.empty
         name = val[1].value.to_sym
         type_name = TypeName.new(namespace: namespace, name: name)
@@ -3512,14 +3519,14 @@ def _reduce_236(val, _values, result)
   end
 .,.,
 
-# reduce 237 omitted
-
 # reduce 238 omitted
 
 # reduce 239 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1344)
-  def _reduce_240(val, _values, result)
+# reduce 240 omitted
+
+module_eval(<<'.,.,', 'parser.y', 1345)
+  def _reduce_241(val, _values, result)
             namespace = val[0]&.value || Namespace.empty
         name = val[1].value.to_sym
         type_name = TypeName.new(namespace: namespace, name: name)
@@ -3530,8 +3537,8 @@ def _reduce_240(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1353)
-  def _reduce_241(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 1354)
+  def _reduce_242(val, _values, result)
             namespace = val[0]&.value || Namespace.empty
         name = val[1].value.to_sym
         type_name = TypeName.new(namespace: namespace, name: name)
@@ -3542,8 +3549,8 @@ def _reduce_241(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1362)
-  def _reduce_242(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 1363)
+  def _reduce_243(val, _values, result)
             namespace = val[0]&.value || Namespace.empty
         name = val[1].value.to_sym
         type_name = TypeName.new(namespace: namespace, name: name)
@@ -3554,24 +3561,24 @@ def _reduce_242(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1372)
-  def _reduce_243(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 1373)
+  def _reduce_244(val, _values, result)
             result = nil
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1375)
-  def _reduce_244(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 1376)
+  def _reduce_245(val, _values, result)
             result = LocatedValue.new(value: Namespace.root, location: val[0].location)
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1378)
-  def _reduce_245(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 1379)
+  def _reduce_246(val, _values, result)
             namespace = Namespace.parse(val[1].value).absolute!
         result = LocatedValue.new(value: namespace, location: val[0].location + val[1].location)
 
@@ -3579,8 +3586,8 @@ def _reduce_245(val, _values, result)
   end
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1382)
-  def _reduce_246(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 1383)
+  def _reduce_247(val, _values, result)
             namespace = Namespace.parse(val[0].value)
         result = LocatedValue.new(value: namespace, location: val[0].location)
 
@@ -3588,10 +3595,10 @@ def _reduce_246(val, _values, result)
   end
 .,.,
 
-# reduce 247 omitted
-
 # reduce 248 omitted
 
+# reduce 249 omitted
+
 def _reduce_none(val, _values, result)
   val[0]
 end
diff --git a/lib/rbs/parser.y b/lib/rbs/parser.y
index 85e0e4c69..9aa3bac31 100644
--- a/lib/rbs/parser.y
+++ b/lib/rbs/parser.y
@@ -12,6 +12,7 @@ class RBS::Parser
         kPREPEND kEXTENSION kINCOMPATIBLE
         type_TYPE type_SIGNATURE type_METHODTYPE tEOF
         kOUT kIN kUNCHECKED kOVERLOAD
+        kUNDERSCORE
 
   prechigh
   nonassoc kQUESTION
@@ -1326,7 +1327,7 @@ rule
       }
 
   var_name_opt:
-    | tLIDENT | tINTERFACEIDENT | tQUOTEDIDENT | tUNDERSCOREIDENT
+    | tLIDENT | tINTERFACEIDENT | tQUOTEDIDENT | tUNDERSCOREIDENT | kUNDERSCORE
 
   qualified_name:
       namespace simple_name {
@@ -1721,6 +1722,8 @@ def next_token
     new_token(:tLIDENT)
   when input.scan(/_[a-z]\w*\b/)
     new_token(:tUNDERSCOREIDENT)
+  when input.scan(/_/)
+    new_token(:kUNDERSCORE)
   when input.scan(/"(\\"|[^"])*"/)
     s = input.matched.yield_self {|s| s[1, s.length - 2] }
                      .gsub(DBL_QUOTE_STR_ESCAPE_SEQUENCES_RE) do |match|
diff --git a/test/rbs/method_type_parsing_test.rb b/test/rbs/method_type_parsing_test.rb
index d36f55a08..11b1e8557 100644
--- a/test/rbs/method_type_parsing_test.rb
+++ b/test/rbs/method_type_parsing_test.rb
@@ -17,6 +17,12 @@ def test_method_type
     Parser.parse_method_type("(?foo?: Integer, ?bar!: String)->void")
   end
 
+  def test_method_param
+    Parser.parse_method_type("(untyped _)->void").yield_self do |type|
+      assert_equal "(untyped _) -> void", type.to_s
+    end
+  end
+
   def test_method_type_eof_re
     Parser.parse_method_type("()->void~ Integer", eof_re: /~/).yield_self do |type|
       assert_equal "() -> void", type.to_s