[svn:parrot] r42792 - trunk/ext/nqp-rx/src/stage0

pmichaud at svn.parrot.org pmichaud at svn.parrot.org
Sun Nov 22 21:02:16 UTC 2009


Author: pmichaud
Date: Sun Nov 22 21:02:11 2009
New Revision: 42792
URL: https://trac.parrot.org/parrot/changeset/42792

Log:
[nqp]:  Update with regexes that support :p(os) and :c(ontinue).

Modified:
   trunk/ext/nqp-rx/src/stage0/HLL-s0.pir
   trunk/ext/nqp-rx/src/stage0/NQP-s0.pir
   trunk/ext/nqp-rx/src/stage0/P6Regex-s0.pir
   trunk/ext/nqp-rx/src/stage0/Regex-s0.pir

Modified: trunk/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- trunk/ext/nqp-rx/src/stage0/HLL-s0.pir	Sun Nov 22 16:35:00 2009	(r42791)
+++ trunk/ext/nqp-rx/src/stage0/HLL-s0.pir	Sun Nov 22 21:02:11 2009	(r42792)
@@ -74,7 +74,7 @@
 
     .local int rxtrace
     rxtrace = options['parsetrace']
-    match = parsegrammar.'parse'(source, 'from'=>0, 'actions'=>parseactions, 'rxtrace'=>rxtrace)
+    match = parsegrammar.'parse'(source, 'p'=>0, 'actions'=>parseactions, 'rxtrace'=>rxtrace)
     unless match goto err_parsefail
     .return (match)
 
@@ -862,7 +862,7 @@
 ### .include 'gen/hllgrammar-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1258904195.63313")
+.sub "_block11"  :anon :subid("10_1258923239.23398")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Grammar"], "_block13" 
     capture_lex $P14
@@ -876,9 +876,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post94") :outer("10_1258904195.63313")
+.sub "" :load :init :subid("post94") :outer("10_1258923239.23398")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1258904195.63313" 
+    .const 'Sub' $P12 = "10_1258923239.23398" 
     .local pmc block
     set block, $P12
     $P297 = get_root_global ["parrot"], "P6metaclass"
@@ -887,78 +887,78 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block13"  :subid("11_1258904195.63313") :outer("10_1258904195.63313")
+.sub "_block13"  :subid("11_1258923239.23398") :outer("10_1258923239.23398")
 .annotate "line", 5
-    .const 'Sub' $P286 = "92_1258904195.63313" 
+    .const 'Sub' $P286 = "92_1258923239.23398" 
     capture_lex $P286
-    .const 'Sub' $P279 = "90_1258904195.63313" 
+    .const 'Sub' $P279 = "90_1258923239.23398" 
     capture_lex $P279
-    .const 'Sub' $P266 = "87_1258904195.63313" 
+    .const 'Sub' $P266 = "87_1258923239.23398" 
     capture_lex $P266
-    .const 'Sub' $P261 = "85_1258904195.63313" 
+    .const 'Sub' $P261 = "85_1258923239.23398" 
     capture_lex $P261
-    .const 'Sub' $P255 = "83_1258904195.63313" 
+    .const 'Sub' $P255 = "83_1258923239.23398" 
     capture_lex $P255
-    .const 'Sub' $P249 = "81_1258904195.63313" 
+    .const 'Sub' $P249 = "81_1258923239.23398" 
     capture_lex $P249
-    .const 'Sub' $P244 = "79_1258904195.63313" 
+    .const 'Sub' $P244 = "79_1258923239.23398" 
     capture_lex $P244
-    .const 'Sub' $P239 = "77_1258904195.63313" 
+    .const 'Sub' $P239 = "77_1258923239.23398" 
     capture_lex $P239
-    .const 'Sub' $P234 = "75_1258904195.63313" 
+    .const 'Sub' $P234 = "75_1258923239.23398" 
     capture_lex $P234
-    .const 'Sub' $P229 = "73_1258904195.63313" 
+    .const 'Sub' $P229 = "73_1258923239.23398" 
     capture_lex $P229
-    .const 'Sub' $P224 = "71_1258904195.63313" 
+    .const 'Sub' $P224 = "71_1258923239.23398" 
     capture_lex $P224
-    .const 'Sub' $P219 = "69_1258904195.63313" 
+    .const 'Sub' $P219 = "69_1258923239.23398" 
     capture_lex $P219
-    .const 'Sub' $P208 = "65_1258904195.63313" 
+    .const 'Sub' $P208 = "65_1258923239.23398" 
     capture_lex $P208
-    .const 'Sub' $P195 = "63_1258904195.63313" 
+    .const 'Sub' $P195 = "63_1258923239.23398" 
     capture_lex $P195
-    .const 'Sub' $P183 = "61_1258904195.63313" 
+    .const 'Sub' $P183 = "61_1258923239.23398" 
     capture_lex $P183
-    .const 'Sub' $P176 = "59_1258904195.63313" 
+    .const 'Sub' $P176 = "59_1258923239.23398" 
     capture_lex $P176
-    .const 'Sub' $P167 = "57_1258904195.63313" 
+    .const 'Sub' $P167 = "57_1258923239.23398" 
     capture_lex $P167
-    .const 'Sub' $P160 = "55_1258904195.63313" 
+    .const 'Sub' $P160 = "55_1258923239.23398" 
     capture_lex $P160
-    .const 'Sub' $P151 = "53_1258904195.63313" 
+    .const 'Sub' $P151 = "53_1258923239.23398" 
     capture_lex $P151
-    .const 'Sub' $P144 = "51_1258904195.63313" 
+    .const 'Sub' $P144 = "51_1258923239.23398" 
     capture_lex $P144
-    .const 'Sub' $P135 = "49_1258904195.63313" 
+    .const 'Sub' $P135 = "49_1258923239.23398" 
     capture_lex $P135
-    .const 'Sub' $P128 = "47_1258904195.63313" 
+    .const 'Sub' $P128 = "47_1258923239.23398" 
     capture_lex $P128
-    .const 'Sub' $P121 = "45_1258904195.63313" 
+    .const 'Sub' $P121 = "45_1258923239.23398" 
     capture_lex $P121
-    .const 'Sub' $P111 = "43_1258904195.63313" 
+    .const 'Sub' $P111 = "43_1258923239.23398" 
     capture_lex $P111
-    .const 'Sub' $P103 = "41_1258904195.63313" 
+    .const 'Sub' $P103 = "41_1258923239.23398" 
     capture_lex $P103
-    .const 'Sub' $P93 = "40_1258904195.63313" 
+    .const 'Sub' $P93 = "40_1258923239.23398" 
     capture_lex $P93
-    .const 'Sub' $P87 = "38_1258904195.63313" 
+    .const 'Sub' $P87 = "38_1258923239.23398" 
     capture_lex $P87
-    .const 'Sub' $P82 = "36_1258904195.63313" 
+    .const 'Sub' $P82 = "36_1258923239.23398" 
     capture_lex $P82
-    .const 'Sub' $P74 = "34_1258904195.63313" 
+    .const 'Sub' $P74 = "34_1258923239.23398" 
     capture_lex $P74
-    .const 'Sub' $P68 = "32_1258904195.63313" 
+    .const 'Sub' $P68 = "32_1258923239.23398" 
     capture_lex $P68
-    .const 'Sub' $P62 = "30_1258904195.63313" 
+    .const 'Sub' $P62 = "30_1258923239.23398" 
     capture_lex $P62
-    .const 'Sub' $P56 = "28_1258904195.63313" 
+    .const 'Sub' $P56 = "28_1258923239.23398" 
     capture_lex $P56
-    .const 'Sub' $P23 = "14_1258904195.63313" 
+    .const 'Sub' $P23 = "14_1258923239.23398" 
     capture_lex $P23
-    .const 'Sub' $P15 = "12_1258904195.63313" 
+    .const 'Sub' $P15 = "12_1258923239.23398" 
     capture_lex $P15
 .annotate "line", 33
-    .const 'Sub' $P286 = "92_1258904195.63313" 
+    .const 'Sub' $P286 = "92_1258923239.23398" 
     capture_lex $P286
 .annotate "line", 5
     .return ($P286)
@@ -966,7 +966,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "ws"  :subid("12_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "ws"  :subid("12_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 5
     .local string rx16_tgt
     .local int rx16_pos
@@ -974,23 +974,26 @@
     .local int rx16_eos
     .local int rx16_rep
     .local pmc rx16_cur
-    (rx16_cur, rx16_pos, rx16_tgt, $I10) = self."!cursor_start"()
+    (rx16_cur, rx16_pos, rx16_tgt) = self."!cursor_start"()
     rx16_cur."!cursor_debug"("START ", "ws")
     .lex unicode:"$\x{a2}", rx16_cur
     .local pmc match
     .lex "$/", match
     length rx16_eos, rx16_tgt
     set rx16_off, 0
-    lt $I10, 2, rx16_start
-    sub rx16_off, $I10, 1
+    lt rx16_pos, 2, rx16_start
+    sub rx16_off, rx16_pos, 1
     substr rx16_tgt, rx16_tgt, rx16_off
   rx16_start:
-    ge rx16_pos, 0, rxscan19_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan19_done
+    goto rxscan19_scan
   rxscan19_loop:
     ($P10) = rx16_cur."from"()
     inc $P10
     set rx16_pos, $P10
     ge rx16_pos, rx16_eos, rxscan19_done
+  rxscan19_scan:
     set_addr $I10, rxscan19_loop
     rx16_cur."!mark_push"(0, rx16_pos, $I10)
   rxscan19_done:
@@ -1047,7 +1050,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__ws"  :subid("13_1258904195.63313") :method
+.sub "!PREFIX__ws"  :subid("13_1258923239.23398") :method
 .annotate "line", 5
     new $P18, "ResizablePMCArray"
     push $P18, ""
@@ -1056,7 +1059,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "termish"  :subid("14_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "termish"  :subid("14_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 5
     .local string rx24_tgt
     .local int rx24_pos
@@ -1064,24 +1067,27 @@
     .local int rx24_eos
     .local int rx24_rep
     .local pmc rx24_cur
-    (rx24_cur, rx24_pos, rx24_tgt, $I10) = self."!cursor_start"()
+    (rx24_cur, rx24_pos, rx24_tgt) = self."!cursor_start"()
     rx24_cur."!cursor_debug"("START ", "termish")
-    rx24_cur."!cursor_caparray"("prefixish", "postfixish")
+    rx24_cur."!cursor_caparray"("postfixish", "prefixish")
     .lex unicode:"$\x{a2}", rx24_cur
     .local pmc match
     .lex "$/", match
     length rx24_eos, rx24_tgt
     set rx24_off, 0
-    lt $I10, 2, rx24_start
-    sub rx24_off, $I10, 1
+    lt rx24_pos, 2, rx24_start
+    sub rx24_off, rx24_pos, 1
     substr rx24_tgt, rx24_tgt, rx24_off
   rx24_start:
-    ge rx24_pos, 0, rxscan27_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan27_done
+    goto rxscan27_scan
   rxscan27_loop:
     ($P10) = rx24_cur."from"()
     inc $P10
     set rx24_pos, $P10
     ge rx24_pos, rx24_eos, rxscan27_done
+  rxscan27_scan:
     set_addr $I10, rxscan27_loop
     rx24_cur."!mark_push"(0, rx24_pos, $I10)
   rxscan27_done:
@@ -1145,7 +1151,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__termish"  :subid("15_1258904195.63313") :method
+.sub "!PREFIX__termish"  :subid("15_1258923239.23398") :method
 .annotate "line", 5
     new $P26, "ResizablePMCArray"
     push $P26, ""
@@ -1154,7 +1160,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term"  :subid("16_1258904195.63313") :method
+.sub "term"  :subid("16_1258923239.23398") :method
 .annotate "line", 13
     $P33 = self."!protoregex"("term")
     .return ($P33)
@@ -1162,7 +1168,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term"  :subid("17_1258904195.63313") :method
+.sub "!PREFIX__term"  :subid("17_1258923239.23398") :method
 .annotate "line", 13
     $P35 = self."!PREFIX__!protoregex"("term")
     .return ($P35)
@@ -1170,7 +1176,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infix"  :subid("18_1258904195.63313") :method
+.sub "infix"  :subid("18_1258923239.23398") :method
 .annotate "line", 14
     $P37 = self."!protoregex"("infix")
     .return ($P37)
@@ -1178,7 +1184,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infix"  :subid("19_1258904195.63313") :method
+.sub "!PREFIX__infix"  :subid("19_1258923239.23398") :method
 .annotate "line", 14
     $P39 = self."!PREFIX__!protoregex"("infix")
     .return ($P39)
@@ -1186,7 +1192,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefix"  :subid("20_1258904195.63313") :method
+.sub "prefix"  :subid("20_1258923239.23398") :method
 .annotate "line", 15
     $P41 = self."!protoregex"("prefix")
     .return ($P41)
@@ -1194,7 +1200,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefix"  :subid("21_1258904195.63313") :method
+.sub "!PREFIX__prefix"  :subid("21_1258923239.23398") :method
 .annotate "line", 15
     $P43 = self."!PREFIX__!protoregex"("prefix")
     .return ($P43)
@@ -1202,7 +1208,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfix"  :subid("22_1258904195.63313") :method
+.sub "postfix"  :subid("22_1258923239.23398") :method
 .annotate "line", 16
     $P45 = self."!protoregex"("postfix")
     .return ($P45)
@@ -1210,7 +1216,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfix"  :subid("23_1258904195.63313") :method
+.sub "!PREFIX__postfix"  :subid("23_1258923239.23398") :method
 .annotate "line", 16
     $P47 = self."!PREFIX__!protoregex"("postfix")
     .return ($P47)
@@ -1218,7 +1224,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "circumfix"  :subid("24_1258904195.63313") :method
+.sub "circumfix"  :subid("24_1258923239.23398") :method
 .annotate "line", 17
     $P49 = self."!protoregex"("circumfix")
     .return ($P49)
@@ -1226,7 +1232,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__circumfix"  :subid("25_1258904195.63313") :method
+.sub "!PREFIX__circumfix"  :subid("25_1258923239.23398") :method
 .annotate "line", 17
     $P51 = self."!PREFIX__!protoregex"("circumfix")
     .return ($P51)
@@ -1234,7 +1240,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postcircumfix"  :subid("26_1258904195.63313") :method
+.sub "postcircumfix"  :subid("26_1258923239.23398") :method
 .annotate "line", 18
     $P53 = self."!protoregex"("postcircumfix")
     .return ($P53)
@@ -1242,7 +1248,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postcircumfix"  :subid("27_1258904195.63313") :method
+.sub "!PREFIX__postcircumfix"  :subid("27_1258923239.23398") :method
 .annotate "line", 18
     $P55 = self."!PREFIX__!protoregex"("postcircumfix")
     .return ($P55)
@@ -1250,7 +1256,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term:sym<circumfix>"  :subid("28_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "term:sym<circumfix>"  :subid("28_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 5
     .local string rx57_tgt
     .local int rx57_pos
@@ -1258,23 +1264,26 @@
     .local int rx57_eos
     .local int rx57_rep
     .local pmc rx57_cur
-    (rx57_cur, rx57_pos, rx57_tgt, $I10) = self."!cursor_start"()
+    (rx57_cur, rx57_pos, rx57_tgt) = self."!cursor_start"()
     rx57_cur."!cursor_debug"("START ", "term:sym<circumfix>")
     .lex unicode:"$\x{a2}", rx57_cur
     .local pmc match
     .lex "$/", match
     length rx57_eos, rx57_tgt
     set rx57_off, 0
-    lt $I10, 2, rx57_start
-    sub rx57_off, $I10, 1
+    lt rx57_pos, 2, rx57_start
+    sub rx57_off, rx57_pos, 1
     substr rx57_tgt, rx57_tgt, rx57_off
   rx57_start:
-    ge rx57_pos, 0, rxscan61_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan61_done
+    goto rxscan61_scan
   rxscan61_loop:
     ($P10) = rx57_cur."from"()
     inc $P10
     set rx57_pos, $P10
     ge rx57_pos, rx57_eos, rxscan61_done
+  rxscan61_scan:
     set_addr $I10, rxscan61_loop
     rx57_cur."!mark_push"(0, rx57_pos, $I10)
   rxscan61_done:
@@ -1305,7 +1314,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1258904195.63313") :method
+.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1258923239.23398") :method
 .annotate "line", 5
     $P59 = self."!PREFIX__!subrule"("circumfix", "")
     new $P60, "ResizablePMCArray"
@@ -1315,7 +1324,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infixish"  :subid("30_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "infixish"  :subid("30_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 5
     .local string rx63_tgt
     .local int rx63_pos
@@ -1323,23 +1332,26 @@
     .local int rx63_eos
     .local int rx63_rep
     .local pmc rx63_cur
-    (rx63_cur, rx63_pos, rx63_tgt, $I10) = self."!cursor_start"()
+    (rx63_cur, rx63_pos, rx63_tgt) = self."!cursor_start"()
     rx63_cur."!cursor_debug"("START ", "infixish")
     .lex unicode:"$\x{a2}", rx63_cur
     .local pmc match
     .lex "$/", match
     length rx63_eos, rx63_tgt
     set rx63_off, 0
-    lt $I10, 2, rx63_start
-    sub rx63_off, $I10, 1
+    lt rx63_pos, 2, rx63_start
+    sub rx63_off, rx63_pos, 1
     substr rx63_tgt, rx63_tgt, rx63_off
   rx63_start:
-    ge rx63_pos, 0, rxscan67_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan67_done
+    goto rxscan67_scan
   rxscan67_loop:
     ($P10) = rx63_cur."from"()
     inc $P10
     set rx63_pos, $P10
     ge rx63_pos, rx63_eos, rxscan67_done
+  rxscan67_scan:
     set_addr $I10, rxscan67_loop
     rx63_cur."!mark_push"(0, rx63_pos, $I10)
   rxscan67_done:
@@ -1370,7 +1382,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("31_1258904195.63313") :method
+.sub "!PREFIX__infixish"  :subid("31_1258923239.23398") :method
 .annotate "line", 5
     $P65 = self."!PREFIX__!subrule"("OPER=infix", "")
     new $P66, "ResizablePMCArray"
@@ -1380,7 +1392,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefixish"  :subid("32_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "prefixish"  :subid("32_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 5
     .local string rx69_tgt
     .local int rx69_pos
@@ -1388,23 +1400,26 @@
     .local int rx69_eos
     .local int rx69_rep
     .local pmc rx69_cur
-    (rx69_cur, rx69_pos, rx69_tgt, $I10) = self."!cursor_start"()
+    (rx69_cur, rx69_pos, rx69_tgt) = self."!cursor_start"()
     rx69_cur."!cursor_debug"("START ", "prefixish")
     .lex unicode:"$\x{a2}", rx69_cur
     .local pmc match
     .lex "$/", match
     length rx69_eos, rx69_tgt
     set rx69_off, 0
-    lt $I10, 2, rx69_start
-    sub rx69_off, $I10, 1
+    lt rx69_pos, 2, rx69_start
+    sub rx69_off, rx69_pos, 1
     substr rx69_tgt, rx69_tgt, rx69_off
   rx69_start:
-    ge rx69_pos, 0, rxscan73_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan73_done
+    goto rxscan73_scan
   rxscan73_loop:
     ($P10) = rx69_cur."from"()
     inc $P10
     set rx69_pos, $P10
     ge rx69_pos, rx69_eos, rxscan73_done
+  rxscan73_scan:
     set_addr $I10, rxscan73_loop
     rx69_cur."!mark_push"(0, rx69_pos, $I10)
   rxscan73_done:
@@ -1440,7 +1455,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefixish"  :subid("33_1258904195.63313") :method
+.sub "!PREFIX__prefixish"  :subid("33_1258923239.23398") :method
 .annotate "line", 5
     $P71 = self."!PREFIX__!subrule"("OPER=prefix", "")
     new $P72, "ResizablePMCArray"
@@ -1450,7 +1465,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfixish"  :subid("34_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "postfixish"  :subid("34_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 5
     .local string rx75_tgt
     .local int rx75_pos
@@ -1458,23 +1473,26 @@
     .local int rx75_eos
     .local int rx75_rep
     .local pmc rx75_cur
-    (rx75_cur, rx75_pos, rx75_tgt, $I10) = self."!cursor_start"()
+    (rx75_cur, rx75_pos, rx75_tgt) = self."!cursor_start"()
     rx75_cur."!cursor_debug"("START ", "postfixish")
     .lex unicode:"$\x{a2}", rx75_cur
     .local pmc match
     .lex "$/", match
     length rx75_eos, rx75_tgt
     set rx75_off, 0
-    lt $I10, 2, rx75_start
-    sub rx75_off, $I10, 1
+    lt rx75_pos, 2, rx75_start
+    sub rx75_off, rx75_pos, 1
     substr rx75_tgt, rx75_tgt, rx75_off
   rx75_start:
-    ge rx75_pos, 0, rxscan80_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan80_done
+    goto rxscan80_scan
   rxscan80_loop:
     ($P10) = rx75_cur."from"()
     inc $P10
     set rx75_pos, $P10
     ge rx75_pos, rx75_eos, rxscan80_done
+  rxscan80_scan:
     set_addr $I10, rxscan80_loop
     rx75_cur."!mark_push"(0, rx75_pos, $I10)
   rxscan80_done:
@@ -1521,7 +1539,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfixish"  :subid("35_1258904195.63313") :method
+.sub "!PREFIX__postfixish"  :subid("35_1258923239.23398") :method
 .annotate "line", 5
     $P77 = self."!PREFIX__!subrule"("OPER=postcircumfix", "")
     $P78 = self."!PREFIX__!subrule"("OPER=postfix", "")
@@ -1533,7 +1551,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm"  :subid("36_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "nullterm"  :subid("36_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 5
     .local string rx83_tgt
     .local int rx83_pos
@@ -1541,23 +1559,26 @@
     .local int rx83_eos
     .local int rx83_rep
     .local pmc rx83_cur
-    (rx83_cur, rx83_pos, rx83_tgt, $I10) = self."!cursor_start"()
+    (rx83_cur, rx83_pos, rx83_tgt) = self."!cursor_start"()
     rx83_cur."!cursor_debug"("START ", "nullterm")
     .lex unicode:"$\x{a2}", rx83_cur
     .local pmc match
     .lex "$/", match
     length rx83_eos, rx83_tgt
     set rx83_off, 0
-    lt $I10, 2, rx83_start
-    sub rx83_off, $I10, 1
+    lt rx83_pos, 2, rx83_start
+    sub rx83_off, rx83_pos, 1
     substr rx83_tgt, rx83_tgt, rx83_off
   rx83_start:
-    ge rx83_pos, 0, rxscan86_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan86_done
+    goto rxscan86_scan
   rxscan86_loop:
     ($P10) = rx83_cur."from"()
     inc $P10
     set rx83_pos, $P10
     ge rx83_pos, rx83_eos, rxscan86_done
+  rxscan86_scan:
     set_addr $I10, rxscan86_loop
     rx83_cur."!mark_push"(0, rx83_pos, $I10)
   rxscan86_done:
@@ -1581,7 +1602,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm"  :subid("37_1258904195.63313") :method
+.sub "!PREFIX__nullterm"  :subid("37_1258923239.23398") :method
 .annotate "line", 5
     new $P85, "ResizablePMCArray"
     push $P85, ""
@@ -1590,7 +1611,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm_alt"  :subid("38_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "nullterm_alt"  :subid("38_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 5
     .local string rx88_tgt
     .local int rx88_pos
@@ -1598,23 +1619,26 @@
     .local int rx88_eos
     .local int rx88_rep
     .local pmc rx88_cur
-    (rx88_cur, rx88_pos, rx88_tgt, $I10) = self."!cursor_start"()
+    (rx88_cur, rx88_pos, rx88_tgt) = self."!cursor_start"()
     rx88_cur."!cursor_debug"("START ", "nullterm_alt")
     .lex unicode:"$\x{a2}", rx88_cur
     .local pmc match
     .lex "$/", match
     length rx88_eos, rx88_tgt
     set rx88_off, 0
-    lt $I10, 2, rx88_start
-    sub rx88_off, $I10, 1
+    lt rx88_pos, 2, rx88_start
+    sub rx88_off, rx88_pos, 1
     substr rx88_tgt, rx88_tgt, rx88_off
   rx88_start:
-    ge rx88_pos, 0, rxscan92_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan92_done
+    goto rxscan92_scan
   rxscan92_loop:
     ($P10) = rx88_cur."from"()
     inc $P10
     set rx88_pos, $P10
     ge rx88_pos, rx88_eos, rxscan92_done
+  rxscan92_scan:
     set_addr $I10, rxscan92_loop
     rx88_cur."!mark_push"(0, rx88_pos, $I10)
   rxscan92_done:
@@ -1645,7 +1669,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm_alt"  :subid("39_1258904195.63313") :method
+.sub "!PREFIX__nullterm_alt"  :subid("39_1258923239.23398") :method
 .annotate "line", 5
     $P90 = self."!PREFIX__!subrule"("term", "")
     new $P91, "ResizablePMCArray"
@@ -1655,7 +1679,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nulltermish"  :subid("40_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "nulltermish"  :subid("40_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     new $P95, 'ExceptionHandler'
     set_addr $P95, control_94
@@ -1682,7 +1706,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_delimited"  :subid("41_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "quote_delimited"  :subid("41_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx104_tgt
     .local int rx104_pos
@@ -1690,7 +1714,7 @@
     .local int rx104_eos
     .local int rx104_rep
     .local pmc rx104_cur
-    (rx104_cur, rx104_pos, rx104_tgt, $I10) = self."!cursor_start"()
+    (rx104_cur, rx104_pos, rx104_tgt) = self."!cursor_start"()
     rx104_cur."!cursor_debug"("START ", "quote_delimited")
     rx104_cur."!cursor_caparray"("quote_atom")
     .lex unicode:"$\x{a2}", rx104_cur
@@ -1698,16 +1722,19 @@
     .lex "$/", match
     length rx104_eos, rx104_tgt
     set rx104_off, 0
-    lt $I10, 2, rx104_start
-    sub rx104_off, $I10, 1
+    lt rx104_pos, 2, rx104_start
+    sub rx104_off, rx104_pos, 1
     substr rx104_tgt, rx104_tgt, rx104_off
   rx104_start:
-    ge rx104_pos, 0, rxscan108_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan108_done
+    goto rxscan108_scan
   rxscan108_loop:
     ($P10) = rx104_cur."from"()
     inc $P10
     set rx104_pos, $P10
     ge rx104_pos, rx104_eos, rxscan108_done
+  rxscan108_scan:
     set_addr $I10, rxscan108_loop
     rx104_cur."!mark_push"(0, rx104_pos, $I10)
   rxscan108_done:
@@ -1761,7 +1788,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_delimited"  :subid("42_1258904195.63313") :method
+.sub "!PREFIX__quote_delimited"  :subid("42_1258923239.23398") :method
 .annotate "line", 33
     $P106 = self."!PREFIX__!subrule"("starter", "")
     new $P107, "ResizablePMCArray"
@@ -1771,7 +1798,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_atom"  :subid("43_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "quote_atom"  :subid("43_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx112_tgt
     .local int rx112_pos
@@ -1779,23 +1806,26 @@
     .local int rx112_eos
     .local int rx112_rep
     .local pmc rx112_cur
-    (rx112_cur, rx112_pos, rx112_tgt, $I10) = self."!cursor_start"()
+    (rx112_cur, rx112_pos, rx112_tgt) = self."!cursor_start"()
     rx112_cur."!cursor_debug"("START ", "quote_atom")
     .lex unicode:"$\x{a2}", rx112_cur
     .local pmc match
     .lex "$/", match
     length rx112_eos, rx112_tgt
     set rx112_off, 0
-    lt $I10, 2, rx112_start
-    sub rx112_off, $I10, 1
+    lt rx112_pos, 2, rx112_start
+    sub rx112_off, rx112_pos, 1
     substr rx112_tgt, rx112_tgt, rx112_off
   rx112_start:
-    ge rx112_pos, 0, rxscan115_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan115_done
+    goto rxscan115_scan
   rxscan115_loop:
     ($P10) = rx112_cur."from"()
     inc $P10
     set rx112_pos, $P10
     ge rx112_pos, rx112_eos, rxscan115_done
+  rxscan115_scan:
     set_addr $I10, rxscan115_loop
     rx112_cur."!mark_push"(0, rx112_pos, $I10)
   rxscan115_done:
@@ -1859,7 +1889,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_atom"  :subid("44_1258904195.63313") :method
+.sub "!PREFIX__quote_atom"  :subid("44_1258923239.23398") :method
 .annotate "line", 33
     new $P114, "ResizablePMCArray"
     push $P114, ""
@@ -1868,7 +1898,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decint"  :subid("45_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "decint"  :subid("45_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx122_tgt
     .local int rx122_pos
@@ -1876,23 +1906,26 @@
     .local int rx122_eos
     .local int rx122_rep
     .local pmc rx122_cur
-    (rx122_cur, rx122_pos, rx122_tgt, $I10) = self."!cursor_start"()
+    (rx122_cur, rx122_pos, rx122_tgt) = self."!cursor_start"()
     rx122_cur."!cursor_debug"("START ", "decint")
     .lex unicode:"$\x{a2}", rx122_cur
     .local pmc match
     .lex "$/", match
     length rx122_eos, rx122_tgt
     set rx122_off, 0
-    lt $I10, 2, rx122_start
-    sub rx122_off, $I10, 1
+    lt rx122_pos, 2, rx122_start
+    sub rx122_off, rx122_pos, 1
     substr rx122_tgt, rx122_tgt, rx122_off
   rx122_start:
-    ge rx122_pos, 0, rxscan125_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan125_done
+    goto rxscan125_scan
   rxscan125_loop:
     ($P10) = rx122_cur."from"()
     inc $P10
     set rx122_pos, $P10
     ge rx122_pos, rx122_eos, rxscan125_done
+  rxscan125_scan:
     set_addr $I10, rxscan125_loop
     rx122_cur."!mark_push"(0, rx122_pos, $I10)
   rxscan125_done:
@@ -1937,7 +1970,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decint"  :subid("46_1258904195.63313") :method
+.sub "!PREFIX__decint"  :subid("46_1258923239.23398") :method
 .annotate "line", 33
     new $P124, "ResizablePMCArray"
     push $P124, ""
@@ -1946,7 +1979,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexints"  :subid("47_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "hexints"  :subid("47_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx129_tgt
     .local int rx129_pos
@@ -1954,7 +1987,7 @@
     .local int rx129_eos
     .local int rx129_rep
     .local pmc rx129_cur
-    (rx129_cur, rx129_pos, rx129_tgt, $I10) = self."!cursor_start"()
+    (rx129_cur, rx129_pos, rx129_tgt) = self."!cursor_start"()
     rx129_cur."!cursor_debug"("START ", "hexints")
     rx129_cur."!cursor_caparray"("decint")
     .lex unicode:"$\x{a2}", rx129_cur
@@ -1962,16 +1995,19 @@
     .lex "$/", match
     length rx129_eos, rx129_tgt
     set rx129_off, 0
-    lt $I10, 2, rx129_start
-    sub rx129_off, $I10, 1
+    lt rx129_pos, 2, rx129_start
+    sub rx129_off, rx129_pos, 1
     substr rx129_tgt, rx129_tgt, rx129_off
   rx129_start:
-    ge rx129_pos, 0, rxscan132_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan132_done
+    goto rxscan132_scan
   rxscan132_loop:
     ($P10) = rx129_cur."from"()
     inc $P10
     set rx129_pos, $P10
     ge rx129_pos, rx129_eos, rxscan132_done
+  rxscan132_scan:
     set_addr $I10, rxscan132_loop
     rx129_cur."!mark_push"(0, rx129_pos, $I10)
   rxscan132_done:
@@ -2027,7 +2063,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints"  :subid("48_1258904195.63313") :method
+.sub "!PREFIX__hexints"  :subid("48_1258923239.23398") :method
 .annotate "line", 33
     new $P131, "ResizablePMCArray"
     push $P131, ""
@@ -2036,7 +2072,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexint"  :subid("49_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "hexint"  :subid("49_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx136_tgt
     .local int rx136_pos
@@ -2044,23 +2080,26 @@
     .local int rx136_eos
     .local int rx136_rep
     .local pmc rx136_cur
-    (rx136_cur, rx136_pos, rx136_tgt, $I10) = self."!cursor_start"()
+    (rx136_cur, rx136_pos, rx136_tgt) = self."!cursor_start"()
     rx136_cur."!cursor_debug"("START ", "hexint")
     .lex unicode:"$\x{a2}", rx136_cur
     .local pmc match
     .lex "$/", match
     length rx136_eos, rx136_tgt
     set rx136_off, 0
-    lt $I10, 2, rx136_start
-    sub rx136_off, $I10, 1
+    lt rx136_pos, 2, rx136_start
+    sub rx136_off, rx136_pos, 1
     substr rx136_tgt, rx136_tgt, rx136_off
   rx136_start:
-    ge rx136_pos, 0, rxscan139_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan139_done
+    goto rxscan139_scan
   rxscan139_loop:
     ($P10) = rx136_cur."from"()
     inc $P10
     set rx136_pos, $P10
     ge rx136_pos, rx136_eos, rxscan139_done
+  rxscan139_scan:
     set_addr $I10, rxscan139_loop
     rx136_cur."!mark_push"(0, rx136_pos, $I10)
   rxscan139_done:
@@ -2114,7 +2153,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexint"  :subid("50_1258904195.63313") :method
+.sub "!PREFIX__hexint"  :subid("50_1258923239.23398") :method
 .annotate "line", 33
     new $P138, "ResizablePMCArray"
     push $P138, ""
@@ -2123,7 +2162,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexints"  :subid("51_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "hexints"  :subid("51_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx145_tgt
     .local int rx145_pos
@@ -2131,7 +2170,7 @@
     .local int rx145_eos
     .local int rx145_rep
     .local pmc rx145_cur
-    (rx145_cur, rx145_pos, rx145_tgt, $I10) = self."!cursor_start"()
+    (rx145_cur, rx145_pos, rx145_tgt) = self."!cursor_start"()
     rx145_cur."!cursor_debug"("START ", "hexints")
     rx145_cur."!cursor_caparray"("hexint")
     .lex unicode:"$\x{a2}", rx145_cur
@@ -2139,16 +2178,19 @@
     .lex "$/", match
     length rx145_eos, rx145_tgt
     set rx145_off, 0
-    lt $I10, 2, rx145_start
-    sub rx145_off, $I10, 1
+    lt rx145_pos, 2, rx145_start
+    sub rx145_off, rx145_pos, 1
     substr rx145_tgt, rx145_tgt, rx145_off
   rx145_start:
-    ge rx145_pos, 0, rxscan148_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan148_done
+    goto rxscan148_scan
   rxscan148_loop:
     ($P10) = rx145_cur."from"()
     inc $P10
     set rx145_pos, $P10
     ge rx145_pos, rx145_eos, rxscan148_done
+  rxscan148_scan:
     set_addr $I10, rxscan148_loop
     rx145_cur."!mark_push"(0, rx145_pos, $I10)
   rxscan148_done:
@@ -2204,7 +2246,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints"  :subid("52_1258904195.63313") :method
+.sub "!PREFIX__hexints"  :subid("52_1258923239.23398") :method
 .annotate "line", 33
     new $P147, "ResizablePMCArray"
     push $P147, ""
@@ -2213,7 +2255,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octint"  :subid("53_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "octint"  :subid("53_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx152_tgt
     .local int rx152_pos
@@ -2221,23 +2263,26 @@
     .local int rx152_eos
     .local int rx152_rep
     .local pmc rx152_cur
-    (rx152_cur, rx152_pos, rx152_tgt, $I10) = self."!cursor_start"()
+    (rx152_cur, rx152_pos, rx152_tgt) = self."!cursor_start"()
     rx152_cur."!cursor_debug"("START ", "octint")
     .lex unicode:"$\x{a2}", rx152_cur
     .local pmc match
     .lex "$/", match
     length rx152_eos, rx152_tgt
     set rx152_off, 0
-    lt $I10, 2, rx152_start
-    sub rx152_off, $I10, 1
+    lt rx152_pos, 2, rx152_start
+    sub rx152_off, rx152_pos, 1
     substr rx152_tgt, rx152_tgt, rx152_off
   rx152_start:
-    ge rx152_pos, 0, rxscan155_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan155_done
+    goto rxscan155_scan
   rxscan155_loop:
     ($P10) = rx152_cur."from"()
     inc $P10
     set rx152_pos, $P10
     ge rx152_pos, rx152_eos, rxscan155_done
+  rxscan155_scan:
     set_addr $I10, rxscan155_loop
     rx152_cur."!mark_push"(0, rx152_pos, $I10)
   rxscan155_done:
@@ -2291,7 +2336,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octint"  :subid("54_1258904195.63313") :method
+.sub "!PREFIX__octint"  :subid("54_1258923239.23398") :method
 .annotate "line", 33
     new $P154, "ResizablePMCArray"
     push $P154, ""
@@ -2300,7 +2345,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octints"  :subid("55_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "octints"  :subid("55_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx161_tgt
     .local int rx161_pos
@@ -2308,7 +2353,7 @@
     .local int rx161_eos
     .local int rx161_rep
     .local pmc rx161_cur
-    (rx161_cur, rx161_pos, rx161_tgt, $I10) = self."!cursor_start"()
+    (rx161_cur, rx161_pos, rx161_tgt) = self."!cursor_start"()
     rx161_cur."!cursor_debug"("START ", "octints")
     rx161_cur."!cursor_caparray"("octint")
     .lex unicode:"$\x{a2}", rx161_cur
@@ -2316,16 +2361,19 @@
     .lex "$/", match
     length rx161_eos, rx161_tgt
     set rx161_off, 0
-    lt $I10, 2, rx161_start
-    sub rx161_off, $I10, 1
+    lt rx161_pos, 2, rx161_start
+    sub rx161_off, rx161_pos, 1
     substr rx161_tgt, rx161_tgt, rx161_off
   rx161_start:
-    ge rx161_pos, 0, rxscan164_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan164_done
+    goto rxscan164_scan
   rxscan164_loop:
     ($P10) = rx161_cur."from"()
     inc $P10
     set rx161_pos, $P10
     ge rx161_pos, rx161_eos, rxscan164_done
+  rxscan164_scan:
     set_addr $I10, rxscan164_loop
     rx161_cur."!mark_push"(0, rx161_pos, $I10)
   rxscan164_done:
@@ -2381,7 +2429,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octints"  :subid("56_1258904195.63313") :method
+.sub "!PREFIX__octints"  :subid("56_1258923239.23398") :method
 .annotate "line", 33
     new $P163, "ResizablePMCArray"
     push $P163, ""
@@ -2390,7 +2438,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binint"  :subid("57_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "binint"  :subid("57_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx168_tgt
     .local int rx168_pos
@@ -2398,23 +2446,26 @@
     .local int rx168_eos
     .local int rx168_rep
     .local pmc rx168_cur
-    (rx168_cur, rx168_pos, rx168_tgt, $I10) = self."!cursor_start"()
+    (rx168_cur, rx168_pos, rx168_tgt) = self."!cursor_start"()
     rx168_cur."!cursor_debug"("START ", "binint")
     .lex unicode:"$\x{a2}", rx168_cur
     .local pmc match
     .lex "$/", match
     length rx168_eos, rx168_tgt
     set rx168_off, 0
-    lt $I10, 2, rx168_start
-    sub rx168_off, $I10, 1
+    lt rx168_pos, 2, rx168_start
+    sub rx168_off, rx168_pos, 1
     substr rx168_tgt, rx168_tgt, rx168_off
   rx168_start:
-    ge rx168_pos, 0, rxscan171_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan171_done
+    goto rxscan171_scan
   rxscan171_loop:
     ($P10) = rx168_cur."from"()
     inc $P10
     set rx168_pos, $P10
     ge rx168_pos, rx168_eos, rxscan171_done
+  rxscan171_scan:
     set_addr $I10, rxscan171_loop
     rx168_cur."!mark_push"(0, rx168_pos, $I10)
   rxscan171_done:
@@ -2468,7 +2519,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binint"  :subid("58_1258904195.63313") :method
+.sub "!PREFIX__binint"  :subid("58_1258923239.23398") :method
 .annotate "line", 33
     new $P170, "ResizablePMCArray"
     push $P170, ""
@@ -2477,7 +2528,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binints"  :subid("59_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "binints"  :subid("59_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx177_tgt
     .local int rx177_pos
@@ -2485,7 +2536,7 @@
     .local int rx177_eos
     .local int rx177_rep
     .local pmc rx177_cur
-    (rx177_cur, rx177_pos, rx177_tgt, $I10) = self."!cursor_start"()
+    (rx177_cur, rx177_pos, rx177_tgt) = self."!cursor_start"()
     rx177_cur."!cursor_debug"("START ", "binints")
     rx177_cur."!cursor_caparray"("binint")
     .lex unicode:"$\x{a2}", rx177_cur
@@ -2493,16 +2544,19 @@
     .lex "$/", match
     length rx177_eos, rx177_tgt
     set rx177_off, 0
-    lt $I10, 2, rx177_start
-    sub rx177_off, $I10, 1
+    lt rx177_pos, 2, rx177_start
+    sub rx177_off, rx177_pos, 1
     substr rx177_tgt, rx177_tgt, rx177_off
   rx177_start:
-    ge rx177_pos, 0, rxscan180_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan180_done
+    goto rxscan180_scan
   rxscan180_loop:
     ($P10) = rx177_cur."from"()
     inc $P10
     set rx177_pos, $P10
     ge rx177_pos, rx177_eos, rxscan180_done
+  rxscan180_scan:
     set_addr $I10, rxscan180_loop
     rx177_cur."!mark_push"(0, rx177_pos, $I10)
   rxscan180_done:
@@ -2558,7 +2612,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binints"  :subid("60_1258904195.63313") :method
+.sub "!PREFIX__binints"  :subid("60_1258923239.23398") :method
 .annotate "line", 33
     new $P179, "ResizablePMCArray"
     push $P179, ""
@@ -2567,7 +2621,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "integer"  :subid("61_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "integer"  :subid("61_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx184_tgt
     .local int rx184_pos
@@ -2575,23 +2629,26 @@
     .local int rx184_eos
     .local int rx184_rep
     .local pmc rx184_cur
-    (rx184_cur, rx184_pos, rx184_tgt, $I10) = self."!cursor_start"()
+    (rx184_cur, rx184_pos, rx184_tgt) = self."!cursor_start"()
     rx184_cur."!cursor_debug"("START ", "integer")
     .lex unicode:"$\x{a2}", rx184_cur
     .local pmc match
     .lex "$/", match
     length rx184_eos, rx184_tgt
     set rx184_off, 0
-    lt $I10, 2, rx184_start
-    sub rx184_off, $I10, 1
+    lt rx184_pos, 2, rx184_start
+    sub rx184_off, rx184_pos, 1
     substr rx184_tgt, rx184_tgt, rx184_off
   rx184_start:
-    ge rx184_pos, 0, rxscan192_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan192_done
+    goto rxscan192_scan
   rxscan192_loop:
     ($P10) = rx184_cur."from"()
     inc $P10
     set rx184_pos, $P10
     ge rx184_pos, rx184_eos, rxscan192_done
+  rxscan192_scan:
     set_addr $I10, rxscan192_loop
     rx184_cur."!mark_push"(0, rx184_pos, $I10)
   rxscan192_done:
@@ -2712,7 +2769,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__integer"  :subid("62_1258904195.63313") :method
+.sub "!PREFIX__integer"  :subid("62_1258923239.23398") :method
 .annotate "line", 33
     $P186 = self."!PREFIX__!subrule"("VALUE=decint", "")
     $P187 = self."!PREFIX__!subrule"("VALUE=decint", "0d")
@@ -2730,7 +2787,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "dec_number"  :subid("63_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "dec_number"  :subid("63_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx196_tgt
     .local int rx196_pos
@@ -2738,7 +2795,7 @@
     .local int rx196_eos
     .local int rx196_rep
     .local pmc rx196_cur
-    (rx196_cur, rx196_pos, rx196_tgt, $I10) = self."!cursor_start"()
+    (rx196_cur, rx196_pos, rx196_tgt) = self."!cursor_start"()
     rx196_cur."!cursor_debug"("START ", "dec_number")
     rx196_cur."!cursor_caparray"("escale")
     .lex unicode:"$\x{a2}", rx196_cur
@@ -2746,16 +2803,19 @@
     .lex "$/", match
     length rx196_eos, rx196_tgt
     set rx196_off, 0
-    lt $I10, 2, rx196_start
-    sub rx196_off, $I10, 1
+    lt rx196_pos, 2, rx196_start
+    sub rx196_off, rx196_pos, 1
     substr rx196_tgt, rx196_tgt, rx196_off
   rx196_start:
-    ge rx196_pos, 0, rxscan199_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan199_done
+    goto rxscan199_scan
   rxscan199_loop:
     ($P10) = rx196_cur."from"()
     inc $P10
     set rx196_pos, $P10
     ge rx196_pos, rx196_eos, rxscan199_done
+  rxscan199_scan:
     set_addr $I10, rxscan199_loop
     rx196_cur."!mark_push"(0, rx196_pos, $I10)
   rxscan199_done:
@@ -2906,7 +2966,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__dec_number"  :subid("64_1258904195.63313") :method
+.sub "!PREFIX__dec_number"  :subid("64_1258923239.23398") :method
 .annotate "line", 33
     new $P198, "ResizablePMCArray"
     push $P198, ""
@@ -2917,7 +2977,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "escale"  :subid("65_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "escale"  :subid("65_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx209_tgt
     .local int rx209_pos
@@ -2925,23 +2985,26 @@
     .local int rx209_eos
     .local int rx209_rep
     .local pmc rx209_cur
-    (rx209_cur, rx209_pos, rx209_tgt, $I10) = self."!cursor_start"()
+    (rx209_cur, rx209_pos, rx209_tgt) = self."!cursor_start"()
     rx209_cur."!cursor_debug"("START ", "escale")
     .lex unicode:"$\x{a2}", rx209_cur
     .local pmc match
     .lex "$/", match
     length rx209_eos, rx209_tgt
     set rx209_off, 0
-    lt $I10, 2, rx209_start
-    sub rx209_off, $I10, 1
+    lt rx209_pos, 2, rx209_start
+    sub rx209_off, rx209_pos, 1
     substr rx209_tgt, rx209_tgt, rx209_off
   rx209_start:
-    ge rx209_pos, 0, rxscan212_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan212_done
+    goto rxscan212_scan
   rxscan212_loop:
     ($P10) = rx209_cur."from"()
     inc $P10
     set rx209_pos, $P10
     ge rx209_pos, rx209_eos, rxscan212_done
+  rxscan212_scan:
     set_addr $I10, rxscan212_loop
     rx209_cur."!mark_push"(0, rx209_pos, $I10)
   rxscan212_done:
@@ -2991,7 +3054,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__escale"  :subid("66_1258904195.63313") :method
+.sub "!PREFIX__escale"  :subid("66_1258923239.23398") :method
 .annotate "line", 33
     new $P211, "ResizablePMCArray"
     push $P211, "e"
@@ -3001,7 +3064,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape"  :subid("67_1258904195.63313") :method
+.sub "quote_escape"  :subid("67_1258923239.23398") :method
 .annotate "line", 79
     $P216 = self."!protoregex"("quote_escape")
     .return ($P216)
@@ -3009,7 +3072,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape"  :subid("68_1258904195.63313") :method
+.sub "!PREFIX__quote_escape"  :subid("68_1258923239.23398") :method
 .annotate "line", 79
     $P218 = self."!PREFIX__!protoregex"("quote_escape")
     .return ($P218)
@@ -3017,7 +3080,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<backslash>"  :subid("69_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "quote_escape:sym<backslash>"  :subid("69_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx220_tgt
     .local int rx220_pos
@@ -3025,23 +3088,26 @@
     .local int rx220_eos
     .local int rx220_rep
     .local pmc rx220_cur
-    (rx220_cur, rx220_pos, rx220_tgt, $I10) = self."!cursor_start"()
+    (rx220_cur, rx220_pos, rx220_tgt) = self."!cursor_start"()
     rx220_cur."!cursor_debug"("START ", "quote_escape:sym<backslash>")
     .lex unicode:"$\x{a2}", rx220_cur
     .local pmc match
     .lex "$/", match
     length rx220_eos, rx220_tgt
     set rx220_off, 0
-    lt $I10, 2, rx220_start
-    sub rx220_off, $I10, 1
+    lt rx220_pos, 2, rx220_start
+    sub rx220_off, rx220_pos, 1
     substr rx220_tgt, rx220_tgt, rx220_off
   rx220_start:
-    ge rx220_pos, 0, rxscan223_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan223_done
+    goto rxscan223_scan
   rxscan223_loop:
     ($P10) = rx220_cur."from"()
     inc $P10
     set rx220_pos, $P10
     ge rx220_pos, rx220_eos, rxscan223_done
+  rxscan223_scan:
     set_addr $I10, rxscan223_loop
     rx220_cur."!mark_push"(0, rx220_pos, $I10)
   rxscan223_done:
@@ -3076,7 +3142,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1258904195.63313") :method
+.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1258923239.23398") :method
 .annotate "line", 33
     new $P222, "ResizablePMCArray"
     push $P222, "\\\\"
@@ -3085,7 +3151,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<stopper>"  :subid("71_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "quote_escape:sym<stopper>"  :subid("71_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx225_tgt
     .local int rx225_pos
@@ -3093,23 +3159,26 @@
     .local int rx225_eos
     .local int rx225_rep
     .local pmc rx225_cur
-    (rx225_cur, rx225_pos, rx225_tgt, $I10) = self."!cursor_start"()
+    (rx225_cur, rx225_pos, rx225_tgt) = self."!cursor_start"()
     rx225_cur."!cursor_debug"("START ", "quote_escape:sym<stopper>")
     .lex unicode:"$\x{a2}", rx225_cur
     .local pmc match
     .lex "$/", match
     length rx225_eos, rx225_tgt
     set rx225_off, 0
-    lt $I10, 2, rx225_start
-    sub rx225_off, $I10, 1
+    lt rx225_pos, 2, rx225_start
+    sub rx225_off, rx225_pos, 1
     substr rx225_tgt, rx225_tgt, rx225_off
   rx225_start:
-    ge rx225_pos, 0, rxscan228_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan228_done
+    goto rxscan228_scan
   rxscan228_loop:
     ($P10) = rx225_cur."from"()
     inc $P10
     set rx225_pos, $P10
     ge rx225_pos, rx225_eos, rxscan228_done
+  rxscan228_scan:
     set_addr $I10, rxscan228_loop
     rx225_cur."!mark_push"(0, rx225_pos, $I10)
   rxscan228_done:
@@ -3151,7 +3220,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1258904195.63313") :method
+.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1258923239.23398") :method
 .annotate "line", 33
     new $P227, "ResizablePMCArray"
     push $P227, "\\"
@@ -3160,7 +3229,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<bs>"  :subid("73_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "quote_escape:sym<bs>"  :subid("73_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx230_tgt
     .local int rx230_pos
@@ -3168,23 +3237,26 @@
     .local int rx230_eos
     .local int rx230_rep
     .local pmc rx230_cur
-    (rx230_cur, rx230_pos, rx230_tgt, $I10) = self."!cursor_start"()
+    (rx230_cur, rx230_pos, rx230_tgt) = self."!cursor_start"()
     rx230_cur."!cursor_debug"("START ", "quote_escape:sym<bs>")
     .lex unicode:"$\x{a2}", rx230_cur
     .local pmc match
     .lex "$/", match
     length rx230_eos, rx230_tgt
     set rx230_off, 0
-    lt $I10, 2, rx230_start
-    sub rx230_off, $I10, 1
+    lt rx230_pos, 2, rx230_start
+    sub rx230_off, rx230_pos, 1
     substr rx230_tgt, rx230_tgt, rx230_off
   rx230_start:
-    ge rx230_pos, 0, rxscan233_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan233_done
+    goto rxscan233_scan
   rxscan233_loop:
     ($P10) = rx230_cur."from"()
     inc $P10
     set rx230_pos, $P10
     ge rx230_pos, rx230_eos, rxscan233_done
+  rxscan233_scan:
     set_addr $I10, rxscan233_loop
     rx230_cur."!mark_push"(0, rx230_pos, $I10)
   rxscan233_done:
@@ -3219,7 +3291,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1258904195.63313") :method
+.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1258923239.23398") :method
 .annotate "line", 33
     new $P232, "ResizablePMCArray"
     push $P232, "\\b"
@@ -3228,7 +3300,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<nl>"  :subid("75_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "quote_escape:sym<nl>"  :subid("75_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx235_tgt
     .local int rx235_pos
@@ -3236,23 +3308,26 @@
     .local int rx235_eos
     .local int rx235_rep
     .local pmc rx235_cur
-    (rx235_cur, rx235_pos, rx235_tgt, $I10) = self."!cursor_start"()
+    (rx235_cur, rx235_pos, rx235_tgt) = self."!cursor_start"()
     rx235_cur."!cursor_debug"("START ", "quote_escape:sym<nl>")
     .lex unicode:"$\x{a2}", rx235_cur
     .local pmc match
     .lex "$/", match
     length rx235_eos, rx235_tgt
     set rx235_off, 0
-    lt $I10, 2, rx235_start
-    sub rx235_off, $I10, 1
+    lt rx235_pos, 2, rx235_start
+    sub rx235_off, rx235_pos, 1
     substr rx235_tgt, rx235_tgt, rx235_off
   rx235_start:
-    ge rx235_pos, 0, rxscan238_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan238_done
+    goto rxscan238_scan
   rxscan238_loop:
     ($P10) = rx235_cur."from"()
     inc $P10
     set rx235_pos, $P10
     ge rx235_pos, rx235_eos, rxscan238_done
+  rxscan238_scan:
     set_addr $I10, rxscan238_loop
     rx235_cur."!mark_push"(0, rx235_pos, $I10)
   rxscan238_done:
@@ -3287,7 +3362,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1258904195.63313") :method
+.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1258923239.23398") :method
 .annotate "line", 33
     new $P237, "ResizablePMCArray"
     push $P237, "\\n"
@@ -3296,7 +3371,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<cr>"  :subid("77_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "quote_escape:sym<cr>"  :subid("77_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx240_tgt
     .local int rx240_pos
@@ -3304,23 +3379,26 @@
     .local int rx240_eos
     .local int rx240_rep
     .local pmc rx240_cur
-    (rx240_cur, rx240_pos, rx240_tgt, $I10) = self."!cursor_start"()
+    (rx240_cur, rx240_pos, rx240_tgt) = self."!cursor_start"()
     rx240_cur."!cursor_debug"("START ", "quote_escape:sym<cr>")
     .lex unicode:"$\x{a2}", rx240_cur
     .local pmc match
     .lex "$/", match
     length rx240_eos, rx240_tgt
     set rx240_off, 0
-    lt $I10, 2, rx240_start
-    sub rx240_off, $I10, 1
+    lt rx240_pos, 2, rx240_start
+    sub rx240_off, rx240_pos, 1
     substr rx240_tgt, rx240_tgt, rx240_off
   rx240_start:
-    ge rx240_pos, 0, rxscan243_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan243_done
+    goto rxscan243_scan
   rxscan243_loop:
     ($P10) = rx240_cur."from"()
     inc $P10
     set rx240_pos, $P10
     ge rx240_pos, rx240_eos, rxscan243_done
+  rxscan243_scan:
     set_addr $I10, rxscan243_loop
     rx240_cur."!mark_push"(0, rx240_pos, $I10)
   rxscan243_done:
@@ -3355,7 +3433,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1258904195.63313") :method
+.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1258923239.23398") :method
 .annotate "line", 33
     new $P242, "ResizablePMCArray"
     push $P242, "\\r"
@@ -3364,7 +3442,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<tab>"  :subid("79_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "quote_escape:sym<tab>"  :subid("79_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx245_tgt
     .local int rx245_pos
@@ -3372,23 +3450,26 @@
     .local int rx245_eos
     .local int rx245_rep
     .local pmc rx245_cur
-    (rx245_cur, rx245_pos, rx245_tgt, $I10) = self."!cursor_start"()
+    (rx245_cur, rx245_pos, rx245_tgt) = self."!cursor_start"()
     rx245_cur."!cursor_debug"("START ", "quote_escape:sym<tab>")
     .lex unicode:"$\x{a2}", rx245_cur
     .local pmc match
     .lex "$/", match
     length rx245_eos, rx245_tgt
     set rx245_off, 0
-    lt $I10, 2, rx245_start
-    sub rx245_off, $I10, 1
+    lt rx245_pos, 2, rx245_start
+    sub rx245_off, rx245_pos, 1
     substr rx245_tgt, rx245_tgt, rx245_off
   rx245_start:
-    ge rx245_pos, 0, rxscan248_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan248_done
+    goto rxscan248_scan
   rxscan248_loop:
     ($P10) = rx245_cur."from"()
     inc $P10
     set rx245_pos, $P10
     ge rx245_pos, rx245_eos, rxscan248_done
+  rxscan248_scan:
     set_addr $I10, rxscan248_loop
     rx245_cur."!mark_push"(0, rx245_pos, $I10)
   rxscan248_done:
@@ -3423,7 +3504,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1258904195.63313") :method
+.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1258923239.23398") :method
 .annotate "line", 33
     new $P247, "ResizablePMCArray"
     push $P247, "\\t"
@@ -3432,7 +3513,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<hex>"  :subid("81_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "quote_escape:sym<hex>"  :subid("81_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx250_tgt
     .local int rx250_pos
@@ -3440,23 +3521,26 @@
     .local int rx250_eos
     .local int rx250_rep
     .local pmc rx250_cur
-    (rx250_cur, rx250_pos, rx250_tgt, $I10) = self."!cursor_start"()
+    (rx250_cur, rx250_pos, rx250_tgt) = self."!cursor_start"()
     rx250_cur."!cursor_debug"("START ", "quote_escape:sym<hex>")
     .lex unicode:"$\x{a2}", rx250_cur
     .local pmc match
     .lex "$/", match
     length rx250_eos, rx250_tgt
     set rx250_off, 0
-    lt $I10, 2, rx250_start
-    sub rx250_off, $I10, 1
+    lt rx250_pos, 2, rx250_start
+    sub rx250_off, rx250_pos, 1
     substr rx250_tgt, rx250_tgt, rx250_off
   rx250_start:
-    ge rx250_pos, 0, rxscan253_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan253_done
+    goto rxscan253_scan
   rxscan253_loop:
     ($P10) = rx250_cur."from"()
     inc $P10
     set rx250_pos, $P10
     ge rx250_pos, rx250_eos, rxscan253_done
+  rxscan253_scan:
     set_addr $I10, rxscan253_loop
     rx250_cur."!mark_push"(0, rx250_pos, $I10)
   rxscan253_done:
@@ -3527,7 +3611,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<hex>"  :subid("82_1258904195.63313") :method
+.sub "!PREFIX__quote_escape:sym<hex>"  :subid("82_1258923239.23398") :method
 .annotate "line", 33
     new $P252, "ResizablePMCArray"
     push $P252, unicode:"\\x"
@@ -3536,7 +3620,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<oct>"  :subid("83_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "quote_escape:sym<oct>"  :subid("83_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx256_tgt
     .local int rx256_pos
@@ -3544,23 +3628,26 @@
     .local int rx256_eos
     .local int rx256_rep
     .local pmc rx256_cur
-    (rx256_cur, rx256_pos, rx256_tgt, $I10) = self."!cursor_start"()
+    (rx256_cur, rx256_pos, rx256_tgt) = self."!cursor_start"()
     rx256_cur."!cursor_debug"("START ", "quote_escape:sym<oct>")
     .lex unicode:"$\x{a2}", rx256_cur
     .local pmc match
     .lex "$/", match
     length rx256_eos, rx256_tgt
     set rx256_off, 0
-    lt $I10, 2, rx256_start
-    sub rx256_off, $I10, 1
+    lt rx256_pos, 2, rx256_start
+    sub rx256_off, rx256_pos, 1
     substr rx256_tgt, rx256_tgt, rx256_off
   rx256_start:
-    ge rx256_pos, 0, rxscan259_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan259_done
+    goto rxscan259_scan
   rxscan259_loop:
     ($P10) = rx256_cur."from"()
     inc $P10
     set rx256_pos, $P10
     ge rx256_pos, rx256_eos, rxscan259_done
+  rxscan259_scan:
     set_addr $I10, rxscan259_loop
     rx256_cur."!mark_push"(0, rx256_pos, $I10)
   rxscan259_done:
@@ -3631,7 +3718,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<oct>"  :subid("84_1258904195.63313") :method
+.sub "!PREFIX__quote_escape:sym<oct>"  :subid("84_1258923239.23398") :method
 .annotate "line", 33
     new $P258, "ResizablePMCArray"
     push $P258, "\\o"
@@ -3640,7 +3727,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<chr>"  :subid("85_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "quote_escape:sym<chr>"  :subid("85_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx262_tgt
     .local int rx262_pos
@@ -3648,23 +3735,26 @@
     .local int rx262_eos
     .local int rx262_rep
     .local pmc rx262_cur
-    (rx262_cur, rx262_pos, rx262_tgt, $I10) = self."!cursor_start"()
+    (rx262_cur, rx262_pos, rx262_tgt) = self."!cursor_start"()
     rx262_cur."!cursor_debug"("START ", "quote_escape:sym<chr>")
     .lex unicode:"$\x{a2}", rx262_cur
     .local pmc match
     .lex "$/", match
     length rx262_eos, rx262_tgt
     set rx262_off, 0
-    lt $I10, 2, rx262_start
-    sub rx262_off, $I10, 1
+    lt rx262_pos, 2, rx262_start
+    sub rx262_off, rx262_pos, 1
     substr rx262_tgt, rx262_tgt, rx262_off
   rx262_start:
-    ge rx262_pos, 0, rxscan265_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan265_done
+    goto rxscan265_scan
   rxscan265_loop:
     ($P10) = rx262_cur."from"()
     inc $P10
     set rx262_pos, $P10
     ge rx262_pos, rx262_eos, rxscan265_done
+  rxscan265_scan:
     set_addr $I10, rxscan265_loop
     rx262_cur."!mark_push"(0, rx262_pos, $I10)
   rxscan265_done:
@@ -3706,7 +3796,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<chr>"  :subid("86_1258904195.63313") :method
+.sub "!PREFIX__quote_escape:sym<chr>"  :subid("86_1258923239.23398") :method
 .annotate "line", 33
     new $P264, "ResizablePMCArray"
     push $P264, "\\c"
@@ -3715,9 +3805,9 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charname"  :subid("87_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "charname"  :subid("87_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
-    .const 'Sub' $P276 = "89_1258904195.63313" 
+    .const 'Sub' $P276 = "89_1258923239.23398" 
     capture_lex $P276
     .local string rx267_tgt
     .local int rx267_pos
@@ -3725,23 +3815,26 @@
     .local int rx267_eos
     .local int rx267_rep
     .local pmc rx267_cur
-    (rx267_cur, rx267_pos, rx267_tgt, $I10) = self."!cursor_start"()
+    (rx267_cur, rx267_pos, rx267_tgt) = self."!cursor_start"()
     rx267_cur."!cursor_debug"("START ", "charname")
     .lex unicode:"$\x{a2}", rx267_cur
     .local pmc match
     .lex "$/", match
     length rx267_eos, rx267_tgt
     set rx267_off, 0
-    lt $I10, 2, rx267_start
-    sub rx267_off, $I10, 1
+    lt rx267_pos, 2, rx267_start
+    sub rx267_off, rx267_pos, 1
     substr rx267_tgt, rx267_tgt, rx267_off
   rx267_start:
-    ge rx267_pos, 0, rxscan271_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan271_done
+    goto rxscan271_scan
   rxscan271_loop:
     ($P10) = rx267_cur."from"()
     inc $P10
     set rx267_pos, $P10
     ge rx267_pos, rx267_eos, rxscan271_done
+  rxscan271_scan:
     set_addr $I10, rxscan271_loop
     rx267_cur."!mark_push"(0, rx267_pos, $I10)
   rxscan271_done:
@@ -3792,7 +3885,7 @@
 .annotate "line", 100
   # rx subrule "before" subtype=zerowidth negate=
     rx267_cur."!cursor_pos"(rx267_pos)
-    .const 'Sub' $P276 = "89_1258904195.63313" 
+    .const 'Sub' $P276 = "89_1258923239.23398" 
     capture_lex $P276
     $P10 = rx267_cur."before"($P276)
     unless $P10, rx267_fail
@@ -3817,7 +3910,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charname"  :subid("88_1258904195.63313") :method
+.sub "!PREFIX__charname"  :subid("88_1258923239.23398") :method
 .annotate "line", 33
     $P269 = self."!PREFIX__!subrule"("integer", "")
     new $P270, "ResizablePMCArray"
@@ -3879,7 +3972,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block275"  :anon :subid("89_1258904195.63313") :method :outer("87_1258904195.63313")
+.sub "_block275"  :anon :subid("89_1258923239.23398") :method :outer("87_1258923239.23398")
 .annotate "line", 100
     .local string rx277_tgt
     .local int rx277_pos
@@ -3887,23 +3980,26 @@
     .local int rx277_eos
     .local int rx277_rep
     .local pmc rx277_cur
-    (rx277_cur, rx277_pos, rx277_tgt, $I10) = self."!cursor_start"()
+    (rx277_cur, rx277_pos, rx277_tgt) = self."!cursor_start"()
     rx277_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx277_cur
     .local pmc match
     .lex "$/", match
     length rx277_eos, rx277_tgt
     set rx277_off, 0
-    lt $I10, 2, rx277_start
-    sub rx277_off, $I10, 1
+    lt rx277_pos, 2, rx277_start
+    sub rx277_off, rx277_pos, 1
     substr rx277_tgt, rx277_tgt, rx277_off
   rx277_start:
-    ge rx277_pos, 0, rxscan278_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan278_done
+    goto rxscan278_scan
   rxscan278_loop:
     ($P10) = rx277_cur."from"()
     inc $P10
     set rx277_pos, $P10
     ge rx277_pos, rx277_eos, rxscan278_done
+  rxscan278_scan:
     set_addr $I10, rxscan278_loop
     rx277_cur."!mark_push"(0, rx277_pos, $I10)
   rxscan278_done:
@@ -3936,7 +4032,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charnames"  :subid("90_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "charnames"  :subid("90_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx280_tgt
     .local int rx280_pos
@@ -3944,7 +4040,7 @@
     .local int rx280_eos
     .local int rx280_rep
     .local pmc rx280_cur
-    (rx280_cur, rx280_pos, rx280_tgt, $I10) = self."!cursor_start"()
+    (rx280_cur, rx280_pos, rx280_tgt) = self."!cursor_start"()
     rx280_cur."!cursor_debug"("START ", "charnames")
     rx280_cur."!cursor_caparray"("charname")
     .lex unicode:"$\x{a2}", rx280_cur
@@ -3952,16 +4048,19 @@
     .lex "$/", match
     length rx280_eos, rx280_tgt
     set rx280_off, 0
-    lt $I10, 2, rx280_start
-    sub rx280_off, $I10, 1
+    lt rx280_pos, 2, rx280_start
+    sub rx280_off, rx280_pos, 1
     substr rx280_tgt, rx280_tgt, rx280_off
   rx280_start:
-    ge rx280_pos, 0, rxscan283_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan283_done
+    goto rxscan283_scan
   rxscan283_loop:
     ($P10) = rx280_cur."from"()
     inc $P10
     set rx280_pos, $P10
     ge rx280_pos, rx280_eos, rxscan283_done
+  rxscan283_scan:
     set_addr $I10, rxscan283_loop
     rx280_cur."!mark_push"(0, rx280_pos, $I10)
   rxscan283_done:
@@ -4017,7 +4116,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charnames"  :subid("91_1258904195.63313") :method
+.sub "!PREFIX__charnames"  :subid("91_1258923239.23398") :method
 .annotate "line", 33
     new $P282, "ResizablePMCArray"
     push $P282, ""
@@ -4026,7 +4125,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charspec"  :subid("92_1258904195.63313") :method :outer("11_1258904195.63313")
+.sub "charspec"  :subid("92_1258923239.23398") :method :outer("11_1258923239.23398")
 .annotate "line", 33
     .local string rx287_tgt
     .local int rx287_pos
@@ -4034,23 +4133,26 @@
     .local int rx287_eos
     .local int rx287_rep
     .local pmc rx287_cur
-    (rx287_cur, rx287_pos, rx287_tgt, $I10) = self."!cursor_start"()
+    (rx287_cur, rx287_pos, rx287_tgt) = self."!cursor_start"()
     rx287_cur."!cursor_debug"("START ", "charspec")
     .lex unicode:"$\x{a2}", rx287_cur
     .local pmc match
     .lex "$/", match
     length rx287_eos, rx287_tgt
     set rx287_off, 0
-    lt $I10, 2, rx287_start
-    sub rx287_off, $I10, 1
+    lt rx287_pos, 2, rx287_start
+    sub rx287_off, rx287_pos, 1
     substr rx287_tgt, rx287_tgt, rx287_off
   rx287_start:
-    ge rx287_pos, 0, rxscan292_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan292_done
+    goto rxscan292_scan
   rxscan292_loop:
     ($P10) = rx287_cur."from"()
     inc $P10
     set rx287_pos, $P10
     ge rx287_pos, rx287_eos, rxscan292_done
+  rxscan292_scan:
     set_addr $I10, rxscan292_loop
     rx287_cur."!mark_push"(0, rx287_pos, $I10)
   rxscan292_done:
@@ -4153,7 +4255,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charspec"  :subid("93_1258904195.63313") :method
+.sub "!PREFIX__charspec"  :subid("93_1258923239.23398") :method
 .annotate "line", 33
     $P289 = self."!PREFIX__!subrule"("", "")
     $P290 = self."!PREFIX__!subrule"("charnames", "[")
@@ -4195,7 +4297,7 @@
 ### .include 'gen/hllgrammar-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1258904197.80983")
+.sub "_block11"  :anon :subid("10_1258923241.45746")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Actions"], "_block13" 
     capture_lex $P14
@@ -4209,9 +4311,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post41") :outer("10_1258904197.80983")
+.sub "" :load :init :subid("post41") :outer("10_1258923241.45746")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1258904197.80983" 
+    .const 'Sub' $P12 = "10_1258923241.45746" 
     .local pmc block
     set block, $P12
     $P452 = get_root_global ["parrot"], "P6metaclass"
@@ -4220,58 +4322,58 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block13"  :subid("11_1258904197.80983") :outer("10_1258904197.80983")
+.sub "_block13"  :subid("11_1258923241.45746") :outer("10_1258923241.45746")
 .annotate "line", 3
-    .const 'Sub' $P434 = "40_1258904197.80983" 
+    .const 'Sub' $P434 = "40_1258923241.45746" 
     capture_lex $P434
-    .const 'Sub' $P417 = "39_1258904197.80983" 
+    .const 'Sub' $P417 = "39_1258923241.45746" 
     capture_lex $P417
-    .const 'Sub' $P410 = "38_1258904197.80983" 
+    .const 'Sub' $P410 = "38_1258923241.45746" 
     capture_lex $P410
-    .const 'Sub' $P403 = "37_1258904197.80983" 
+    .const 'Sub' $P403 = "37_1258923241.45746" 
     capture_lex $P403
-    .const 'Sub' $P396 = "36_1258904197.80983" 
+    .const 'Sub' $P396 = "36_1258923241.45746" 
     capture_lex $P396
-    .const 'Sub' $P389 = "35_1258904197.80983" 
+    .const 'Sub' $P389 = "35_1258923241.45746" 
     capture_lex $P389
-    .const 'Sub' $P379 = "34_1258904197.80983" 
+    .const 'Sub' $P379 = "34_1258923241.45746" 
     capture_lex $P379
-    .const 'Sub' $P372 = "33_1258904197.80983" 
+    .const 'Sub' $P372 = "33_1258923241.45746" 
     capture_lex $P372
-    .const 'Sub' $P356 = "32_1258904197.80983" 
+    .const 'Sub' $P356 = "32_1258923241.45746" 
     capture_lex $P356
-    .const 'Sub' $P281 = "30_1258904197.80983" 
+    .const 'Sub' $P281 = "30_1258923241.45746" 
     capture_lex $P281
-    .const 'Sub' $P220 = "27_1258904197.80983" 
+    .const 'Sub' $P220 = "27_1258923241.45746" 
     capture_lex $P220
-    .const 'Sub' $P211 = "26_1258904197.80983" 
+    .const 'Sub' $P211 = "26_1258923241.45746" 
     capture_lex $P211
-    .const 'Sub' $P202 = "25_1258904197.80983" 
+    .const 'Sub' $P202 = "25_1258923241.45746" 
     capture_lex $P202
-    .const 'Sub' $P193 = "24_1258904197.80983" 
+    .const 'Sub' $P193 = "24_1258923241.45746" 
     capture_lex $P193
-    .const 'Sub' $P184 = "23_1258904197.80983" 
+    .const 'Sub' $P184 = "23_1258923241.45746" 
     capture_lex $P184
-    .const 'Sub' $P175 = "22_1258904197.80983" 
+    .const 'Sub' $P175 = "22_1258923241.45746" 
     capture_lex $P175
-    .const 'Sub' $P165 = "21_1258904197.80983" 
+    .const 'Sub' $P165 = "21_1258923241.45746" 
     capture_lex $P165
-    .const 'Sub' $P155 = "20_1258904197.80983" 
+    .const 'Sub' $P155 = "20_1258923241.45746" 
     capture_lex $P155
-    .const 'Sub' $P148 = "19_1258904197.80983" 
+    .const 'Sub' $P148 = "19_1258923241.45746" 
     capture_lex $P148
-    .const 'Sub' $P138 = "18_1258904197.80983" 
+    .const 'Sub' $P138 = "18_1258923241.45746" 
     capture_lex $P138
-    .const 'Sub' $P128 = "17_1258904197.80983" 
+    .const 'Sub' $P128 = "17_1258923241.45746" 
     capture_lex $P128
-    .const 'Sub' $P28 = "14_1258904197.80983" 
+    .const 'Sub' $P28 = "14_1258923241.45746" 
     capture_lex $P28
-    .const 'Sub' $P22 = "13_1258904197.80983" 
+    .const 'Sub' $P22 = "13_1258923241.45746" 
     capture_lex $P22
-    .const 'Sub' $P15 = "12_1258904197.80983" 
+    .const 'Sub' $P15 = "12_1258923241.45746" 
     capture_lex $P15
 .annotate "line", 163
-    .const 'Sub' $P434 = "40_1258904197.80983" 
+    .const 'Sub' $P434 = "40_1258923241.45746" 
     capture_lex $P434
 .annotate "line", 3
     .return ($P434)
@@ -4279,7 +4381,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "string_to_int"  :subid("12_1258904197.80983") :outer("11_1258904197.80983")
+.sub "string_to_int"  :subid("12_1258923241.45746") :outer("11_1258923241.45746")
     .param pmc param_18
     .param pmc param_19
 .annotate "line", 3
@@ -4332,7 +4434,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "ints_to_string"  :subid("13_1258904197.80983") :outer("11_1258904197.80983")
+.sub "ints_to_string"  :subid("13_1258923241.45746") :outer("11_1258923241.45746")
     .param pmc param_25
 .annotate "line", 37
     new $P24, 'ExceptionHandler'
@@ -4373,14 +4475,14 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "EXPR"  :subid("14_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "EXPR"  :subid("14_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_31
     .param pmc param_32 :optional
     .param int has_param_32 :opt_flag
 .annotate "line", 62
-    .const 'Sub' $P111 = "16_1258904197.80983" 
+    .const 'Sub' $P111 = "16_1258923241.45746" 
     capture_lex $P111
-    .const 'Sub' $P78 = "15_1258904197.80983" 
+    .const 'Sub' $P78 = "15_1258923241.45746" 
     capture_lex $P78
     new $P30, 'ExceptionHandler'
     set_addr $P30, control_29
@@ -4515,7 +4617,7 @@
     find_lex $P75, "$past"
     $P76 = $P75."name"()
     if $P76, unless_74_end
-    .const 'Sub' $P78 = "15_1258904197.80983" 
+    .const 'Sub' $P78 = "15_1258923241.45746" 
     capture_lex $P78
     $P78()
   unless_74_end:
@@ -4539,7 +4641,7 @@
     unless $P105, loop121_done
     shift $P109, $P105
   loop121_redo:
-    .const 'Sub' $P111 = "16_1258904197.80983" 
+    .const 'Sub' $P111 = "16_1258923241.45746" 
     capture_lex $P111
     $P111($P109)
   loop121_next:
@@ -4584,7 +4686,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block77"  :anon :subid("15_1258904197.80983") :outer("14_1258904197.80983")
+.sub "_block77"  :anon :subid("15_1258923241.45746") :outer("14_1258923241.45746")
 .annotate "line", 71
     new $P79, "Undef"
     .lex "$name", $P79
@@ -4634,7 +4736,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block110"  :anon :subid("16_1258904197.80983") :outer("14_1258904197.80983")
+.sub "_block110"  :anon :subid("16_1258923241.45746") :outer("14_1258923241.45746")
     .param pmc param_112
 .annotate "line", 82
     .lex "$_", param_112
@@ -4655,7 +4757,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "term:sym<circumfix>"  :subid("17_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "term:sym<circumfix>"  :subid("17_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_131
 .annotate "line", 87
     new $P130, 'ExceptionHandler'
@@ -4685,7 +4787,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "termish"  :subid("18_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "termish"  :subid("18_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_141
 .annotate "line", 89
     new $P140, 'ExceptionHandler'
@@ -4715,7 +4817,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm"  :subid("19_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "nullterm"  :subid("19_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_151
 .annotate "line", 90
     new $P150, 'ExceptionHandler'
@@ -4736,7 +4838,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm_alt"  :subid("20_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "nullterm_alt"  :subid("20_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_158
 .annotate "line", 91
     new $P157, 'ExceptionHandler'
@@ -4766,7 +4868,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "integer"  :subid("21_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "integer"  :subid("21_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_168
 .annotate "line", 93
     new $P167, 'ExceptionHandler'
@@ -4796,7 +4898,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "dec_number"  :subid("22_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "dec_number"  :subid("22_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_178
 .annotate "line", 95
     new $P177, 'ExceptionHandler'
@@ -4819,7 +4921,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "decint"  :subid("23_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "decint"  :subid("23_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_187
 .annotate "line", 97
     new $P186, 'ExceptionHandler'
@@ -4842,7 +4944,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "hexint"  :subid("24_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "hexint"  :subid("24_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_196
 .annotate "line", 98
     new $P195, 'ExceptionHandler'
@@ -4865,7 +4967,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "octint"  :subid("25_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "octint"  :subid("25_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_205
 .annotate "line", 99
     new $P204, 'ExceptionHandler'
@@ -4888,7 +4990,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "binint"  :subid("26_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "binint"  :subid("26_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_214
 .annotate "line", 100
     new $P213, 'ExceptionHandler'
@@ -4911,10 +5013,10 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_EXPR"  :subid("27_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "quote_EXPR"  :subid("27_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_223
 .annotate "line", 102
-    .const 'Sub' $P239 = "28_1258904197.80983" 
+    .const 'Sub' $P239 = "28_1258923241.45746" 
     capture_lex $P239
     new $P222, 'ExceptionHandler'
     set_addr $P222, control_221
@@ -4946,7 +5048,7 @@
     $P235 = $P233."ACCEPTS"($P234)
     if $P235, if_232
 .annotate "line", 108
-    .const 'Sub' $P239 = "28_1258904197.80983" 
+    .const 'Sub' $P239 = "28_1258923241.45746" 
     capture_lex $P239
     $P239()
     goto if_232_end
@@ -4985,9 +5087,9 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block238"  :anon :subid("28_1258904197.80983") :outer("27_1258904197.80983")
+.sub "_block238"  :anon :subid("28_1258923241.45746") :outer("27_1258923241.45746")
 .annotate "line", 108
-    .const 'Sub' $P260 = "29_1258904197.80983" 
+    .const 'Sub' $P260 = "29_1258923241.45746" 
     capture_lex $P260
 .annotate "line", 109
     new $P240, "ResizablePMCArray"
@@ -5027,7 +5129,7 @@
     unless $P255, loop265_done
     shift $P258, $P255
   loop265_redo:
-    .const 'Sub' $P260 = "29_1258904197.80983" 
+    .const 'Sub' $P260 = "29_1258923241.45746" 
     capture_lex $P260
     $P260($P258)
   loop265_next:
@@ -5050,7 +5152,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block259"  :anon :subid("29_1258904197.80983") :outer("28_1258904197.80983")
+.sub "_block259"  :anon :subid("29_1258923241.45746") :outer("28_1258923241.45746")
     .param pmc param_261
 .annotate "line", 112
     .lex "$_", param_261
@@ -5062,10 +5164,10 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_delimited"  :subid("30_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "quote_delimited"  :subid("30_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_284
 .annotate "line", 122
-    .const 'Sub' $P296 = "31_1258904197.80983" 
+    .const 'Sub' $P296 = "31_1258923241.45746" 
     capture_lex $P296
     new $P283, 'ExceptionHandler'
     set_addr $P283, control_282
@@ -5108,7 +5210,7 @@
     unless $P290, loop328_done
     shift $P294, $P290
   loop328_redo:
-    .const 'Sub' $P296 = "31_1258904197.80983" 
+    .const 'Sub' $P296 = "31_1258923241.45746" 
     capture_lex $P296
     $P296($P294)
   loop328_next:
@@ -5186,7 +5288,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block295"  :anon :subid("31_1258904197.80983") :outer("30_1258904197.80983")
+.sub "_block295"  :anon :subid("31_1258923241.45746") :outer("30_1258923241.45746")
     .param pmc param_298
 .annotate "line", 126
     new $P297, "Undef"
@@ -5255,7 +5357,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_atom"  :subid("32_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "quote_atom"  :subid("32_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_359
 .annotate "line", 147
     new $P358, 'ExceptionHandler'
@@ -5304,7 +5406,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<backslash>"  :subid("33_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "quote_escape:sym<backslash>"  :subid("33_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_375
 .annotate "line", 151
     new $P374, 'ExceptionHandler'
@@ -5325,7 +5427,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<stopper>"  :subid("34_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "quote_escape:sym<stopper>"  :subid("34_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_382
 .annotate "line", 152
     new $P381, 'ExceptionHandler'
@@ -5355,7 +5457,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<bs>"  :subid("35_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "quote_escape:sym<bs>"  :subid("35_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_392
 .annotate "line", 154
     new $P391, 'ExceptionHandler'
@@ -5376,7 +5478,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<nl>"  :subid("36_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "quote_escape:sym<nl>"  :subid("36_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_399
 .annotate "line", 155
     new $P398, 'ExceptionHandler'
@@ -5397,7 +5499,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<cr>"  :subid("37_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "quote_escape:sym<cr>"  :subid("37_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_406
 .annotate "line", 156
     new $P405, 'ExceptionHandler'
@@ -5418,7 +5520,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<tab>"  :subid("38_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "quote_escape:sym<tab>"  :subid("38_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_413
 .annotate "line", 157
     new $P412, 'ExceptionHandler'
@@ -5439,7 +5541,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<hex>"  :subid("39_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "quote_escape:sym<hex>"  :subid("39_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_420
 .annotate "line", 159
     new $P419, 'ExceptionHandler'
@@ -5497,7 +5599,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<oct>"  :subid("40_1258904197.80983") :method :outer("11_1258904197.80983")
+.sub "quote_escape:sym<oct>"  :subid("40_1258923241.45746") :method :outer("11_1258923241.45746")
     .param pmc param_437
 .annotate "line", 163
     new $P436, 'ExceptionHandler'

Modified: trunk/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- trunk/ext/nqp-rx/src/stage0/NQP-s0.pir	Sun Nov 22 16:35:00 2009	(r42791)
+++ trunk/ext/nqp-rx/src/stage0/NQP-s0.pir	Sun Nov 22 21:02:11 2009	(r42792)
@@ -15,7 +15,7 @@
 ### .include 'gen/nqp-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1258904213.70809")
+.sub "_block11"  :anon :subid("10_1258923257.41449")
 .annotate "line", 0
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     capture_lex $P14
@@ -29,9 +29,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post312") :outer("10_1258904213.70809")
+.sub "" :load :init :subid("post312") :outer("10_1258923257.41449")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1258904213.70809" 
+    .const 'Sub' $P12 = "10_1258923257.41449" 
     .local pmc block
     set block, $P12
     $P1218 = get_root_global ["parrot"], "P6metaclass"
@@ -40,273 +40,273 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block13"  :subid("11_1258904213.70809") :outer("10_1258904213.70809")
+.sub "_block13"  :subid("11_1258923257.41449") :outer("10_1258923257.41449")
 .annotate "line", 4
     get_hll_global $P1161, ["NQP";"Regex"], "_block1160" 
     capture_lex $P1161
-    .const 'Sub' $P1154 = "297_1258904213.70809" 
+    .const 'Sub' $P1154 = "297_1258923257.41449" 
     capture_lex $P1154
-    .const 'Sub' $P1148 = "295_1258904213.70809" 
+    .const 'Sub' $P1148 = "295_1258923257.41449" 
     capture_lex $P1148
-    .const 'Sub' $P1141 = "293_1258904213.70809" 
+    .const 'Sub' $P1141 = "293_1258923257.41449" 
     capture_lex $P1141
-    .const 'Sub' $P1134 = "291_1258904213.70809" 
+    .const 'Sub' $P1134 = "291_1258923257.41449" 
     capture_lex $P1134
-    .const 'Sub' $P1127 = "289_1258904213.70809" 
+    .const 'Sub' $P1127 = "289_1258923257.41449" 
     capture_lex $P1127
-    .const 'Sub' $P1120 = "287_1258904213.70809" 
+    .const 'Sub' $P1120 = "287_1258923257.41449" 
     capture_lex $P1120
-    .const 'Sub' $P1114 = "285_1258904213.70809" 
+    .const 'Sub' $P1114 = "285_1258923257.41449" 
     capture_lex $P1114
-    .const 'Sub' $P1107 = "283_1258904213.70809" 
+    .const 'Sub' $P1107 = "283_1258923257.41449" 
     capture_lex $P1107
-    .const 'Sub' $P1100 = "281_1258904213.70809" 
+    .const 'Sub' $P1100 = "281_1258923257.41449" 
     capture_lex $P1100
-    .const 'Sub' $P1093 = "279_1258904213.70809" 
+    .const 'Sub' $P1093 = "279_1258923257.41449" 
     capture_lex $P1093
-    .const 'Sub' $P1086 = "277_1258904213.70809" 
+    .const 'Sub' $P1086 = "277_1258923257.41449" 
     capture_lex $P1086
-    .const 'Sub' $P1079 = "275_1258904213.70809" 
+    .const 'Sub' $P1079 = "275_1258923257.41449" 
     capture_lex $P1079
-    .const 'Sub' $P1072 = "273_1258904213.70809" 
+    .const 'Sub' $P1072 = "273_1258923257.41449" 
     capture_lex $P1072
-    .const 'Sub' $P1065 = "271_1258904213.70809" 
+    .const 'Sub' $P1065 = "271_1258923257.41449" 
     capture_lex $P1065
-    .const 'Sub' $P1058 = "269_1258904213.70809" 
+    .const 'Sub' $P1058 = "269_1258923257.41449" 
     capture_lex $P1058
-    .const 'Sub' $P1051 = "267_1258904213.70809" 
+    .const 'Sub' $P1051 = "267_1258923257.41449" 
     capture_lex $P1051
-    .const 'Sub' $P1044 = "265_1258904213.70809" 
+    .const 'Sub' $P1044 = "265_1258923257.41449" 
     capture_lex $P1044
-    .const 'Sub' $P1037 = "263_1258904213.70809" 
+    .const 'Sub' $P1037 = "263_1258923257.41449" 
     capture_lex $P1037
-    .const 'Sub' $P1030 = "261_1258904213.70809" 
+    .const 'Sub' $P1030 = "261_1258923257.41449" 
     capture_lex $P1030
-    .const 'Sub' $P1023 = "259_1258904213.70809" 
+    .const 'Sub' $P1023 = "259_1258923257.41449" 
     capture_lex $P1023
-    .const 'Sub' $P1016 = "257_1258904213.70809" 
+    .const 'Sub' $P1016 = "257_1258923257.41449" 
     capture_lex $P1016
-    .const 'Sub' $P1009 = "255_1258904213.70809" 
+    .const 'Sub' $P1009 = "255_1258923257.41449" 
     capture_lex $P1009
-    .const 'Sub' $P1002 = "253_1258904213.70809" 
+    .const 'Sub' $P1002 = "253_1258923257.41449" 
     capture_lex $P1002
-    .const 'Sub' $P995 = "251_1258904213.70809" 
+    .const 'Sub' $P995 = "251_1258923257.41449" 
     capture_lex $P995
-    .const 'Sub' $P988 = "249_1258904213.70809" 
+    .const 'Sub' $P988 = "249_1258923257.41449" 
     capture_lex $P988
-    .const 'Sub' $P981 = "247_1258904213.70809" 
+    .const 'Sub' $P981 = "247_1258923257.41449" 
     capture_lex $P981
-    .const 'Sub' $P974 = "245_1258904213.70809" 
+    .const 'Sub' $P974 = "245_1258923257.41449" 
     capture_lex $P974
-    .const 'Sub' $P967 = "243_1258904213.70809" 
+    .const 'Sub' $P967 = "243_1258923257.41449" 
     capture_lex $P967
-    .const 'Sub' $P960 = "241_1258904213.70809" 
+    .const 'Sub' $P960 = "241_1258923257.41449" 
     capture_lex $P960
-    .const 'Sub' $P953 = "239_1258904213.70809" 
+    .const 'Sub' $P953 = "239_1258923257.41449" 
     capture_lex $P953
-    .const 'Sub' $P946 = "237_1258904213.70809" 
+    .const 'Sub' $P946 = "237_1258923257.41449" 
     capture_lex $P946
-    .const 'Sub' $P939 = "235_1258904213.70809" 
+    .const 'Sub' $P939 = "235_1258923257.41449" 
     capture_lex $P939
-    .const 'Sub' $P932 = "233_1258904213.70809" 
+    .const 'Sub' $P932 = "233_1258923257.41449" 
     capture_lex $P932
-    .const 'Sub' $P925 = "231_1258904213.70809" 
+    .const 'Sub' $P925 = "231_1258923257.41449" 
     capture_lex $P925
-    .const 'Sub' $P918 = "229_1258904213.70809" 
+    .const 'Sub' $P918 = "229_1258923257.41449" 
     capture_lex $P918
-    .const 'Sub' $P911 = "227_1258904213.70809" 
+    .const 'Sub' $P911 = "227_1258923257.41449" 
     capture_lex $P911
-    .const 'Sub' $P904 = "225_1258904213.70809" 
+    .const 'Sub' $P904 = "225_1258923257.41449" 
     capture_lex $P904
-    .const 'Sub' $P897 = "223_1258904213.70809" 
+    .const 'Sub' $P897 = "223_1258923257.41449" 
     capture_lex $P897
-    .const 'Sub' $P890 = "221_1258904213.70809" 
+    .const 'Sub' $P890 = "221_1258923257.41449" 
     capture_lex $P890
-    .const 'Sub' $P883 = "219_1258904213.70809" 
+    .const 'Sub' $P883 = "219_1258923257.41449" 
     capture_lex $P883
-    .const 'Sub' $P877 = "217_1258904213.70809" 
+    .const 'Sub' $P877 = "217_1258923257.41449" 
     capture_lex $P877
-    .const 'Sub' $P871 = "215_1258904213.70809" 
+    .const 'Sub' $P871 = "215_1258923257.41449" 
     capture_lex $P871
-    .const 'Sub' $P866 = "213_1258904213.70809" 
+    .const 'Sub' $P866 = "213_1258923257.41449" 
     capture_lex $P866
-    .const 'Sub' $P860 = "211_1258904213.70809" 
+    .const 'Sub' $P860 = "211_1258923257.41449" 
     capture_lex $P860
-    .const 'Sub' $P854 = "209_1258904213.70809" 
+    .const 'Sub' $P854 = "209_1258923257.41449" 
     capture_lex $P854
-    .const 'Sub' $P849 = "207_1258904213.70809" 
+    .const 'Sub' $P849 = "207_1258923257.41449" 
     capture_lex $P849
-    .const 'Sub' $P844 = "205_1258904213.70809" 
+    .const 'Sub' $P844 = "205_1258923257.41449" 
     capture_lex $P844
-    .const 'Sub' $P837 = "203_1258904213.70809" 
+    .const 'Sub' $P837 = "203_1258923257.41449" 
     capture_lex $P837
-    .const 'Sub' $P829 = "201_1258904213.70809" 
+    .const 'Sub' $P829 = "201_1258923257.41449" 
     capture_lex $P829
-    .const 'Sub' $P824 = "199_1258904213.70809" 
+    .const 'Sub' $P824 = "199_1258923257.41449" 
     capture_lex $P824
-    .const 'Sub' $P819 = "197_1258904213.70809" 
+    .const 'Sub' $P819 = "197_1258923257.41449" 
     capture_lex $P819
-    .const 'Sub' $P811 = "195_1258904213.70809" 
+    .const 'Sub' $P811 = "195_1258923257.41449" 
     capture_lex $P811
-    .const 'Sub' $P803 = "193_1258904213.70809" 
+    .const 'Sub' $P803 = "193_1258923257.41449" 
     capture_lex $P803
-    .const 'Sub' $P798 = "191_1258904213.70809" 
+    .const 'Sub' $P798 = "191_1258923257.41449" 
     capture_lex $P798
-    .const 'Sub' $P793 = "189_1258904213.70809" 
+    .const 'Sub' $P793 = "189_1258923257.41449" 
     capture_lex $P793
-    .const 'Sub' $P787 = "187_1258904213.70809" 
+    .const 'Sub' $P787 = "187_1258923257.41449" 
     capture_lex $P787
-    .const 'Sub' $P781 = "185_1258904213.70809" 
+    .const 'Sub' $P781 = "185_1258923257.41449" 
     capture_lex $P781
-    .const 'Sub' $P775 = "183_1258904213.70809" 
+    .const 'Sub' $P775 = "183_1258923257.41449" 
     capture_lex $P775
-    .const 'Sub' $P769 = "181_1258904213.70809" 
+    .const 'Sub' $P769 = "181_1258923257.41449" 
     capture_lex $P769
-    .const 'Sub' $P764 = "179_1258904213.70809" 
+    .const 'Sub' $P764 = "179_1258923257.41449" 
     capture_lex $P764
-    .const 'Sub' $P759 = "177_1258904213.70809" 
+    .const 'Sub' $P759 = "177_1258923257.41449" 
     capture_lex $P759
-    .const 'Sub' $P746 = "173_1258904213.70809" 
+    .const 'Sub' $P746 = "173_1258923257.41449" 
     capture_lex $P746
-    .const 'Sub' $P740 = "171_1258904213.70809" 
+    .const 'Sub' $P740 = "171_1258923257.41449" 
     capture_lex $P740
-    .const 'Sub' $P733 = "169_1258904213.70809" 
+    .const 'Sub' $P733 = "169_1258923257.41449" 
     capture_lex $P733
-    .const 'Sub' $P727 = "167_1258904213.70809" 
+    .const 'Sub' $P727 = "167_1258923257.41449" 
     capture_lex $P727
-    .const 'Sub' $P719 = "165_1258904213.70809" 
+    .const 'Sub' $P719 = "165_1258923257.41449" 
     capture_lex $P719
-    .const 'Sub' $P711 = "163_1258904213.70809" 
+    .const 'Sub' $P711 = "163_1258923257.41449" 
     capture_lex $P711
-    .const 'Sub' $P705 = "161_1258904213.70809" 
+    .const 'Sub' $P705 = "161_1258923257.41449" 
     capture_lex $P705
-    .const 'Sub' $P699 = "159_1258904213.70809" 
+    .const 'Sub' $P699 = "159_1258923257.41449" 
     capture_lex $P699
-    .const 'Sub' $P684 = "155_1258904213.70809" 
+    .const 'Sub' $P684 = "155_1258923257.41449" 
     capture_lex $P684
-    .const 'Sub' $P652 = "153_1258904213.70809" 
+    .const 'Sub' $P652 = "153_1258923257.41449" 
     capture_lex $P652
-    .const 'Sub' $P644 = "151_1258904213.70809" 
+    .const 'Sub' $P644 = "151_1258923257.41449" 
     capture_lex $P644
-    .const 'Sub' $P638 = "149_1258904213.70809" 
+    .const 'Sub' $P638 = "149_1258923257.41449" 
     capture_lex $P638
-    .const 'Sub' $P628 = "147_1258904213.70809" 
+    .const 'Sub' $P628 = "147_1258923257.41449" 
     capture_lex $P628
-    .const 'Sub' $P613 = "145_1258904213.70809" 
+    .const 'Sub' $P613 = "145_1258923257.41449" 
     capture_lex $P613
-    .const 'Sub' $P604 = "143_1258904213.70809" 
+    .const 'Sub' $P604 = "143_1258923257.41449" 
     capture_lex $P604
-    .const 'Sub' $P585 = "141_1258904213.70809" 
+    .const 'Sub' $P585 = "141_1258923257.41449" 
     capture_lex $P585
-    .const 'Sub' $P566 = "139_1258904213.70809" 
+    .const 'Sub' $P566 = "139_1258923257.41449" 
     capture_lex $P566
-    .const 'Sub' $P559 = "137_1258904213.70809" 
+    .const 'Sub' $P559 = "137_1258923257.41449" 
     capture_lex $P559
-    .const 'Sub' $P552 = "135_1258904213.70809" 
+    .const 'Sub' $P552 = "135_1258923257.41449" 
     capture_lex $P552
-    .const 'Sub' $P542 = "131_1258904213.70809" 
+    .const 'Sub' $P542 = "131_1258923257.41449" 
     capture_lex $P542
-    .const 'Sub' $P531 = "129_1258904213.70809" 
+    .const 'Sub' $P531 = "129_1258923257.41449" 
     capture_lex $P531
-    .const 'Sub' $P524 = "127_1258904213.70809" 
+    .const 'Sub' $P524 = "127_1258923257.41449" 
     capture_lex $P524
-    .const 'Sub' $P517 = "125_1258904213.70809" 
+    .const 'Sub' $P517 = "125_1258923257.41449" 
     capture_lex $P517
-    .const 'Sub' $P510 = "123_1258904213.70809" 
+    .const 'Sub' $P510 = "123_1258923257.41449" 
     capture_lex $P510
-    .const 'Sub' $P483 = "119_1258904213.70809" 
+    .const 'Sub' $P483 = "119_1258923257.41449" 
     capture_lex $P483
-    .const 'Sub' $P474 = "117_1258904213.70809" 
+    .const 'Sub' $P474 = "117_1258923257.41449" 
     capture_lex $P474
-    .const 'Sub' $P467 = "115_1258904213.70809" 
+    .const 'Sub' $P467 = "115_1258923257.41449" 
     capture_lex $P467
-    .const 'Sub' $P458 = "111_1258904213.70809" 
+    .const 'Sub' $P458 = "111_1258923257.41449" 
     capture_lex $P458
-    .const 'Sub' $P453 = "109_1258904213.70809" 
+    .const 'Sub' $P453 = "109_1258923257.41449" 
     capture_lex $P453
-    .const 'Sub' $P441 = "107_1258904213.70809" 
+    .const 'Sub' $P441 = "107_1258923257.41449" 
     capture_lex $P441
-    .const 'Sub' $P430 = "105_1258904213.70809" 
+    .const 'Sub' $P430 = "105_1258923257.41449" 
     capture_lex $P430
-    .const 'Sub' $P425 = "103_1258904213.70809" 
+    .const 'Sub' $P425 = "103_1258923257.41449" 
     capture_lex $P425
-    .const 'Sub' $P419 = "101_1258904213.70809" 
+    .const 'Sub' $P419 = "101_1258923257.41449" 
     capture_lex $P419
-    .const 'Sub' $P413 = "99_1258904213.70809" 
+    .const 'Sub' $P413 = "99_1258923257.41449" 
     capture_lex $P413
-    .const 'Sub' $P407 = "97_1258904213.70809" 
+    .const 'Sub' $P407 = "97_1258923257.41449" 
     capture_lex $P407
-    .const 'Sub' $P401 = "95_1258904213.70809" 
+    .const 'Sub' $P401 = "95_1258923257.41449" 
     capture_lex $P401
-    .const 'Sub' $P395 = "93_1258904213.70809" 
+    .const 'Sub' $P395 = "93_1258923257.41449" 
     capture_lex $P395
-    .const 'Sub' $P389 = "91_1258904213.70809" 
+    .const 'Sub' $P389 = "91_1258923257.41449" 
     capture_lex $P389
-    .const 'Sub' $P383 = "89_1258904213.70809" 
+    .const 'Sub' $P383 = "89_1258923257.41449" 
     capture_lex $P383
-    .const 'Sub' $P375 = "87_1258904213.70809" 
+    .const 'Sub' $P375 = "87_1258923257.41449" 
     capture_lex $P375
-    .const 'Sub' $P367 = "85_1258904213.70809" 
+    .const 'Sub' $P367 = "85_1258923257.41449" 
     capture_lex $P367
-    .const 'Sub' $P355 = "81_1258904213.70809" 
+    .const 'Sub' $P355 = "81_1258923257.41449" 
     capture_lex $P355
-    .const 'Sub' $P347 = "79_1258904213.70809" 
+    .const 'Sub' $P347 = "79_1258923257.41449" 
     capture_lex $P347
-    .const 'Sub' $P337 = "75_1258904213.70809" 
+    .const 'Sub' $P337 = "75_1258923257.41449" 
     capture_lex $P337
-    .const 'Sub' $P330 = "73_1258904213.70809" 
+    .const 'Sub' $P330 = "73_1258923257.41449" 
     capture_lex $P330
-    .const 'Sub' $P318 = "69_1258904213.70809" 
+    .const 'Sub' $P318 = "69_1258923257.41449" 
     capture_lex $P318
-    .const 'Sub' $P298 = "67_1258904213.70809" 
+    .const 'Sub' $P298 = "67_1258923257.41449" 
     capture_lex $P298
-    .const 'Sub' $P289 = "65_1258904213.70809" 
+    .const 'Sub' $P289 = "65_1258923257.41449" 
     capture_lex $P289
-    .const 'Sub' $P271 = "62_1258904213.70809" 
+    .const 'Sub' $P271 = "62_1258923257.41449" 
     capture_lex $P271
-    .const 'Sub' $P251 = "60_1258904213.70809" 
+    .const 'Sub' $P251 = "60_1258923257.41449" 
     capture_lex $P251
-    .const 'Sub' $P242 = "56_1258904213.70809" 
+    .const 'Sub' $P242 = "56_1258923257.41449" 
     capture_lex $P242
-    .const 'Sub' $P237 = "54_1258904213.70809" 
+    .const 'Sub' $P237 = "54_1258923257.41449" 
     capture_lex $P237
-    .const 'Sub' $P228 = "50_1258904213.70809" 
+    .const 'Sub' $P228 = "50_1258923257.41449" 
     capture_lex $P228
-    .const 'Sub' $P223 = "48_1258904213.70809" 
+    .const 'Sub' $P223 = "48_1258923257.41449" 
     capture_lex $P223
-    .const 'Sub' $P215 = "46_1258904213.70809" 
+    .const 'Sub' $P215 = "46_1258923257.41449" 
     capture_lex $P215
-    .const 'Sub' $P208 = "44_1258904213.70809" 
+    .const 'Sub' $P208 = "44_1258923257.41449" 
     capture_lex $P208
-    .const 'Sub' $P202 = "42_1258904213.70809" 
+    .const 'Sub' $P202 = "42_1258923257.41449" 
     capture_lex $P202
-    .const 'Sub' $P194 = "40_1258904213.70809" 
+    .const 'Sub' $P194 = "40_1258923257.41449" 
     capture_lex $P194
-    .const 'Sub' $P188 = "38_1258904213.70809" 
+    .const 'Sub' $P188 = "38_1258923257.41449" 
     capture_lex $P188
-    .const 'Sub' $P182 = "36_1258904213.70809" 
+    .const 'Sub' $P182 = "36_1258923257.41449" 
     capture_lex $P182
-    .const 'Sub' $P166 = "33_1258904213.70809" 
+    .const 'Sub' $P166 = "33_1258923257.41449" 
     capture_lex $P166
-    .const 'Sub' $P153 = "31_1258904213.70809" 
+    .const 'Sub' $P153 = "31_1258923257.41449" 
     capture_lex $P153
-    .const 'Sub' $P146 = "29_1258904213.70809" 
+    .const 'Sub' $P146 = "29_1258923257.41449" 
     capture_lex $P146
-    .const 'Sub' $P103 = "26_1258904213.70809" 
+    .const 'Sub' $P103 = "26_1258923257.41449" 
     capture_lex $P103
-    .const 'Sub' $P85 = "23_1258904213.70809" 
+    .const 'Sub' $P85 = "23_1258923257.41449" 
     capture_lex $P85
-    .const 'Sub' $P75 = "21_1258904213.70809" 
+    .const 'Sub' $P75 = "21_1258923257.41449" 
     capture_lex $P75
-    .const 'Sub' $P61 = "19_1258904213.70809" 
+    .const 'Sub' $P61 = "19_1258923257.41449" 
     capture_lex $P61
-    .const 'Sub' $P46 = "17_1258904213.70809" 
+    .const 'Sub' $P46 = "17_1258923257.41449" 
     capture_lex $P46
-    .const 'Sub' $P39 = "15_1258904213.70809" 
+    .const 'Sub' $P39 = "15_1258923257.41449" 
     capture_lex $P39
-    .const 'Sub' $P33 = "13_1258904213.70809" 
+    .const 'Sub' $P33 = "13_1258923257.41449" 
     capture_lex $P33
-    .const 'Sub' $P15 = "12_1258904213.70809" 
+    .const 'Sub' $P15 = "12_1258923257.41449" 
     capture_lex $P15
 .annotate "line", 489
     get_hll_global $P1161, ["NQP";"Regex"], "_block1160" 
@@ -318,7 +318,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "" :load :init :subid("post313") :outer("11_1258904213.70809")
+.sub "" :load :init :subid("post313") :outer("11_1258923257.41449")
 .annotate "line", 4
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     .local pmc block
@@ -375,7 +375,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "TOP"  :subid("12_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "TOP"  :subid("12_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     new $P17, 'ExceptionHandler'
     set_addr $P17, control_16
@@ -458,7 +458,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "identifier"  :subid("13_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "identifier"  :subid("13_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx34_tgt
     .local int rx34_pos
@@ -466,23 +466,26 @@
     .local int rx34_eos
     .local int rx34_rep
     .local pmc rx34_cur
-    (rx34_cur, rx34_pos, rx34_tgt, $I10) = self."!cursor_start"()
+    (rx34_cur, rx34_pos, rx34_tgt) = self."!cursor_start"()
     rx34_cur."!cursor_debug"("START ", "identifier")
     .lex unicode:"$\x{a2}", rx34_cur
     .local pmc match
     .lex "$/", match
     length rx34_eos, rx34_tgt
     set rx34_off, 0
-    lt $I10, 2, rx34_start
-    sub rx34_off, $I10, 1
+    lt rx34_pos, 2, rx34_start
+    sub rx34_off, rx34_pos, 1
     substr rx34_tgt, rx34_tgt, rx34_off
   rx34_start:
-    ge rx34_pos, 0, rxscan38_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan38_done
+    goto rxscan38_scan
   rxscan38_loop:
     ($P10) = rx34_cur."from"()
     inc $P10
     set rx34_pos, $P10
     ge rx34_pos, rx34_eos, rxscan38_done
+  rxscan38_scan:
     set_addr $I10, rxscan38_loop
     rx34_cur."!mark_push"(0, rx34_pos, $I10)
   rxscan38_done:
@@ -513,7 +516,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__identifier"  :subid("14_1258904213.70809") :method
+.sub "!PREFIX__identifier"  :subid("14_1258923257.41449") :method
 .annotate "line", 4
     $P36 = self."!PREFIX__!subrule"("ident", "")
     new $P37, "ResizablePMCArray"
@@ -523,7 +526,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "name"  :subid("15_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "name"  :subid("15_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx40_tgt
     .local int rx40_pos
@@ -531,7 +534,7 @@
     .local int rx40_eos
     .local int rx40_rep
     .local pmc rx40_cur
-    (rx40_cur, rx40_pos, rx40_tgt, $I10) = self."!cursor_start"()
+    (rx40_cur, rx40_pos, rx40_tgt) = self."!cursor_start"()
     rx40_cur."!cursor_debug"("START ", "name")
     rx40_cur."!cursor_caparray"("identifier")
     .lex unicode:"$\x{a2}", rx40_cur
@@ -539,16 +542,19 @@
     .lex "$/", match
     length rx40_eos, rx40_tgt
     set rx40_off, 0
-    lt $I10, 2, rx40_start
-    sub rx40_off, $I10, 1
+    lt rx40_pos, 2, rx40_start
+    sub rx40_off, rx40_pos, 1
     substr rx40_tgt, rx40_tgt, rx40_off
   rx40_start:
-    ge rx40_pos, 0, rxscan43_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan43_done
+    goto rxscan43_scan
   rxscan43_loop:
     ($P10) = rx40_cur."from"()
     inc $P10
     set rx40_pos, $P10
     ge rx40_pos, rx40_eos, rxscan43_done
+  rxscan43_scan:
     set_addr $I10, rxscan43_loop
     rx40_cur."!mark_push"(0, rx40_pos, $I10)
   rxscan43_done:
@@ -594,7 +600,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__name"  :subid("16_1258904213.70809") :method
+.sub "!PREFIX__name"  :subid("16_1258923257.41449") :method
 .annotate "line", 4
     new $P42, "ResizablePMCArray"
     push $P42, ""
@@ -603,7 +609,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "deflongname"  :subid("17_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "deflongname"  :subid("17_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx47_tgt
     .local int rx47_pos
@@ -611,7 +617,7 @@
     .local int rx47_eos
     .local int rx47_rep
     .local pmc rx47_cur
-    (rx47_cur, rx47_pos, rx47_tgt, $I10) = self."!cursor_start"()
+    (rx47_cur, rx47_pos, rx47_tgt) = self."!cursor_start"()
     rx47_cur."!cursor_debug"("START ", "deflongname")
     rx47_cur."!cursor_caparray"("sym")
     .lex unicode:"$\x{a2}", rx47_cur
@@ -619,16 +625,19 @@
     .lex "$/", match
     length rx47_eos, rx47_tgt
     set rx47_off, 0
-    lt $I10, 2, rx47_start
-    sub rx47_off, $I10, 1
+    lt rx47_pos, 2, rx47_start
+    sub rx47_off, rx47_pos, 1
     substr rx47_tgt, rx47_tgt, rx47_off
   rx47_start:
-    ge rx47_pos, 0, rxscan51_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan51_done
+    goto rxscan51_scan
   rxscan51_loop:
     ($P10) = rx47_cur."from"()
     inc $P10
     set rx47_pos, $P10
     ge rx47_pos, rx47_eos, rxscan51_done
+  rxscan51_scan:
     set_addr $I10, rxscan51_loop
     rx47_cur."!mark_push"(0, rx47_pos, $I10)
   rxscan51_done:
@@ -759,7 +768,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__deflongname"  :subid("18_1258904213.70809") :method
+.sub "!PREFIX__deflongname"  :subid("18_1258923257.41449") :method
 .annotate "line", 4
     $P49 = self."!PREFIX__!subrule"("identifier", "")
     new $P50, "ResizablePMCArray"
@@ -769,7 +778,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ENDSTMT"  :subid("19_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "ENDSTMT"  :subid("19_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx62_tgt
     .local int rx62_pos
@@ -777,23 +786,26 @@
     .local int rx62_eos
     .local int rx62_rep
     .local pmc rx62_cur
-    (rx62_cur, rx62_pos, rx62_tgt, $I10) = self."!cursor_start"()
+    (rx62_cur, rx62_pos, rx62_tgt) = self."!cursor_start"()
     rx62_cur."!cursor_debug"("START ", "ENDSTMT")
     .lex unicode:"$\x{a2}", rx62_cur
     .local pmc match
     .lex "$/", match
     length rx62_eos, rx62_tgt
     set rx62_off, 0
-    lt $I10, 2, rx62_start
-    sub rx62_off, $I10, 1
+    lt rx62_pos, 2, rx62_start
+    sub rx62_off, rx62_pos, 1
     substr rx62_tgt, rx62_tgt, rx62_off
   rx62_start:
-    ge rx62_pos, 0, rxscan65_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan65_done
+    goto rxscan65_scan
   rxscan65_loop:
     ($P10) = rx62_cur."from"()
     inc $P10
     set rx62_pos, $P10
     ge rx62_pos, rx62_eos, rxscan65_done
+  rxscan65_scan:
     set_addr $I10, rxscan65_loop
     rx62_cur."!mark_push"(0, rx62_pos, $I10)
   rxscan65_done:
@@ -898,7 +910,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ENDSTMT"  :subid("20_1258904213.70809") :method
+.sub "!PREFIX__ENDSTMT"  :subid("20_1258923257.41449") :method
 .annotate "line", 4
     new $P64, "ResizablePMCArray"
     push $P64, ""
@@ -907,7 +919,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ws"  :subid("21_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "ws"  :subid("21_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx76_tgt
     .local int rx76_pos
@@ -915,23 +927,26 @@
     .local int rx76_eos
     .local int rx76_rep
     .local pmc rx76_cur
-    (rx76_cur, rx76_pos, rx76_tgt, $I10) = self."!cursor_start"()
+    (rx76_cur, rx76_pos, rx76_tgt) = self."!cursor_start"()
     rx76_cur."!cursor_debug"("START ", "ws")
     .lex unicode:"$\x{a2}", rx76_cur
     .local pmc match
     .lex "$/", match
     length rx76_eos, rx76_tgt
     set rx76_off, 0
-    lt $I10, 2, rx76_start
-    sub rx76_off, $I10, 1
+    lt rx76_pos, 2, rx76_start
+    sub rx76_off, rx76_pos, 1
     substr rx76_tgt, rx76_tgt, rx76_off
   rx76_start:
-    ge rx76_pos, 0, rxscan79_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan79_done
+    goto rxscan79_scan
   rxscan79_loop:
     ($P10) = rx76_cur."from"()
     inc $P10
     set rx76_pos, $P10
     ge rx76_pos, rx76_eos, rxscan79_done
+  rxscan79_scan:
     set_addr $I10, rxscan79_loop
     rx76_cur."!mark_push"(0, rx76_pos, $I10)
   rxscan79_done:
@@ -1030,7 +1045,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ws"  :subid("22_1258904213.70809") :method
+.sub "!PREFIX__ws"  :subid("22_1258923257.41449") :method
 .annotate "line", 4
     new $P78, "ResizablePMCArray"
     push $P78, ""
@@ -1040,9 +1055,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "unv"  :subid("23_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "unv"  :subid("23_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
-    .const 'Sub' $P93 = "25_1258904213.70809" 
+    .const 'Sub' $P93 = "25_1258923257.41449" 
     capture_lex $P93
     .local string rx86_tgt
     .local int rx86_pos
@@ -1050,23 +1065,26 @@
     .local int rx86_eos
     .local int rx86_rep
     .local pmc rx86_cur
-    (rx86_cur, rx86_pos, rx86_tgt, $I10) = self."!cursor_start"()
+    (rx86_cur, rx86_pos, rx86_tgt) = self."!cursor_start"()
     rx86_cur."!cursor_debug"("START ", "unv")
     .lex unicode:"$\x{a2}", rx86_cur
     .local pmc match
     .lex "$/", match
     length rx86_eos, rx86_tgt
     set rx86_off, 0
-    lt $I10, 2, rx86_start
-    sub rx86_off, $I10, 1
+    lt rx86_pos, 2, rx86_start
+    sub rx86_off, rx86_pos, 1
     substr rx86_tgt, rx86_tgt, rx86_off
   rx86_start:
-    ge rx86_pos, 0, rxscan89_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan89_done
+    goto rxscan89_scan
   rxscan89_loop:
     ($P10) = rx86_cur."from"()
     inc $P10
     set rx86_pos, $P10
     ge rx86_pos, rx86_eos, rxscan89_done
+  rxscan89_scan:
     set_addr $I10, rxscan89_loop
     rx86_cur."!mark_push"(0, rx86_pos, $I10)
   rxscan89_done:
@@ -1085,7 +1103,7 @@
   rxanchor91_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx86_cur."!cursor_pos"(rx86_pos)
-    .const 'Sub' $P93 = "25_1258904213.70809" 
+    .const 'Sub' $P93 = "25_1258923257.41449" 
     capture_lex $P93
     $P10 = rx86_cur."before"($P93)
     unless $P10, rx86_fail
@@ -1164,7 +1182,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__unv"  :subid("24_1258904213.70809") :method
+.sub "!PREFIX__unv"  :subid("24_1258923257.41449") :method
 .annotate "line", 4
     new $P88, "ResizablePMCArray"
     push $P88, ""
@@ -1175,7 +1193,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block92"  :anon :subid("25_1258904213.70809") :method :outer("23_1258904213.70809")
+.sub "_block92"  :anon :subid("25_1258923257.41449") :method :outer("23_1258923257.41449")
 .annotate "line", 45
     .local string rx94_tgt
     .local int rx94_pos
@@ -1183,23 +1201,26 @@
     .local int rx94_eos
     .local int rx94_rep
     .local pmc rx94_cur
-    (rx94_cur, rx94_pos, rx94_tgt, $I10) = self."!cursor_start"()
+    (rx94_cur, rx94_pos, rx94_tgt) = self."!cursor_start"()
     rx94_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx94_cur
     .local pmc match
     .lex "$/", match
     length rx94_eos, rx94_tgt
     set rx94_off, 0
-    lt $I10, 2, rx94_start
-    sub rx94_off, $I10, 1
+    lt rx94_pos, 2, rx94_start
+    sub rx94_off, rx94_pos, 1
     substr rx94_tgt, rx94_tgt, rx94_off
   rx94_start:
-    ge rx94_pos, 0, rxscan95_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan95_done
+    goto rxscan95_scan
   rxscan95_loop:
     ($P10) = rx94_cur."from"()
     inc $P10
     set rx94_pos, $P10
     ge rx94_pos, rx94_eos, rxscan95_done
+  rxscan95_scan:
     set_addr $I10, rxscan95_loop
     rx94_cur."!mark_push"(0, rx94_pos, $I10)
   rxscan95_done:
@@ -1262,9 +1283,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pod_comment"  :subid("26_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "pod_comment"  :subid("26_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
-    .const 'Sub' $P138 = "28_1258904213.70809" 
+    .const 'Sub' $P138 = "28_1258923257.41449" 
     capture_lex $P138
     .local string rx104_tgt
     .local int rx104_pos
@@ -1272,23 +1293,26 @@
     .local int rx104_eos
     .local int rx104_rep
     .local pmc rx104_cur
-    (rx104_cur, rx104_pos, rx104_tgt, $I10) = self."!cursor_start"()
+    (rx104_cur, rx104_pos, rx104_tgt) = self."!cursor_start"()
     rx104_cur."!cursor_debug"("START ", "pod_comment")
     .lex unicode:"$\x{a2}", rx104_cur
     .local pmc match
     .lex "$/", match
     length rx104_eos, rx104_tgt
     set rx104_off, 0
-    lt $I10, 2, rx104_start
-    sub rx104_off, $I10, 1
+    lt rx104_pos, 2, rx104_start
+    sub rx104_off, rx104_pos, 1
     substr rx104_tgt, rx104_tgt, rx104_off
   rx104_start:
-    ge rx104_pos, 0, rxscan107_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan107_done
+    goto rxscan107_scan
   rxscan107_loop:
     ($P10) = rx104_cur."from"()
     inc $P10
     set rx104_pos, $P10
     ge rx104_pos, rx104_eos, rxscan107_done
+  rxscan107_scan:
     set_addr $I10, rxscan107_loop
     rx104_cur."!mark_push"(0, rx104_pos, $I10)
   rxscan107_done:
@@ -1693,7 +1717,7 @@
 .annotate "line", 68
   # rx subrule "before" subtype=zerowidth negate=
     rx104_cur."!cursor_pos"(rx104_pos)
-    .const 'Sub' $P138 = "28_1258904213.70809" 
+    .const 'Sub' $P138 = "28_1258923257.41449" 
     capture_lex $P138
     $P10 = rx104_cur."before"($P138)
     unless $P10, rx104_fail
@@ -1760,7 +1784,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pod_comment"  :subid("27_1258904213.70809") :method
+.sub "!PREFIX__pod_comment"  :subid("27_1258923257.41449") :method
 .annotate "line", 4
     new $P106, "ResizablePMCArray"
     push $P106, ""
@@ -1769,7 +1793,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block137"  :anon :subid("28_1258904213.70809") :method :outer("26_1258904213.70809")
+.sub "_block137"  :anon :subid("28_1258923257.41449") :method :outer("26_1258923257.41449")
 .annotate "line", 68
     .local string rx139_tgt
     .local int rx139_pos
@@ -1777,23 +1801,26 @@
     .local int rx139_eos
     .local int rx139_rep
     .local pmc rx139_cur
-    (rx139_cur, rx139_pos, rx139_tgt, $I10) = self."!cursor_start"()
+    (rx139_cur, rx139_pos, rx139_tgt) = self."!cursor_start"()
     rx139_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx139_cur
     .local pmc match
     .lex "$/", match
     length rx139_eos, rx139_tgt
     set rx139_off, 0
-    lt $I10, 2, rx139_start
-    sub rx139_off, $I10, 1
+    lt rx139_pos, 2, rx139_start
+    sub rx139_off, rx139_pos, 1
     substr rx139_tgt, rx139_tgt, rx139_off
   rx139_start:
-    ge rx139_pos, 0, rxscan140_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan140_done
+    goto rxscan140_scan
   rxscan140_loop:
     ($P10) = rx139_cur."from"()
     inc $P10
     set rx139_pos, $P10
     ge rx139_pos, rx139_eos, rxscan140_done
+  rxscan140_scan:
     set_addr $I10, rxscan140_loop
     rx139_cur."!mark_push"(0, rx139_pos, $I10)
   rxscan140_done:
@@ -1849,7 +1876,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "comp_unit"  :subid("29_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "comp_unit"  :subid("29_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx147_tgt
     .local int rx147_pos
@@ -1857,23 +1884,26 @@
     .local int rx147_eos
     .local int rx147_rep
     .local pmc rx147_cur
-    (rx147_cur, rx147_pos, rx147_tgt, $I10) = self."!cursor_start"()
+    (rx147_cur, rx147_pos, rx147_tgt) = self."!cursor_start"()
     rx147_cur."!cursor_debug"("START ", "comp_unit")
     .lex unicode:"$\x{a2}", rx147_cur
     .local pmc match
     .lex "$/", match
     length rx147_eos, rx147_tgt
     set rx147_off, 0
-    lt $I10, 2, rx147_start
-    sub rx147_off, $I10, 1
+    lt rx147_pos, 2, rx147_start
+    sub rx147_off, rx147_pos, 1
     substr rx147_tgt, rx147_tgt, rx147_off
   rx147_start:
-    ge rx147_pos, 0, rxscan151_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan151_done
+    goto rxscan151_scan
   rxscan151_loop:
     ($P10) = rx147_cur."from"()
     inc $P10
     set rx147_pos, $P10
     ge rx147_pos, rx147_eos, rxscan151_done
+  rxscan151_scan:
     set_addr $I10, rxscan151_loop
     rx147_cur."!mark_push"(0, rx147_pos, $I10)
   rxscan151_done:
@@ -1925,7 +1955,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__comp_unit"  :subid("30_1258904213.70809") :method
+.sub "!PREFIX__comp_unit"  :subid("30_1258923257.41449") :method
 .annotate "line", 4
     $P149 = self."!PREFIX__!subrule"("", "")
     new $P150, "ResizablePMCArray"
@@ -1935,7 +1965,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statementlist"  :subid("31_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "statementlist"  :subid("31_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx154_tgt
     .local int rx154_pos
@@ -1943,7 +1973,7 @@
     .local int rx154_eos
     .local int rx154_rep
     .local pmc rx154_cur
-    (rx154_cur, rx154_pos, rx154_tgt, $I10) = self."!cursor_start"()
+    (rx154_cur, rx154_pos, rx154_tgt) = self."!cursor_start"()
     rx154_cur."!cursor_debug"("START ", "statementlist")
     rx154_cur."!cursor_caparray"("statement")
     .lex unicode:"$\x{a2}", rx154_cur
@@ -1951,16 +1981,19 @@
     .lex "$/", match
     length rx154_eos, rx154_tgt
     set rx154_off, 0
-    lt $I10, 2, rx154_start
-    sub rx154_off, $I10, 1
+    lt rx154_pos, 2, rx154_start
+    sub rx154_off, rx154_pos, 1
     substr rx154_tgt, rx154_tgt, rx154_off
   rx154_start:
-    ge rx154_pos, 0, rxscan157_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan157_done
+    goto rxscan157_scan
   rxscan157_loop:
     ($P10) = rx154_cur."from"()
     inc $P10
     set rx154_pos, $P10
     ge rx154_pos, rx154_eos, rxscan157_done
+  rxscan157_scan:
     set_addr $I10, rxscan157_loop
     rx154_cur."!mark_push"(0, rx154_pos, $I10)
   rxscan157_done:
@@ -2040,7 +2073,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statementlist"  :subid("32_1258904213.70809") :method
+.sub "!PREFIX__statementlist"  :subid("32_1258923257.41449") :method
 .annotate "line", 4
     new $P156, "ResizablePMCArray"
     push $P156, ""
@@ -2050,9 +2083,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement"  :subid("33_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "statement"  :subid("33_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
-    .const 'Sub' $P172 = "35_1258904213.70809" 
+    .const 'Sub' $P172 = "35_1258923257.41449" 
     capture_lex $P172
     .local string rx167_tgt
     .local int rx167_pos
@@ -2060,31 +2093,34 @@
     .local int rx167_eos
     .local int rx167_rep
     .local pmc rx167_cur
-    (rx167_cur, rx167_pos, rx167_tgt, $I10) = self."!cursor_start"()
+    (rx167_cur, rx167_pos, rx167_tgt) = self."!cursor_start"()
     rx167_cur."!cursor_debug"("START ", "statement")
-    rx167_cur."!cursor_caparray"("statement_mod_cond", "statement_mod_loop")
+    rx167_cur."!cursor_caparray"("statement_mod_loop", "statement_mod_cond")
     .lex unicode:"$\x{a2}", rx167_cur
     .local pmc match
     .lex "$/", match
     length rx167_eos, rx167_tgt
     set rx167_off, 0
-    lt $I10, 2, rx167_start
-    sub rx167_off, $I10, 1
+    lt rx167_pos, 2, rx167_start
+    sub rx167_off, rx167_pos, 1
     substr rx167_tgt, rx167_tgt, rx167_off
   rx167_start:
-    ge rx167_pos, 0, rxscan170_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan170_done
+    goto rxscan170_scan
   rxscan170_loop:
     ($P10) = rx167_cur."from"()
     inc $P10
     set rx167_pos, $P10
     ge rx167_pos, rx167_eos, rxscan170_done
+  rxscan170_scan:
     set_addr $I10, rxscan170_loop
     rx167_cur."!mark_push"(0, rx167_pos, $I10)
   rxscan170_done:
 .annotate "line", 90
   # rx subrule "before" subtype=zerowidth negate=1
     rx167_cur."!cursor_pos"(rx167_pos)
-    .const 'Sub' $P172 = "35_1258904213.70809" 
+    .const 'Sub' $P172 = "35_1258923257.41449" 
     capture_lex $P172
     $P10 = rx167_cur."before"($P172)
     if $P10, rx167_fail
@@ -2180,7 +2216,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement"  :subid("34_1258904213.70809") :method
+.sub "!PREFIX__statement"  :subid("34_1258923257.41449") :method
 .annotate "line", 4
     new $P169, "ResizablePMCArray"
     push $P169, ""
@@ -2189,7 +2225,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block171"  :anon :subid("35_1258904213.70809") :method :outer("33_1258904213.70809")
+.sub "_block171"  :anon :subid("35_1258923257.41449") :method :outer("33_1258923257.41449")
 .annotate "line", 90
     .local string rx173_tgt
     .local int rx173_pos
@@ -2197,23 +2233,26 @@
     .local int rx173_eos
     .local int rx173_rep
     .local pmc rx173_cur
-    (rx173_cur, rx173_pos, rx173_tgt, $I10) = self."!cursor_start"()
+    (rx173_cur, rx173_pos, rx173_tgt) = self."!cursor_start"()
     rx173_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx173_cur
     .local pmc match
     .lex "$/", match
     length rx173_eos, rx173_tgt
     set rx173_off, 0
-    lt $I10, 2, rx173_start
-    sub rx173_off, $I10, 1
+    lt rx173_pos, 2, rx173_start
+    sub rx173_off, rx173_pos, 1
     substr rx173_tgt, rx173_tgt, rx173_off
   rx173_start:
-    ge rx173_pos, 0, rxscan174_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan174_done
+    goto rxscan174_scan
   rxscan174_loop:
     ($P10) = rx173_cur."from"()
     inc $P10
     set rx173_pos, $P10
     ge rx173_pos, rx173_eos, rxscan174_done
+  rxscan174_scan:
     set_addr $I10, rxscan174_loop
     rx173_cur."!mark_push"(0, rx173_pos, $I10)
   rxscan174_done:
@@ -2250,7 +2289,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "eat_terminator"  :subid("36_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "eat_terminator"  :subid("36_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx183_tgt
     .local int rx183_pos
@@ -2258,23 +2297,26 @@
     .local int rx183_eos
     .local int rx183_rep
     .local pmc rx183_cur
-    (rx183_cur, rx183_pos, rx183_tgt, $I10) = self."!cursor_start"()
+    (rx183_cur, rx183_pos, rx183_tgt) = self."!cursor_start"()
     rx183_cur."!cursor_debug"("START ", "eat_terminator")
     .lex unicode:"$\x{a2}", rx183_cur
     .local pmc match
     .lex "$/", match
     length rx183_eos, rx183_tgt
     set rx183_off, 0
-    lt $I10, 2, rx183_start
-    sub rx183_off, $I10, 1
+    lt rx183_pos, 2, rx183_start
+    sub rx183_off, rx183_pos, 1
     substr rx183_tgt, rx183_tgt, rx183_off
   rx183_start:
-    ge rx183_pos, 0, rxscan186_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan186_done
+    goto rxscan186_scan
   rxscan186_loop:
     ($P10) = rx183_cur."from"()
     inc $P10
     set rx183_pos, $P10
     ge rx183_pos, rx183_eos, rxscan186_done
+  rxscan186_scan:
     set_addr $I10, rxscan186_loop
     rx183_cur."!mark_push"(0, rx183_pos, $I10)
   rxscan186_done:
@@ -2334,7 +2376,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__eat_terminator"  :subid("37_1258904213.70809") :method
+.sub "!PREFIX__eat_terminator"  :subid("37_1258923257.41449") :method
 .annotate "line", 4
     new $P185, "ResizablePMCArray"
     push $P185, ""
@@ -2346,7 +2388,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "xblock"  :subid("38_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "xblock"  :subid("38_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx189_tgt
     .local int rx189_pos
@@ -2354,23 +2396,26 @@
     .local int rx189_eos
     .local int rx189_rep
     .local pmc rx189_cur
-    (rx189_cur, rx189_pos, rx189_tgt, $I10) = self."!cursor_start"()
+    (rx189_cur, rx189_pos, rx189_tgt) = self."!cursor_start"()
     rx189_cur."!cursor_debug"("START ", "xblock")
     .lex unicode:"$\x{a2}", rx189_cur
     .local pmc match
     .lex "$/", match
     length rx189_eos, rx189_tgt
     set rx189_off, 0
-    lt $I10, 2, rx189_start
-    sub rx189_off, $I10, 1
+    lt rx189_pos, 2, rx189_start
+    sub rx189_off, rx189_pos, 1
     substr rx189_tgt, rx189_tgt, rx189_off
   rx189_start:
-    ge rx189_pos, 0, rxscan193_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan193_done
+    goto rxscan193_scan
   rxscan193_loop:
     ($P10) = rx189_cur."from"()
     inc $P10
     set rx189_pos, $P10
     ge rx189_pos, rx189_eos, rxscan193_done
+  rxscan193_scan:
     set_addr $I10, rxscan193_loop
     rx189_cur."!mark_push"(0, rx189_pos, $I10)
   rxscan193_done:
@@ -2414,7 +2459,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__xblock"  :subid("39_1258904213.70809") :method
+.sub "!PREFIX__xblock"  :subid("39_1258923257.41449") :method
 .annotate "line", 4
     $P191 = self."!PREFIX__!subrule"("EXPR", "")
     new $P192, "ResizablePMCArray"
@@ -2424,7 +2469,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pblock"  :subid("40_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "pblock"  :subid("40_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx195_tgt
     .local int rx195_pos
@@ -2432,23 +2477,26 @@
     .local int rx195_eos
     .local int rx195_rep
     .local pmc rx195_cur
-    (rx195_cur, rx195_pos, rx195_tgt, $I10) = self."!cursor_start"()
+    (rx195_cur, rx195_pos, rx195_tgt) = self."!cursor_start"()
     rx195_cur."!cursor_debug"("START ", "pblock")
     .lex unicode:"$\x{a2}", rx195_cur
     .local pmc match
     .lex "$/", match
     length rx195_eos, rx195_tgt
     set rx195_off, 0
-    lt $I10, 2, rx195_start
-    sub rx195_off, $I10, 1
+    lt rx195_pos, 2, rx195_start
+    sub rx195_off, rx195_pos, 1
     substr rx195_tgt, rx195_tgt, rx195_off
   rx195_start:
-    ge rx195_pos, 0, rxscan200_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan200_done
+    goto rxscan200_scan
   rxscan200_loop:
     ($P10) = rx195_cur."from"()
     inc $P10
     set rx195_pos, $P10
     ge rx195_pos, rx195_eos, rxscan200_done
+  rxscan200_scan:
     set_addr $I10, rxscan200_loop
     rx195_cur."!mark_push"(0, rx195_pos, $I10)
   rxscan200_done:
@@ -2540,7 +2588,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pblock"  :subid("41_1258904213.70809") :method
+.sub "!PREFIX__pblock"  :subid("41_1258923257.41449") :method
 .annotate "line", 4
     $P197 = self."!PREFIX__!subrule"("", "")
     $P198 = self."!PREFIX__!subrule"("", "")
@@ -2553,7 +2601,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "lambda"  :subid("42_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "lambda"  :subid("42_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx203_tgt
     .local int rx203_pos
@@ -2561,23 +2609,26 @@
     .local int rx203_eos
     .local int rx203_rep
     .local pmc rx203_cur
-    (rx203_cur, rx203_pos, rx203_tgt, $I10) = self."!cursor_start"()
+    (rx203_cur, rx203_pos, rx203_tgt) = self."!cursor_start"()
     rx203_cur."!cursor_debug"("START ", "lambda")
     .lex unicode:"$\x{a2}", rx203_cur
     .local pmc match
     .lex "$/", match
     length rx203_eos, rx203_tgt
     set rx203_off, 0
-    lt $I10, 2, rx203_start
-    sub rx203_off, $I10, 1
+    lt rx203_pos, 2, rx203_start
+    sub rx203_off, rx203_pos, 1
     substr rx203_tgt, rx203_tgt, rx203_off
   rx203_start:
-    ge rx203_pos, 0, rxscan206_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan206_done
+    goto rxscan206_scan
   rxscan206_loop:
     ($P10) = rx203_cur."from"()
     inc $P10
     set rx203_pos, $P10
     ge rx203_pos, rx203_eos, rxscan206_done
+  rxscan206_scan:
     set_addr $I10, rxscan206_loop
     rx203_cur."!mark_push"(0, rx203_pos, $I10)
   rxscan206_done:
@@ -2621,7 +2672,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__lambda"  :subid("43_1258904213.70809") :method
+.sub "!PREFIX__lambda"  :subid("43_1258923257.41449") :method
 .annotate "line", 4
     new $P205, "ResizablePMCArray"
     push $P205, "<->"
@@ -2631,7 +2682,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "block"  :subid("44_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "block"  :subid("44_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx209_tgt
     .local int rx209_pos
@@ -2639,23 +2690,26 @@
     .local int rx209_eos
     .local int rx209_rep
     .local pmc rx209_cur
-    (rx209_cur, rx209_pos, rx209_tgt, $I10) = self."!cursor_start"()
+    (rx209_cur, rx209_pos, rx209_tgt) = self."!cursor_start"()
     rx209_cur."!cursor_debug"("START ", "block")
     .lex unicode:"$\x{a2}", rx209_cur
     .local pmc match
     .lex "$/", match
     length rx209_eos, rx209_tgt
     set rx209_off, 0
-    lt $I10, 2, rx209_start
-    sub rx209_off, $I10, 1
+    lt rx209_pos, 2, rx209_start
+    sub rx209_off, rx209_pos, 1
     substr rx209_tgt, rx209_tgt, rx209_off
   rx209_start:
-    ge rx209_pos, 0, rxscan213_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan213_done
+    goto rxscan213_scan
   rxscan213_loop:
     ($P10) = rx209_cur."from"()
     inc $P10
     set rx209_pos, $P10
     ge rx209_pos, rx209_eos, rxscan213_done
+  rxscan213_scan:
     set_addr $I10, rxscan213_loop
     rx209_cur."!mark_push"(0, rx209_pos, $I10)
   rxscan213_done:
@@ -2711,7 +2765,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__block"  :subid("45_1258904213.70809") :method
+.sub "!PREFIX__block"  :subid("45_1258923257.41449") :method
 .annotate "line", 4
     $P211 = self."!PREFIX__!subrule"("", "")
     new $P212, "ResizablePMCArray"
@@ -2722,7 +2776,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blockoid"  :subid("46_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "blockoid"  :subid("46_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx216_tgt
     .local int rx216_pos
@@ -2730,23 +2784,26 @@
     .local int rx216_eos
     .local int rx216_rep
     .local pmc rx216_cur
-    (rx216_cur, rx216_pos, rx216_tgt, $I10) = self."!cursor_start"()
+    (rx216_cur, rx216_pos, rx216_tgt) = self."!cursor_start"()
     rx216_cur."!cursor_debug"("START ", "blockoid")
     .lex unicode:"$\x{a2}", rx216_cur
     .local pmc match
     .lex "$/", match
     length rx216_eos, rx216_tgt
     set rx216_off, 0
-    lt $I10, 2, rx216_start
-    sub rx216_off, $I10, 1
+    lt rx216_pos, 2, rx216_start
+    sub rx216_off, rx216_pos, 1
     substr rx216_tgt, rx216_tgt, rx216_off
   rx216_start:
-    ge rx216_pos, 0, rxscan220_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan220_done
+    goto rxscan220_scan
   rxscan220_loop:
     ($P10) = rx216_cur."from"()
     inc $P10
     set rx216_pos, $P10
     ge rx216_pos, rx216_eos, rxscan220_done
+  rxscan220_scan:
     set_addr $I10, rxscan220_loop
     rx216_cur."!mark_push"(0, rx216_pos, $I10)
   rxscan220_done:
@@ -2814,7 +2871,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blockoid"  :subid("47_1258904213.70809") :method
+.sub "!PREFIX__blockoid"  :subid("47_1258923257.41449") :method
 .annotate "line", 4
     $P218 = self."!PREFIX__!subrule"("", "")
     new $P219, "ResizablePMCArray"
@@ -2824,7 +2881,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "newpad"  :subid("48_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "newpad"  :subid("48_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx224_tgt
     .local int rx224_pos
@@ -2832,23 +2889,26 @@
     .local int rx224_eos
     .local int rx224_rep
     .local pmc rx224_cur
-    (rx224_cur, rx224_pos, rx224_tgt, $I10) = self."!cursor_start"()
+    (rx224_cur, rx224_pos, rx224_tgt) = self."!cursor_start"()
     rx224_cur."!cursor_debug"("START ", "newpad")
     .lex unicode:"$\x{a2}", rx224_cur
     .local pmc match
     .lex "$/", match
     length rx224_eos, rx224_tgt
     set rx224_off, 0
-    lt $I10, 2, rx224_start
-    sub rx224_off, $I10, 1
+    lt rx224_pos, 2, rx224_start
+    sub rx224_off, rx224_pos, 1
     substr rx224_tgt, rx224_tgt, rx224_off
   rx224_start:
-    ge rx224_pos, 0, rxscan227_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan227_done
+    goto rxscan227_scan
   rxscan227_loop:
     ($P10) = rx224_cur."from"()
     inc $P10
     set rx224_pos, $P10
     ge rx224_pos, rx224_eos, rxscan227_done
+  rxscan227_scan:
     set_addr $I10, rxscan227_loop
     rx224_cur."!mark_push"(0, rx224_pos, $I10)
   rxscan227_done:
@@ -2872,7 +2932,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__newpad"  :subid("49_1258904213.70809") :method
+.sub "!PREFIX__newpad"  :subid("49_1258923257.41449") :method
 .annotate "line", 4
     new $P226, "ResizablePMCArray"
     push $P226, ""
@@ -2881,7 +2941,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "finishpad"  :subid("50_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "finishpad"  :subid("50_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx229_tgt
     .local int rx229_pos
@@ -2889,23 +2949,26 @@
     .local int rx229_eos
     .local int rx229_rep
     .local pmc rx229_cur
-    (rx229_cur, rx229_pos, rx229_tgt, $I10) = self."!cursor_start"()
+    (rx229_cur, rx229_pos, rx229_tgt) = self."!cursor_start"()
     rx229_cur."!cursor_debug"("START ", "finishpad")
     .lex unicode:"$\x{a2}", rx229_cur
     .local pmc match
     .lex "$/", match
     length rx229_eos, rx229_tgt
     set rx229_off, 0
-    lt $I10, 2, rx229_start
-    sub rx229_off, $I10, 1
+    lt rx229_pos, 2, rx229_start
+    sub rx229_off, rx229_pos, 1
     substr rx229_tgt, rx229_tgt, rx229_off
   rx229_start:
-    ge rx229_pos, 0, rxscan232_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan232_done
+    goto rxscan232_scan
   rxscan232_loop:
     ($P10) = rx229_cur."from"()
     inc $P10
     set rx229_pos, $P10
     ge rx229_pos, rx229_eos, rxscan232_done
+  rxscan232_scan:
     set_addr $I10, rxscan232_loop
     rx229_cur."!mark_push"(0, rx229_pos, $I10)
   rxscan232_done:
@@ -2929,7 +2992,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__finishpad"  :subid("51_1258904213.70809") :method
+.sub "!PREFIX__finishpad"  :subid("51_1258923257.41449") :method
 .annotate "line", 4
     new $P231, "ResizablePMCArray"
     push $P231, ""
@@ -2938,7 +3001,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator"  :subid("52_1258904213.70809") :method
+.sub "terminator"  :subid("52_1258923257.41449") :method
 .annotate "line", 140
     $P234 = self."!protoregex"("terminator")
     .return ($P234)
@@ -2946,7 +3009,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator"  :subid("53_1258904213.70809") :method
+.sub "!PREFIX__terminator"  :subid("53_1258923257.41449") :method
 .annotate "line", 140
     $P236 = self."!PREFIX__!protoregex"("terminator")
     .return ($P236)
@@ -2954,7 +3017,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<;>"  :subid("54_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "terminator:sym<;>"  :subid("54_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx238_tgt
     .local int rx238_pos
@@ -2962,23 +3025,26 @@
     .local int rx238_eos
     .local int rx238_rep
     .local pmc rx238_cur
-    (rx238_cur, rx238_pos, rx238_tgt, $I10) = self."!cursor_start"()
+    (rx238_cur, rx238_pos, rx238_tgt) = self."!cursor_start"()
     rx238_cur."!cursor_debug"("START ", "terminator:sym<;>")
     .lex unicode:"$\x{a2}", rx238_cur
     .local pmc match
     .lex "$/", match
     length rx238_eos, rx238_tgt
     set rx238_off, 0
-    lt $I10, 2, rx238_start
-    sub rx238_off, $I10, 1
+    lt rx238_pos, 2, rx238_start
+    sub rx238_off, rx238_pos, 1
     substr rx238_tgt, rx238_tgt, rx238_off
   rx238_start:
-    ge rx238_pos, 0, rxscan241_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan241_done
+    goto rxscan241_scan
   rxscan241_loop:
     ($P10) = rx238_cur."from"()
     inc $P10
     set rx238_pos, $P10
     ge rx238_pos, rx238_eos, rxscan241_done
+  rxscan241_scan:
     set_addr $I10, rxscan241_loop
     rx238_cur."!mark_push"(0, rx238_pos, $I10)
   rxscan241_done:
@@ -3008,7 +3074,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<;>"  :subid("55_1258904213.70809") :method
+.sub "!PREFIX__terminator:sym<;>"  :subid("55_1258923257.41449") :method
 .annotate "line", 4
     new $P240, "ResizablePMCArray"
     push $P240, ";"
@@ -3017,7 +3083,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<}>"  :subid("56_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "terminator:sym<}>"  :subid("56_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx243_tgt
     .local int rx243_pos
@@ -3025,23 +3091,26 @@
     .local int rx243_eos
     .local int rx243_rep
     .local pmc rx243_cur
-    (rx243_cur, rx243_pos, rx243_tgt, $I10) = self."!cursor_start"()
+    (rx243_cur, rx243_pos, rx243_tgt) = self."!cursor_start"()
     rx243_cur."!cursor_debug"("START ", "terminator:sym<}>")
     .lex unicode:"$\x{a2}", rx243_cur
     .local pmc match
     .lex "$/", match
     length rx243_eos, rx243_tgt
     set rx243_off, 0
-    lt $I10, 2, rx243_start
-    sub rx243_off, $I10, 1
+    lt rx243_pos, 2, rx243_start
+    sub rx243_off, rx243_pos, 1
     substr rx243_tgt, rx243_tgt, rx243_off
   rx243_start:
-    ge rx243_pos, 0, rxscan246_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan246_done
+    goto rxscan246_scan
   rxscan246_loop:
     ($P10) = rx243_cur."from"()
     inc $P10
     set rx243_pos, $P10
     ge rx243_pos, rx243_eos, rxscan246_done
+  rxscan246_scan:
     set_addr $I10, rxscan246_loop
     rx243_cur."!mark_push"(0, rx243_pos, $I10)
   rxscan246_done:
@@ -3071,7 +3140,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<}>"  :subid("57_1258904213.70809") :method
+.sub "!PREFIX__terminator:sym<}>"  :subid("57_1258923257.41449") :method
 .annotate "line", 4
     new $P245, "ResizablePMCArray"
     push $P245, "}"
@@ -3080,7 +3149,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control"  :subid("58_1258904213.70809") :method
+.sub "statement_control"  :subid("58_1258923257.41449") :method
 .annotate "line", 147
     $P248 = self."!protoregex"("statement_control")
     .return ($P248)
@@ -3088,7 +3157,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control"  :subid("59_1258904213.70809") :method
+.sub "!PREFIX__statement_control"  :subid("59_1258923257.41449") :method
 .annotate "line", 147
     $P250 = self."!PREFIX__!protoregex"("statement_control")
     .return ($P250)
@@ -3096,7 +3165,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<if>"  :subid("60_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "statement_control:sym<if>"  :subid("60_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx252_tgt
     .local int rx252_pos
@@ -3104,7 +3173,7 @@
     .local int rx252_eos
     .local int rx252_rep
     .local pmc rx252_cur
-    (rx252_cur, rx252_pos, rx252_tgt, $I10) = self."!cursor_start"()
+    (rx252_cur, rx252_pos, rx252_tgt) = self."!cursor_start"()
     rx252_cur."!cursor_debug"("START ", "statement_control:sym<if>")
     rx252_cur."!cursor_caparray"("else", "xblock")
     .lex unicode:"$\x{a2}", rx252_cur
@@ -3112,16 +3181,19 @@
     .lex "$/", match
     length rx252_eos, rx252_tgt
     set rx252_off, 0
-    lt $I10, 2, rx252_start
-    sub rx252_off, $I10, 1
+    lt rx252_pos, 2, rx252_start
+    sub rx252_off, rx252_pos, 1
     substr rx252_tgt, rx252_tgt, rx252_off
   rx252_start:
-    ge rx252_pos, 0, rxscan255_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan255_done
+    goto rxscan255_scan
   rxscan255_loop:
     ($P10) = rx252_cur."from"()
     inc $P10
     set rx252_pos, $P10
     ge rx252_pos, rx252_eos, rxscan255_done
+  rxscan255_scan:
     set_addr $I10, rxscan255_loop
     rx252_cur."!mark_push"(0, rx252_pos, $I10)
   rxscan255_done:
@@ -3287,7 +3359,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<if>"  :subid("61_1258904213.70809") :method
+.sub "!PREFIX__statement_control:sym<if>"  :subid("61_1258923257.41449") :method
 .annotate "line", 4
     new $P254, "ResizablePMCArray"
     push $P254, "if"
@@ -3296,9 +3368,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<unless>"  :subid("62_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "statement_control:sym<unless>"  :subid("62_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
-    .const 'Sub' $P282 = "64_1258904213.70809" 
+    .const 'Sub' $P282 = "64_1258923257.41449" 
     capture_lex $P282
     .local string rx272_tgt
     .local int rx272_pos
@@ -3306,23 +3378,26 @@
     .local int rx272_eos
     .local int rx272_rep
     .local pmc rx272_cur
-    (rx272_cur, rx272_pos, rx272_tgt, $I10) = self."!cursor_start"()
+    (rx272_cur, rx272_pos, rx272_tgt) = self."!cursor_start"()
     rx272_cur."!cursor_debug"("START ", "statement_control:sym<unless>")
     .lex unicode:"$\x{a2}", rx272_cur
     .local pmc match
     .lex "$/", match
     length rx272_eos, rx272_tgt
     set rx272_off, 0
-    lt $I10, 2, rx272_start
-    sub rx272_off, $I10, 1
+    lt rx272_pos, 2, rx272_start
+    sub rx272_off, rx272_pos, 1
     substr rx272_tgt, rx272_tgt, rx272_off
   rx272_start:
-    ge rx272_pos, 0, rxscan275_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan275_done
+    goto rxscan275_scan
   rxscan275_loop:
     ($P10) = rx272_cur."from"()
     inc $P10
     set rx272_pos, $P10
     ge rx272_pos, rx272_eos, rxscan275_done
+  rxscan275_scan:
     set_addr $I10, rxscan275_loop
     rx272_cur."!mark_push"(0, rx272_pos, $I10)
   rxscan275_done:
@@ -3383,7 +3458,7 @@
     rx272_pos = $P10."pos"()
   # rx subrule "before" subtype=zerowidth negate=1
     rx272_cur."!cursor_pos"(rx272_pos)
-    .const 'Sub' $P282 = "64_1258904213.70809" 
+    .const 'Sub' $P282 = "64_1258923257.41449" 
     capture_lex $P282
     $P10 = rx272_cur."before"($P282)
     if $P10, rx272_fail
@@ -3435,7 +3510,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<unless>"  :subid("63_1258904213.70809") :method
+.sub "!PREFIX__statement_control:sym<unless>"  :subid("63_1258923257.41449") :method
 .annotate "line", 4
     new $P274, "ResizablePMCArray"
     push $P274, "unless"
@@ -3444,7 +3519,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block281"  :anon :subid("64_1258904213.70809") :method :outer("62_1258904213.70809")
+.sub "_block281"  :anon :subid("64_1258923257.41449") :method :outer("62_1258923257.41449")
 .annotate "line", 159
     .local string rx283_tgt
     .local int rx283_pos
@@ -3452,23 +3527,26 @@
     .local int rx283_eos
     .local int rx283_rep
     .local pmc rx283_cur
-    (rx283_cur, rx283_pos, rx283_tgt, $I10) = self."!cursor_start"()
+    (rx283_cur, rx283_pos, rx283_tgt) = self."!cursor_start"()
     rx283_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx283_cur
     .local pmc match
     .lex "$/", match
     length rx283_eos, rx283_tgt
     set rx283_off, 0
-    lt $I10, 2, rx283_start
-    sub rx283_off, $I10, 1
+    lt rx283_pos, 2, rx283_start
+    sub rx283_off, rx283_pos, 1
     substr rx283_tgt, rx283_tgt, rx283_off
   rx283_start:
-    ge rx283_pos, 0, rxscan284_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan284_done
+    goto rxscan284_scan
   rxscan284_loop:
     ($P10) = rx283_cur."from"()
     inc $P10
     set rx283_pos, $P10
     ge rx283_pos, rx283_eos, rxscan284_done
+  rxscan284_scan:
     set_addr $I10, rxscan284_loop
     rx283_cur."!mark_push"(0, rx283_pos, $I10)
   rxscan284_done:
@@ -3497,7 +3575,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<while>"  :subid("65_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "statement_control:sym<while>"  :subid("65_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx290_tgt
     .local int rx290_pos
@@ -3505,23 +3583,26 @@
     .local int rx290_eos
     .local int rx290_rep
     .local pmc rx290_cur
-    (rx290_cur, rx290_pos, rx290_tgt, $I10) = self."!cursor_start"()
+    (rx290_cur, rx290_pos, rx290_tgt) = self."!cursor_start"()
     rx290_cur."!cursor_debug"("START ", "statement_control:sym<while>")
     .lex unicode:"$\x{a2}", rx290_cur
     .local pmc match
     .lex "$/", match
     length rx290_eos, rx290_tgt
     set rx290_off, 0
-    lt $I10, 2, rx290_start
-    sub rx290_off, $I10, 1
+    lt rx290_pos, 2, rx290_start
+    sub rx290_off, rx290_pos, 1
     substr rx290_tgt, rx290_tgt, rx290_off
   rx290_start:
-    ge rx290_pos, 0, rxscan293_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan293_done
+    goto rxscan293_scan
   rxscan293_loop:
     ($P10) = rx290_cur."from"()
     inc $P10
     set rx290_pos, $P10
     ge rx290_pos, rx290_eos, rxscan293_done
+  rxscan293_scan:
     set_addr $I10, rxscan293_loop
     rx290_cur."!mark_push"(0, rx290_pos, $I10)
   rxscan293_done:
@@ -3604,7 +3685,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<while>"  :subid("66_1258904213.70809") :method
+.sub "!PREFIX__statement_control:sym<while>"  :subid("66_1258923257.41449") :method
 .annotate "line", 4
     new $P292, "ResizablePMCArray"
     push $P292, "until"
@@ -3614,7 +3695,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<repeat>"  :subid("67_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "statement_control:sym<repeat>"  :subid("67_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx299_tgt
     .local int rx299_pos
@@ -3622,23 +3703,26 @@
     .local int rx299_eos
     .local int rx299_rep
     .local pmc rx299_cur
-    (rx299_cur, rx299_pos, rx299_tgt, $I10) = self."!cursor_start"()
+    (rx299_cur, rx299_pos, rx299_tgt) = self."!cursor_start"()
     rx299_cur."!cursor_debug"("START ", "statement_control:sym<repeat>")
     .lex unicode:"$\x{a2}", rx299_cur
     .local pmc match
     .lex "$/", match
     length rx299_eos, rx299_tgt
     set rx299_off, 0
-    lt $I10, 2, rx299_start
-    sub rx299_off, $I10, 1
+    lt rx299_pos, 2, rx299_start
+    sub rx299_off, rx299_pos, 1
     substr rx299_tgt, rx299_tgt, rx299_off
   rx299_start:
-    ge rx299_pos, 0, rxscan302_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan302_done
+    goto rxscan302_scan
   rxscan302_loop:
     ($P10) = rx299_cur."from"()
     inc $P10
     set rx299_pos, $P10
     ge rx299_pos, rx299_eos, rxscan302_done
+  rxscan302_scan:
     set_addr $I10, rxscan302_loop
     rx299_cur."!mark_push"(0, rx299_pos, $I10)
   rxscan302_done:
@@ -3846,7 +3930,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<repeat>"  :subid("68_1258904213.70809") :method
+.sub "!PREFIX__statement_control:sym<repeat>"  :subid("68_1258923257.41449") :method
 .annotate "line", 4
     new $P301, "ResizablePMCArray"
     push $P301, "repeat"
@@ -3855,7 +3939,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<for>"  :subid("69_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "statement_control:sym<for>"  :subid("69_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx319_tgt
     .local int rx319_pos
@@ -3863,23 +3947,26 @@
     .local int rx319_eos
     .local int rx319_rep
     .local pmc rx319_cur
-    (rx319_cur, rx319_pos, rx319_tgt, $I10) = self."!cursor_start"()
+    (rx319_cur, rx319_pos, rx319_tgt) = self."!cursor_start"()
     rx319_cur."!cursor_debug"("START ", "statement_control:sym<for>")
     .lex unicode:"$\x{a2}", rx319_cur
     .local pmc match
     .lex "$/", match
     length rx319_eos, rx319_tgt
     set rx319_off, 0
-    lt $I10, 2, rx319_start
-    sub rx319_off, $I10, 1
+    lt rx319_pos, 2, rx319_start
+    sub rx319_off, rx319_pos, 1
     substr rx319_tgt, rx319_tgt, rx319_off
   rx319_start:
-    ge rx319_pos, 0, rxscan322_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan322_done
+    goto rxscan322_scan
   rxscan322_loop:
     ($P10) = rx319_cur."from"()
     inc $P10
     set rx319_pos, $P10
     ge rx319_pos, rx319_eos, rxscan322_done
+  rxscan322_scan:
     set_addr $I10, rxscan322_loop
     rx319_cur."!mark_push"(0, rx319_pos, $I10)
   rxscan322_done:
@@ -3949,7 +4036,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<for>"  :subid("70_1258904213.70809") :method
+.sub "!PREFIX__statement_control:sym<for>"  :subid("70_1258923257.41449") :method
 .annotate "line", 4
     new $P321, "ResizablePMCArray"
     push $P321, "for"
@@ -3958,7 +4045,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix"  :subid("71_1258904213.70809") :method
+.sub "statement_prefix"  :subid("71_1258923257.41449") :method
 .annotate "line", 180
     $P327 = self."!protoregex"("statement_prefix")
     .return ($P327)
@@ -3966,7 +4053,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix"  :subid("72_1258904213.70809") :method
+.sub "!PREFIX__statement_prefix"  :subid("72_1258923257.41449") :method
 .annotate "line", 180
     $P329 = self."!PREFIX__!protoregex"("statement_prefix")
     .return ($P329)
@@ -3974,7 +4061,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<INIT>"  :subid("73_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "statement_prefix:sym<INIT>"  :subid("73_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx331_tgt
     .local int rx331_pos
@@ -3982,23 +4069,26 @@
     .local int rx331_eos
     .local int rx331_rep
     .local pmc rx331_cur
-    (rx331_cur, rx331_pos, rx331_tgt, $I10) = self."!cursor_start"()
+    (rx331_cur, rx331_pos, rx331_tgt) = self."!cursor_start"()
     rx331_cur."!cursor_debug"("START ", "statement_prefix:sym<INIT>")
     .lex unicode:"$\x{a2}", rx331_cur
     .local pmc match
     .lex "$/", match
     length rx331_eos, rx331_tgt
     set rx331_off, 0
-    lt $I10, 2, rx331_start
-    sub rx331_off, $I10, 1
+    lt rx331_pos, 2, rx331_start
+    sub rx331_off, rx331_pos, 1
     substr rx331_tgt, rx331_tgt, rx331_off
   rx331_start:
-    ge rx331_pos, 0, rxscan335_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan335_done
+    goto rxscan335_scan
   rxscan335_loop:
     ($P10) = rx331_cur."from"()
     inc $P10
     set rx331_pos, $P10
     ge rx331_pos, rx331_eos, rxscan335_done
+  rxscan335_scan:
     set_addr $I10, rxscan335_loop
     rx331_cur."!mark_push"(0, rx331_pos, $I10)
   rxscan335_done:
@@ -4050,7 +4140,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("74_1258904213.70809") :method
+.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("74_1258923257.41449") :method
 .annotate "line", 4
     $P333 = self."!PREFIX__!subrule"("blorst", "INIT")
     new $P334, "ResizablePMCArray"
@@ -4060,7 +4150,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blorst"  :subid("75_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "blorst"  :subid("75_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx338_tgt
     .local int rx338_pos
@@ -4068,23 +4158,26 @@
     .local int rx338_eos
     .local int rx338_rep
     .local pmc rx338_cur
-    (rx338_cur, rx338_pos, rx338_tgt, $I10) = self."!cursor_start"()
+    (rx338_cur, rx338_pos, rx338_tgt) = self."!cursor_start"()
     rx338_cur."!cursor_debug"("START ", "blorst")
     .lex unicode:"$\x{a2}", rx338_cur
     .local pmc match
     .lex "$/", match
     length rx338_eos, rx338_tgt
     set rx338_off, 0
-    lt $I10, 2, rx338_start
-    sub rx338_off, $I10, 1
+    lt rx338_pos, 2, rx338_start
+    sub rx338_off, rx338_pos, 1
     substr rx338_tgt, rx338_tgt, rx338_off
   rx338_start:
-    ge rx338_pos, 0, rxscan341_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan341_done
+    goto rxscan341_scan
   rxscan341_loop:
     ($P10) = rx338_cur."from"()
     inc $P10
     set rx338_pos, $P10
     ge rx338_pos, rx338_eos, rxscan341_done
+  rxscan341_scan:
     set_addr $I10, rxscan341_loop
     rx338_cur."!mark_push"(0, rx338_pos, $I10)
   rxscan341_done:
@@ -4146,7 +4239,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blorst"  :subid("76_1258904213.70809") :method
+.sub "!PREFIX__blorst"  :subid("76_1258923257.41449") :method
 .annotate "line", 4
     new $P340, "ResizablePMCArray"
     push $P340, ""
@@ -4155,7 +4248,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond"  :subid("77_1258904213.70809") :method
+.sub "statement_mod_cond"  :subid("77_1258923257.41449") :method
 .annotate "line", 189
     $P344 = self."!protoregex"("statement_mod_cond")
     .return ($P344)
@@ -4163,7 +4256,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond"  :subid("78_1258904213.70809") :method
+.sub "!PREFIX__statement_mod_cond"  :subid("78_1258923257.41449") :method
 .annotate "line", 189
     $P346 = self."!PREFIX__!protoregex"("statement_mod_cond")
     .return ($P346)
@@ -4171,7 +4264,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<if>"  :subid("79_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "statement_mod_cond:sym<if>"  :subid("79_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx348_tgt
     .local int rx348_pos
@@ -4179,23 +4272,26 @@
     .local int rx348_eos
     .local int rx348_rep
     .local pmc rx348_cur
-    (rx348_cur, rx348_pos, rx348_tgt, $I10) = self."!cursor_start"()
+    (rx348_cur, rx348_pos, rx348_tgt) = self."!cursor_start"()
     rx348_cur."!cursor_debug"("START ", "statement_mod_cond:sym<if>")
     .lex unicode:"$\x{a2}", rx348_cur
     .local pmc match
     .lex "$/", match
     length rx348_eos, rx348_tgt
     set rx348_off, 0
-    lt $I10, 2, rx348_start
-    sub rx348_off, $I10, 1
+    lt rx348_pos, 2, rx348_start
+    sub rx348_off, rx348_pos, 1
     substr rx348_tgt, rx348_tgt, rx348_off
   rx348_start:
-    ge rx348_pos, 0, rxscan351_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan351_done
+    goto rxscan351_scan
   rxscan351_loop:
     ($P10) = rx348_cur."from"()
     inc $P10
     set rx348_pos, $P10
     ge rx348_pos, rx348_eos, rxscan351_done
+  rxscan351_scan:
     set_addr $I10, rxscan351_loop
     rx348_cur."!mark_push"(0, rx348_pos, $I10)
   rxscan351_done:
@@ -4257,7 +4353,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("80_1258904213.70809") :method
+.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("80_1258923257.41449") :method
 .annotate "line", 4
     new $P350, "ResizablePMCArray"
     push $P350, "if"
@@ -4266,7 +4362,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<unless>"  :subid("81_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "statement_mod_cond:sym<unless>"  :subid("81_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx356_tgt
     .local int rx356_pos
@@ -4274,23 +4370,26 @@
     .local int rx356_eos
     .local int rx356_rep
     .local pmc rx356_cur
-    (rx356_cur, rx356_pos, rx356_tgt, $I10) = self."!cursor_start"()
+    (rx356_cur, rx356_pos, rx356_tgt) = self."!cursor_start"()
     rx356_cur."!cursor_debug"("START ", "statement_mod_cond:sym<unless>")
     .lex unicode:"$\x{a2}", rx356_cur
     .local pmc match
     .lex "$/", match
     length rx356_eos, rx356_tgt
     set rx356_off, 0
-    lt $I10, 2, rx356_start
-    sub rx356_off, $I10, 1
+    lt rx356_pos, 2, rx356_start
+    sub rx356_off, rx356_pos, 1
     substr rx356_tgt, rx356_tgt, rx356_off
   rx356_start:
-    ge rx356_pos, 0, rxscan359_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan359_done
+    goto rxscan359_scan
   rxscan359_loop:
     ($P10) = rx356_cur."from"()
     inc $P10
     set rx356_pos, $P10
     ge rx356_pos, rx356_eos, rxscan359_done
+  rxscan359_scan:
     set_addr $I10, rxscan359_loop
     rx356_cur."!mark_push"(0, rx356_pos, $I10)
   rxscan359_done:
@@ -4352,7 +4451,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("82_1258904213.70809") :method
+.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("82_1258923257.41449") :method
 .annotate "line", 4
     new $P358, "ResizablePMCArray"
     push $P358, "unless"
@@ -4361,7 +4460,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop"  :subid("83_1258904213.70809") :method
+.sub "statement_mod_loop"  :subid("83_1258923257.41449") :method
 .annotate "line", 194
     $P364 = self."!protoregex"("statement_mod_loop")
     .return ($P364)
@@ -4369,7 +4468,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop"  :subid("84_1258904213.70809") :method
+.sub "!PREFIX__statement_mod_loop"  :subid("84_1258923257.41449") :method
 .annotate "line", 194
     $P366 = self."!PREFIX__!protoregex"("statement_mod_loop")
     .return ($P366)
@@ -4377,7 +4476,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<while>"  :subid("85_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "statement_mod_loop:sym<while>"  :subid("85_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx368_tgt
     .local int rx368_pos
@@ -4385,23 +4484,26 @@
     .local int rx368_eos
     .local int rx368_rep
     .local pmc rx368_cur
-    (rx368_cur, rx368_pos, rx368_tgt, $I10) = self."!cursor_start"()
+    (rx368_cur, rx368_pos, rx368_tgt) = self."!cursor_start"()
     rx368_cur."!cursor_debug"("START ", "statement_mod_loop:sym<while>")
     .lex unicode:"$\x{a2}", rx368_cur
     .local pmc match
     .lex "$/", match
     length rx368_eos, rx368_tgt
     set rx368_off, 0
-    lt $I10, 2, rx368_start
-    sub rx368_off, $I10, 1
+    lt rx368_pos, 2, rx368_start
+    sub rx368_off, rx368_pos, 1
     substr rx368_tgt, rx368_tgt, rx368_off
   rx368_start:
-    ge rx368_pos, 0, rxscan371_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan371_done
+    goto rxscan371_scan
   rxscan371_loop:
     ($P10) = rx368_cur."from"()
     inc $P10
     set rx368_pos, $P10
     ge rx368_pos, rx368_eos, rxscan371_done
+  rxscan371_scan:
     set_addr $I10, rxscan371_loop
     rx368_cur."!mark_push"(0, rx368_pos, $I10)
   rxscan371_done:
@@ -4463,7 +4565,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("86_1258904213.70809") :method
+.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("86_1258923257.41449") :method
 .annotate "line", 4
     new $P370, "ResizablePMCArray"
     push $P370, "while"
@@ -4472,7 +4574,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<until>"  :subid("87_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "statement_mod_loop:sym<until>"  :subid("87_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx376_tgt
     .local int rx376_pos
@@ -4480,23 +4582,26 @@
     .local int rx376_eos
     .local int rx376_rep
     .local pmc rx376_cur
-    (rx376_cur, rx376_pos, rx376_tgt, $I10) = self."!cursor_start"()
+    (rx376_cur, rx376_pos, rx376_tgt) = self."!cursor_start"()
     rx376_cur."!cursor_debug"("START ", "statement_mod_loop:sym<until>")
     .lex unicode:"$\x{a2}", rx376_cur
     .local pmc match
     .lex "$/", match
     length rx376_eos, rx376_tgt
     set rx376_off, 0
-    lt $I10, 2, rx376_start
-    sub rx376_off, $I10, 1
+    lt rx376_pos, 2, rx376_start
+    sub rx376_off, rx376_pos, 1
     substr rx376_tgt, rx376_tgt, rx376_off
   rx376_start:
-    ge rx376_pos, 0, rxscan379_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan379_done
+    goto rxscan379_scan
   rxscan379_loop:
     ($P10) = rx376_cur."from"()
     inc $P10
     set rx376_pos, $P10
     ge rx376_pos, rx376_eos, rxscan379_done
+  rxscan379_scan:
     set_addr $I10, rxscan379_loop
     rx376_cur."!mark_push"(0, rx376_pos, $I10)
   rxscan379_done:
@@ -4558,7 +4663,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("88_1258904213.70809") :method
+.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("88_1258923257.41449") :method
 .annotate "line", 4
     new $P378, "ResizablePMCArray"
     push $P378, "until"
@@ -4567,7 +4672,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<colonpair>"  :subid("89_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<colonpair>"  :subid("89_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx384_tgt
     .local int rx384_pos
@@ -4575,23 +4680,26 @@
     .local int rx384_eos
     .local int rx384_rep
     .local pmc rx384_cur
-    (rx384_cur, rx384_pos, rx384_tgt, $I10) = self."!cursor_start"()
+    (rx384_cur, rx384_pos, rx384_tgt) = self."!cursor_start"()
     rx384_cur."!cursor_debug"("START ", "term:sym<colonpair>")
     .lex unicode:"$\x{a2}", rx384_cur
     .local pmc match
     .lex "$/", match
     length rx384_eos, rx384_tgt
     set rx384_off, 0
-    lt $I10, 2, rx384_start
-    sub rx384_off, $I10, 1
+    lt rx384_pos, 2, rx384_start
+    sub rx384_off, rx384_pos, 1
     substr rx384_tgt, rx384_tgt, rx384_off
   rx384_start:
-    ge rx384_pos, 0, rxscan388_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan388_done
+    goto rxscan388_scan
   rxscan388_loop:
     ($P10) = rx384_cur."from"()
     inc $P10
     set rx384_pos, $P10
     ge rx384_pos, rx384_eos, rxscan388_done
+  rxscan388_scan:
     set_addr $I10, rxscan388_loop
     rx384_cur."!mark_push"(0, rx384_pos, $I10)
   rxscan388_done:
@@ -4622,7 +4730,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<colonpair>"  :subid("90_1258904213.70809") :method
+.sub "!PREFIX__term:sym<colonpair>"  :subid("90_1258923257.41449") :method
 .annotate "line", 4
     $P386 = self."!PREFIX__!subrule"("colonpair", "")
     new $P387, "ResizablePMCArray"
@@ -4632,7 +4740,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<variable>"  :subid("91_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<variable>"  :subid("91_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx390_tgt
     .local int rx390_pos
@@ -4640,23 +4748,26 @@
     .local int rx390_eos
     .local int rx390_rep
     .local pmc rx390_cur
-    (rx390_cur, rx390_pos, rx390_tgt, $I10) = self."!cursor_start"()
+    (rx390_cur, rx390_pos, rx390_tgt) = self."!cursor_start"()
     rx390_cur."!cursor_debug"("START ", "term:sym<variable>")
     .lex unicode:"$\x{a2}", rx390_cur
     .local pmc match
     .lex "$/", match
     length rx390_eos, rx390_tgt
     set rx390_off, 0
-    lt $I10, 2, rx390_start
-    sub rx390_off, $I10, 1
+    lt rx390_pos, 2, rx390_start
+    sub rx390_off, rx390_pos, 1
     substr rx390_tgt, rx390_tgt, rx390_off
   rx390_start:
-    ge rx390_pos, 0, rxscan394_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan394_done
+    goto rxscan394_scan
   rxscan394_loop:
     ($P10) = rx390_cur."from"()
     inc $P10
     set rx390_pos, $P10
     ge rx390_pos, rx390_eos, rxscan394_done
+  rxscan394_scan:
     set_addr $I10, rxscan394_loop
     rx390_cur."!mark_push"(0, rx390_pos, $I10)
   rxscan394_done:
@@ -4687,7 +4798,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<variable>"  :subid("92_1258904213.70809") :method
+.sub "!PREFIX__term:sym<variable>"  :subid("92_1258923257.41449") :method
 .annotate "line", 4
     $P392 = self."!PREFIX__!subrule"("variable", "")
     new $P393, "ResizablePMCArray"
@@ -4697,7 +4808,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<package_declarator>"  :subid("93_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<package_declarator>"  :subid("93_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx396_tgt
     .local int rx396_pos
@@ -4705,23 +4816,26 @@
     .local int rx396_eos
     .local int rx396_rep
     .local pmc rx396_cur
-    (rx396_cur, rx396_pos, rx396_tgt, $I10) = self."!cursor_start"()
+    (rx396_cur, rx396_pos, rx396_tgt) = self."!cursor_start"()
     rx396_cur."!cursor_debug"("START ", "term:sym<package_declarator>")
     .lex unicode:"$\x{a2}", rx396_cur
     .local pmc match
     .lex "$/", match
     length rx396_eos, rx396_tgt
     set rx396_off, 0
-    lt $I10, 2, rx396_start
-    sub rx396_off, $I10, 1
+    lt rx396_pos, 2, rx396_start
+    sub rx396_off, rx396_pos, 1
     substr rx396_tgt, rx396_tgt, rx396_off
   rx396_start:
-    ge rx396_pos, 0, rxscan400_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan400_done
+    goto rxscan400_scan
   rxscan400_loop:
     ($P10) = rx396_cur."from"()
     inc $P10
     set rx396_pos, $P10
     ge rx396_pos, rx396_eos, rxscan400_done
+  rxscan400_scan:
     set_addr $I10, rxscan400_loop
     rx396_cur."!mark_push"(0, rx396_pos, $I10)
   rxscan400_done:
@@ -4752,7 +4866,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<package_declarator>"  :subid("94_1258904213.70809") :method
+.sub "!PREFIX__term:sym<package_declarator>"  :subid("94_1258923257.41449") :method
 .annotate "line", 4
     $P398 = self."!PREFIX__!subrule"("package_declarator", "")
     new $P399, "ResizablePMCArray"
@@ -4762,7 +4876,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<scope_declarator>"  :subid("95_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<scope_declarator>"  :subid("95_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx402_tgt
     .local int rx402_pos
@@ -4770,23 +4884,26 @@
     .local int rx402_eos
     .local int rx402_rep
     .local pmc rx402_cur
-    (rx402_cur, rx402_pos, rx402_tgt, $I10) = self."!cursor_start"()
+    (rx402_cur, rx402_pos, rx402_tgt) = self."!cursor_start"()
     rx402_cur."!cursor_debug"("START ", "term:sym<scope_declarator>")
     .lex unicode:"$\x{a2}", rx402_cur
     .local pmc match
     .lex "$/", match
     length rx402_eos, rx402_tgt
     set rx402_off, 0
-    lt $I10, 2, rx402_start
-    sub rx402_off, $I10, 1
+    lt rx402_pos, 2, rx402_start
+    sub rx402_off, rx402_pos, 1
     substr rx402_tgt, rx402_tgt, rx402_off
   rx402_start:
-    ge rx402_pos, 0, rxscan406_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan406_done
+    goto rxscan406_scan
   rxscan406_loop:
     ($P10) = rx402_cur."from"()
     inc $P10
     set rx402_pos, $P10
     ge rx402_pos, rx402_eos, rxscan406_done
+  rxscan406_scan:
     set_addr $I10, rxscan406_loop
     rx402_cur."!mark_push"(0, rx402_pos, $I10)
   rxscan406_done:
@@ -4817,7 +4934,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<scope_declarator>"  :subid("96_1258904213.70809") :method
+.sub "!PREFIX__term:sym<scope_declarator>"  :subid("96_1258923257.41449") :method
 .annotate "line", 4
     $P404 = self."!PREFIX__!subrule"("scope_declarator", "")
     new $P405, "ResizablePMCArray"
@@ -4827,7 +4944,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<routine_declarator>"  :subid("97_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<routine_declarator>"  :subid("97_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx408_tgt
     .local int rx408_pos
@@ -4835,23 +4952,26 @@
     .local int rx408_eos
     .local int rx408_rep
     .local pmc rx408_cur
-    (rx408_cur, rx408_pos, rx408_tgt, $I10) = self."!cursor_start"()
+    (rx408_cur, rx408_pos, rx408_tgt) = self."!cursor_start"()
     rx408_cur."!cursor_debug"("START ", "term:sym<routine_declarator>")
     .lex unicode:"$\x{a2}", rx408_cur
     .local pmc match
     .lex "$/", match
     length rx408_eos, rx408_tgt
     set rx408_off, 0
-    lt $I10, 2, rx408_start
-    sub rx408_off, $I10, 1
+    lt rx408_pos, 2, rx408_start
+    sub rx408_off, rx408_pos, 1
     substr rx408_tgt, rx408_tgt, rx408_off
   rx408_start:
-    ge rx408_pos, 0, rxscan412_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan412_done
+    goto rxscan412_scan
   rxscan412_loop:
     ($P10) = rx408_cur."from"()
     inc $P10
     set rx408_pos, $P10
     ge rx408_pos, rx408_eos, rxscan412_done
+  rxscan412_scan:
     set_addr $I10, rxscan412_loop
     rx408_cur."!mark_push"(0, rx408_pos, $I10)
   rxscan412_done:
@@ -4882,7 +5002,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<routine_declarator>"  :subid("98_1258904213.70809") :method
+.sub "!PREFIX__term:sym<routine_declarator>"  :subid("98_1258923257.41449") :method
 .annotate "line", 4
     $P410 = self."!PREFIX__!subrule"("routine_declarator", "")
     new $P411, "ResizablePMCArray"
@@ -4892,7 +5012,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<regex_declarator>"  :subid("99_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<regex_declarator>"  :subid("99_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx414_tgt
     .local int rx414_pos
@@ -4900,23 +5020,26 @@
     .local int rx414_eos
     .local int rx414_rep
     .local pmc rx414_cur
-    (rx414_cur, rx414_pos, rx414_tgt, $I10) = self."!cursor_start"()
+    (rx414_cur, rx414_pos, rx414_tgt) = self."!cursor_start"()
     rx414_cur."!cursor_debug"("START ", "term:sym<regex_declarator>")
     .lex unicode:"$\x{a2}", rx414_cur
     .local pmc match
     .lex "$/", match
     length rx414_eos, rx414_tgt
     set rx414_off, 0
-    lt $I10, 2, rx414_start
-    sub rx414_off, $I10, 1
+    lt rx414_pos, 2, rx414_start
+    sub rx414_off, rx414_pos, 1
     substr rx414_tgt, rx414_tgt, rx414_off
   rx414_start:
-    ge rx414_pos, 0, rxscan418_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan418_done
+    goto rxscan418_scan
   rxscan418_loop:
     ($P10) = rx414_cur."from"()
     inc $P10
     set rx414_pos, $P10
     ge rx414_pos, rx414_eos, rxscan418_done
+  rxscan418_scan:
     set_addr $I10, rxscan418_loop
     rx414_cur."!mark_push"(0, rx414_pos, $I10)
   rxscan418_done:
@@ -4947,7 +5070,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<regex_declarator>"  :subid("100_1258904213.70809") :method
+.sub "!PREFIX__term:sym<regex_declarator>"  :subid("100_1258923257.41449") :method
 .annotate "line", 4
     $P416 = self."!PREFIX__!subrule"("regex_declarator", "")
     new $P417, "ResizablePMCArray"
@@ -4957,7 +5080,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<statement_prefix>"  :subid("101_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<statement_prefix>"  :subid("101_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx420_tgt
     .local int rx420_pos
@@ -4965,23 +5088,26 @@
     .local int rx420_eos
     .local int rx420_rep
     .local pmc rx420_cur
-    (rx420_cur, rx420_pos, rx420_tgt, $I10) = self."!cursor_start"()
+    (rx420_cur, rx420_pos, rx420_tgt) = self."!cursor_start"()
     rx420_cur."!cursor_debug"("START ", "term:sym<statement_prefix>")
     .lex unicode:"$\x{a2}", rx420_cur
     .local pmc match
     .lex "$/", match
     length rx420_eos, rx420_tgt
     set rx420_off, 0
-    lt $I10, 2, rx420_start
-    sub rx420_off, $I10, 1
+    lt rx420_pos, 2, rx420_start
+    sub rx420_off, rx420_pos, 1
     substr rx420_tgt, rx420_tgt, rx420_off
   rx420_start:
-    ge rx420_pos, 0, rxscan424_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan424_done
+    goto rxscan424_scan
   rxscan424_loop:
     ($P10) = rx420_cur."from"()
     inc $P10
     set rx420_pos, $P10
     ge rx420_pos, rx420_eos, rxscan424_done
+  rxscan424_scan:
     set_addr $I10, rxscan424_loop
     rx420_cur."!mark_push"(0, rx420_pos, $I10)
   rxscan424_done:
@@ -5012,7 +5138,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<statement_prefix>"  :subid("102_1258904213.70809") :method
+.sub "!PREFIX__term:sym<statement_prefix>"  :subid("102_1258923257.41449") :method
 .annotate "line", 4
     $P422 = self."!PREFIX__!subrule"("statement_prefix", "")
     new $P423, "ResizablePMCArray"
@@ -5022,7 +5148,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<lambda>"  :subid("103_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<lambda>"  :subid("103_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx426_tgt
     .local int rx426_pos
@@ -5030,23 +5156,26 @@
     .local int rx426_eos
     .local int rx426_rep
     .local pmc rx426_cur
-    (rx426_cur, rx426_pos, rx426_tgt, $I10) = self."!cursor_start"()
+    (rx426_cur, rx426_pos, rx426_tgt) = self."!cursor_start"()
     rx426_cur."!cursor_debug"("START ", "term:sym<lambda>")
     .lex unicode:"$\x{a2}", rx426_cur
     .local pmc match
     .lex "$/", match
     length rx426_eos, rx426_tgt
     set rx426_off, 0
-    lt $I10, 2, rx426_start
-    sub rx426_off, $I10, 1
+    lt rx426_pos, 2, rx426_start
+    sub rx426_off, rx426_pos, 1
     substr rx426_tgt, rx426_tgt, rx426_off
   rx426_start:
-    ge rx426_pos, 0, rxscan429_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan429_done
+    goto rxscan429_scan
   rxscan429_loop:
     ($P10) = rx426_cur."from"()
     inc $P10
     set rx426_pos, $P10
     ge rx426_pos, rx426_eos, rxscan429_done
+  rxscan429_scan:
     set_addr $I10, rxscan429_loop
     rx426_cur."!mark_push"(0, rx426_pos, $I10)
   rxscan429_done:
@@ -5081,7 +5210,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<lambda>"  :subid("104_1258904213.70809") :method
+.sub "!PREFIX__term:sym<lambda>"  :subid("104_1258923257.41449") :method
 .annotate "line", 4
     new $P428, "ResizablePMCArray"
     push $P428, ""
@@ -5090,7 +5219,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "colonpair"  :subid("105_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "colonpair"  :subid("105_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx431_tgt
     .local int rx431_pos
@@ -5098,7 +5227,7 @@
     .local int rx431_eos
     .local int rx431_rep
     .local pmc rx431_cur
-    (rx431_cur, rx431_pos, rx431_tgt, $I10) = self."!cursor_start"()
+    (rx431_cur, rx431_pos, rx431_tgt) = self."!cursor_start"()
     rx431_cur."!cursor_debug"("START ", "colonpair")
     rx431_cur."!cursor_caparray"("circumfix")
     .lex unicode:"$\x{a2}", rx431_cur
@@ -5106,16 +5235,19 @@
     .lex "$/", match
     length rx431_eos, rx431_tgt
     set rx431_off, 0
-    lt $I10, 2, rx431_start
-    sub rx431_off, $I10, 1
+    lt rx431_pos, 2, rx431_start
+    sub rx431_off, rx431_pos, 1
     substr rx431_tgt, rx431_tgt, rx431_off
   rx431_start:
-    ge rx431_pos, 0, rxscan436_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan436_done
+    goto rxscan436_scan
   rxscan436_loop:
     ($P10) = rx431_cur."from"()
     inc $P10
     set rx431_pos, $P10
     ge rx431_pos, rx431_eos, rxscan436_done
+  rxscan436_scan:
     set_addr $I10, rxscan436_loop
     rx431_cur."!mark_push"(0, rx431_pos, $I10)
   rxscan436_done:
@@ -5204,7 +5336,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__colonpair"  :subid("106_1258904213.70809") :method
+.sub "!PREFIX__colonpair"  :subid("106_1258923257.41449") :method
 .annotate "line", 4
     $P433 = self."!PREFIX__!subrule"("identifier", ":")
     $P434 = self."!PREFIX__!subrule"("identifier", ":!")
@@ -5216,7 +5348,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable"  :subid("107_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "variable"  :subid("107_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx442_tgt
     .local int rx442_pos
@@ -5224,7 +5356,7 @@
     .local int rx442_eos
     .local int rx442_rep
     .local pmc rx442_cur
-    (rx442_cur, rx442_pos, rx442_tgt, $I10) = self."!cursor_start"()
+    (rx442_cur, rx442_pos, rx442_tgt) = self."!cursor_start"()
     rx442_cur."!cursor_debug"("START ", "variable")
     rx442_cur."!cursor_caparray"("twigil")
     .lex unicode:"$\x{a2}", rx442_cur
@@ -5232,16 +5364,19 @@
     .lex "$/", match
     length rx442_eos, rx442_tgt
     set rx442_off, 0
-    lt $I10, 2, rx442_start
-    sub rx442_off, $I10, 1
+    lt rx442_pos, 2, rx442_start
+    sub rx442_off, rx442_pos, 1
     substr rx442_tgt, rx442_tgt, rx442_off
   rx442_start:
-    ge rx442_pos, 0, rxscan447_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan447_done
+    goto rxscan447_scan
   rxscan447_loop:
     ($P10) = rx442_cur."from"()
     inc $P10
     set rx442_pos, $P10
     ge rx442_pos, rx442_eos, rxscan447_done
+  rxscan447_scan:
     set_addr $I10, rxscan447_loop
     rx442_cur."!mark_push"(0, rx442_pos, $I10)
   rxscan447_done:
@@ -5368,7 +5503,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable"  :subid("108_1258904213.70809") :method
+.sub "!PREFIX__variable"  :subid("108_1258923257.41449") :method
 .annotate "line", 4
     $P444 = self."!PREFIX__!subrule"("sigil", "")
     $P445 = self."!PREFIX__!subrule"("sigil", "")
@@ -5383,7 +5518,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "sigil"  :subid("109_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "sigil"  :subid("109_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx454_tgt
     .local int rx454_pos
@@ -5391,23 +5526,26 @@
     .local int rx454_eos
     .local int rx454_rep
     .local pmc rx454_cur
-    (rx454_cur, rx454_pos, rx454_tgt, $I10) = self."!cursor_start"()
+    (rx454_cur, rx454_pos, rx454_tgt) = self."!cursor_start"()
     rx454_cur."!cursor_debug"("START ", "sigil")
     .lex unicode:"$\x{a2}", rx454_cur
     .local pmc match
     .lex "$/", match
     length rx454_eos, rx454_tgt
     set rx454_off, 0
-    lt $I10, 2, rx454_start
-    sub rx454_off, $I10, 1
+    lt rx454_pos, 2, rx454_start
+    sub rx454_off, rx454_pos, 1
     substr rx454_tgt, rx454_tgt, rx454_off
   rx454_start:
-    ge rx454_pos, 0, rxscan457_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan457_done
+    goto rxscan457_scan
   rxscan457_loop:
     ($P10) = rx454_cur."from"()
     inc $P10
     set rx454_pos, $P10
     ge rx454_pos, rx454_eos, rxscan457_done
+  rxscan457_scan:
     set_addr $I10, rxscan457_loop
     rx454_cur."!mark_push"(0, rx454_pos, $I10)
   rxscan457_done:
@@ -5438,7 +5576,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__sigil"  :subid("110_1258904213.70809") :method
+.sub "!PREFIX__sigil"  :subid("110_1258923257.41449") :method
 .annotate "line", 4
     new $P456, "ResizablePMCArray"
     push $P456, "&"
@@ -5450,7 +5588,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "twigil"  :subid("111_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "twigil"  :subid("111_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx459_tgt
     .local int rx459_pos
@@ -5458,23 +5596,26 @@
     .local int rx459_eos
     .local int rx459_rep
     .local pmc rx459_cur
-    (rx459_cur, rx459_pos, rx459_tgt, $I10) = self."!cursor_start"()
+    (rx459_cur, rx459_pos, rx459_tgt) = self."!cursor_start"()
     rx459_cur."!cursor_debug"("START ", "twigil")
     .lex unicode:"$\x{a2}", rx459_cur
     .local pmc match
     .lex "$/", match
     length rx459_eos, rx459_tgt
     set rx459_off, 0
-    lt $I10, 2, rx459_start
-    sub rx459_off, $I10, 1
+    lt rx459_pos, 2, rx459_start
+    sub rx459_off, rx459_pos, 1
     substr rx459_tgt, rx459_tgt, rx459_off
   rx459_start:
-    ge rx459_pos, 0, rxscan462_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan462_done
+    goto rxscan462_scan
   rxscan462_loop:
     ($P10) = rx459_cur."from"()
     inc $P10
     set rx459_pos, $P10
     ge rx459_pos, rx459_eos, rxscan462_done
+  rxscan462_scan:
     set_addr $I10, rxscan462_loop
     rx459_cur."!mark_push"(0, rx459_pos, $I10)
   rxscan462_done:
@@ -5505,7 +5646,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__twigil"  :subid("112_1258904213.70809") :method
+.sub "!PREFIX__twigil"  :subid("112_1258923257.41449") :method
 .annotate "line", 4
     new $P461, "ResizablePMCArray"
     push $P461, "?"
@@ -5516,7 +5657,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator"  :subid("113_1258904213.70809") :method
+.sub "package_declarator"  :subid("113_1258923257.41449") :method
 .annotate "line", 228
     $P464 = self."!protoregex"("package_declarator")
     .return ($P464)
@@ -5524,7 +5665,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator"  :subid("114_1258904213.70809") :method
+.sub "!PREFIX__package_declarator"  :subid("114_1258923257.41449") :method
 .annotate "line", 228
     $P466 = self."!PREFIX__!protoregex"("package_declarator")
     .return ($P466)
@@ -5532,7 +5673,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<module>"  :subid("115_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "package_declarator:sym<module>"  :subid("115_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx468_tgt
     .local int rx468_pos
@@ -5540,23 +5681,26 @@
     .local int rx468_eos
     .local int rx468_rep
     .local pmc rx468_cur
-    (rx468_cur, rx468_pos, rx468_tgt, $I10) = self."!cursor_start"()
+    (rx468_cur, rx468_pos, rx468_tgt) = self."!cursor_start"()
     rx468_cur."!cursor_debug"("START ", "package_declarator:sym<module>")
     .lex unicode:"$\x{a2}", rx468_cur
     .local pmc match
     .lex "$/", match
     length rx468_eos, rx468_tgt
     set rx468_off, 0
-    lt $I10, 2, rx468_start
-    sub rx468_off, $I10, 1
+    lt rx468_pos, 2, rx468_start
+    sub rx468_off, rx468_pos, 1
     substr rx468_tgt, rx468_tgt, rx468_off
   rx468_start:
-    ge rx468_pos, 0, rxscan472_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan472_done
+    goto rxscan472_scan
   rxscan472_loop:
     ($P10) = rx468_cur."from"()
     inc $P10
     set rx468_pos, $P10
     ge rx468_pos, rx468_eos, rxscan472_done
+  rxscan472_scan:
     set_addr $I10, rxscan472_loop
     rx468_cur."!mark_push"(0, rx468_pos, $I10)
   rxscan472_done:
@@ -5608,7 +5752,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<module>"  :subid("116_1258904213.70809") :method
+.sub "!PREFIX__package_declarator:sym<module>"  :subid("116_1258923257.41449") :method
 .annotate "line", 4
     $P470 = self."!PREFIX__!subrule"("package_def", "module")
     new $P471, "ResizablePMCArray"
@@ -5618,7 +5762,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<class>"  :subid("117_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "package_declarator:sym<class>"  :subid("117_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx475_tgt
     .local int rx475_pos
@@ -5626,23 +5770,26 @@
     .local int rx475_eos
     .local int rx475_rep
     .local pmc rx475_cur
-    (rx475_cur, rx475_pos, rx475_tgt, $I10) = self."!cursor_start"()
+    (rx475_cur, rx475_pos, rx475_tgt) = self."!cursor_start"()
     rx475_cur."!cursor_debug"("START ", "package_declarator:sym<class>")
     .lex unicode:"$\x{a2}", rx475_cur
     .local pmc match
     .lex "$/", match
     length rx475_eos, rx475_tgt
     set rx475_off, 0
-    lt $I10, 2, rx475_start
-    sub rx475_off, $I10, 1
+    lt rx475_pos, 2, rx475_start
+    sub rx475_off, rx475_pos, 1
     substr rx475_tgt, rx475_tgt, rx475_off
   rx475_start:
-    ge rx475_pos, 0, rxscan480_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan480_done
+    goto rxscan480_scan
   rxscan480_loop:
     ($P10) = rx475_cur."from"()
     inc $P10
     set rx475_pos, $P10
     ge rx475_pos, rx475_eos, rxscan480_done
+  rxscan480_scan:
     set_addr $I10, rxscan480_loop
     rx475_cur."!mark_push"(0, rx475_pos, $I10)
   rxscan480_done:
@@ -5707,7 +5854,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<class>"  :subid("118_1258904213.70809") :method
+.sub "!PREFIX__package_declarator:sym<class>"  :subid("118_1258923257.41449") :method
 .annotate "line", 4
     $P477 = self."!PREFIX__!subrule"("package_def", "grammar")
     $P478 = self."!PREFIX__!subrule"("package_def", "class")
@@ -5719,7 +5866,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_def"  :subid("119_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "package_def"  :subid("119_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx484_tgt
     .local int rx484_pos
@@ -5727,7 +5874,7 @@
     .local int rx484_eos
     .local int rx484_rep
     .local pmc rx484_cur
-    (rx484_cur, rx484_pos, rx484_tgt, $I10) = self."!cursor_start"()
+    (rx484_cur, rx484_pos, rx484_tgt) = self."!cursor_start"()
     rx484_cur."!cursor_debug"("START ", "package_def")
     rx484_cur."!cursor_caparray"("parent")
     .lex unicode:"$\x{a2}", rx484_cur
@@ -5735,16 +5882,19 @@
     .lex "$/", match
     length rx484_eos, rx484_tgt
     set rx484_off, 0
-    lt $I10, 2, rx484_start
-    sub rx484_off, $I10, 1
+    lt rx484_pos, 2, rx484_start
+    sub rx484_off, rx484_pos, 1
     substr rx484_tgt, rx484_tgt, rx484_off
   rx484_start:
-    ge rx484_pos, 0, rxscan487_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan487_done
+    goto rxscan487_scan
   rxscan487_loop:
     ($P10) = rx484_cur."from"()
     inc $P10
     set rx484_pos, $P10
     ge rx484_pos, rx484_eos, rxscan487_done
+  rxscan487_scan:
     set_addr $I10, rxscan487_loop
     rx484_cur."!mark_push"(0, rx484_pos, $I10)
   rxscan487_done:
@@ -5920,7 +6070,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_def"  :subid("120_1258904213.70809") :method
+.sub "!PREFIX__package_def"  :subid("120_1258923257.41449") :method
 .annotate "line", 4
     new $P486, "ResizablePMCArray"
     push $P486, ""
@@ -5929,7 +6079,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator"  :subid("121_1258904213.70809") :method
+.sub "scope_declarator"  :subid("121_1258923257.41449") :method
 .annotate "line", 242
     $P507 = self."!protoregex"("scope_declarator")
     .return ($P507)
@@ -5937,7 +6087,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator"  :subid("122_1258904213.70809") :method
+.sub "!PREFIX__scope_declarator"  :subid("122_1258923257.41449") :method
 .annotate "line", 242
     $P509 = self."!PREFIX__!protoregex"("scope_declarator")
     .return ($P509)
@@ -5945,7 +6095,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<my>"  :subid("123_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "scope_declarator:sym<my>"  :subid("123_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx511_tgt
     .local int rx511_pos
@@ -5953,23 +6103,26 @@
     .local int rx511_eos
     .local int rx511_rep
     .local pmc rx511_cur
-    (rx511_cur, rx511_pos, rx511_tgt, $I10) = self."!cursor_start"()
+    (rx511_cur, rx511_pos, rx511_tgt) = self."!cursor_start"()
     rx511_cur."!cursor_debug"("START ", "scope_declarator:sym<my>")
     .lex unicode:"$\x{a2}", rx511_cur
     .local pmc match
     .lex "$/", match
     length rx511_eos, rx511_tgt
     set rx511_off, 0
-    lt $I10, 2, rx511_start
-    sub rx511_off, $I10, 1
+    lt rx511_pos, 2, rx511_start
+    sub rx511_off, rx511_pos, 1
     substr rx511_tgt, rx511_tgt, rx511_off
   rx511_start:
-    ge rx511_pos, 0, rxscan515_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan515_done
+    goto rxscan515_scan
   rxscan515_loop:
     ($P10) = rx511_cur."from"()
     inc $P10
     set rx511_pos, $P10
     ge rx511_pos, rx511_eos, rxscan515_done
+  rxscan515_scan:
     set_addr $I10, rxscan515_loop
     rx511_cur."!mark_push"(0, rx511_pos, $I10)
   rxscan515_done:
@@ -6021,7 +6174,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<my>"  :subid("124_1258904213.70809") :method
+.sub "!PREFIX__scope_declarator:sym<my>"  :subid("124_1258923257.41449") :method
 .annotate "line", 4
     $P513 = self."!PREFIX__!subrule"("scoped", "my")
     new $P514, "ResizablePMCArray"
@@ -6031,7 +6184,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<our>"  :subid("125_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "scope_declarator:sym<our>"  :subid("125_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx518_tgt
     .local int rx518_pos
@@ -6039,23 +6192,26 @@
     .local int rx518_eos
     .local int rx518_rep
     .local pmc rx518_cur
-    (rx518_cur, rx518_pos, rx518_tgt, $I10) = self."!cursor_start"()
+    (rx518_cur, rx518_pos, rx518_tgt) = self."!cursor_start"()
     rx518_cur."!cursor_debug"("START ", "scope_declarator:sym<our>")
     .lex unicode:"$\x{a2}", rx518_cur
     .local pmc match
     .lex "$/", match
     length rx518_eos, rx518_tgt
     set rx518_off, 0
-    lt $I10, 2, rx518_start
-    sub rx518_off, $I10, 1
+    lt rx518_pos, 2, rx518_start
+    sub rx518_off, rx518_pos, 1
     substr rx518_tgt, rx518_tgt, rx518_off
   rx518_start:
-    ge rx518_pos, 0, rxscan522_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan522_done
+    goto rxscan522_scan
   rxscan522_loop:
     ($P10) = rx518_cur."from"()
     inc $P10
     set rx518_pos, $P10
     ge rx518_pos, rx518_eos, rxscan522_done
+  rxscan522_scan:
     set_addr $I10, rxscan522_loop
     rx518_cur."!mark_push"(0, rx518_pos, $I10)
   rxscan522_done:
@@ -6107,7 +6263,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<our>"  :subid("126_1258904213.70809") :method
+.sub "!PREFIX__scope_declarator:sym<our>"  :subid("126_1258923257.41449") :method
 .annotate "line", 4
     $P520 = self."!PREFIX__!subrule"("scoped", "our")
     new $P521, "ResizablePMCArray"
@@ -6117,7 +6273,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<has>"  :subid("127_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "scope_declarator:sym<has>"  :subid("127_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx525_tgt
     .local int rx525_pos
@@ -6125,23 +6281,26 @@
     .local int rx525_eos
     .local int rx525_rep
     .local pmc rx525_cur
-    (rx525_cur, rx525_pos, rx525_tgt, $I10) = self."!cursor_start"()
+    (rx525_cur, rx525_pos, rx525_tgt) = self."!cursor_start"()
     rx525_cur."!cursor_debug"("START ", "scope_declarator:sym<has>")
     .lex unicode:"$\x{a2}", rx525_cur
     .local pmc match
     .lex "$/", match
     length rx525_eos, rx525_tgt
     set rx525_off, 0
-    lt $I10, 2, rx525_start
-    sub rx525_off, $I10, 1
+    lt rx525_pos, 2, rx525_start
+    sub rx525_off, rx525_pos, 1
     substr rx525_tgt, rx525_tgt, rx525_off
   rx525_start:
-    ge rx525_pos, 0, rxscan529_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan529_done
+    goto rxscan529_scan
   rxscan529_loop:
     ($P10) = rx525_cur."from"()
     inc $P10
     set rx525_pos, $P10
     ge rx525_pos, rx525_eos, rxscan529_done
+  rxscan529_scan:
     set_addr $I10, rxscan529_loop
     rx525_cur."!mark_push"(0, rx525_pos, $I10)
   rxscan529_done:
@@ -6193,7 +6352,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<has>"  :subid("128_1258904213.70809") :method
+.sub "!PREFIX__scope_declarator:sym<has>"  :subid("128_1258923257.41449") :method
 .annotate "line", 4
     $P527 = self."!PREFIX__!subrule"("scoped", "has")
     new $P528, "ResizablePMCArray"
@@ -6203,7 +6362,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scoped"  :subid("129_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "scoped"  :subid("129_1258923257.41449") :method :outer("11_1258923257.41449")
     .param pmc param_532
 .annotate "line", 247
     .lex "$*SCOPE", param_532
@@ -6214,23 +6373,26 @@
     .local int rx533_eos
     .local int rx533_rep
     .local pmc rx533_cur
-    (rx533_cur, rx533_pos, rx533_tgt, $I10) = self."!cursor_start"()
+    (rx533_cur, rx533_pos, rx533_tgt) = self."!cursor_start"()
     rx533_cur."!cursor_debug"("START ", "scoped")
     .lex unicode:"$\x{a2}", rx533_cur
     .local pmc match
     .lex "$/", match
     length rx533_eos, rx533_tgt
     set rx533_off, 0
-    lt $I10, 2, rx533_start
-    sub rx533_off, $I10, 1
+    lt rx533_pos, 2, rx533_start
+    sub rx533_off, rx533_pos, 1
     substr rx533_tgt, rx533_tgt, rx533_off
   rx533_start:
-    ge rx533_pos, 0, rxscan536_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan536_done
+    goto rxscan536_scan
   rxscan536_loop:
     ($P10) = rx533_cur."from"()
     inc $P10
     set rx533_pos, $P10
     ge rx533_pos, rx533_eos, rxscan536_done
+  rxscan536_scan:
     set_addr $I10, rxscan536_loop
     rx533_cur."!mark_push"(0, rx533_pos, $I10)
   rxscan536_done:
@@ -6297,7 +6459,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scoped"  :subid("130_1258904213.70809") :method
+.sub "!PREFIX__scoped"  :subid("130_1258923257.41449") :method
 .annotate "line", 4
     new $P535, "ResizablePMCArray"
     push $P535, ""
@@ -6307,7 +6469,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable_declarator"  :subid("131_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "variable_declarator"  :subid("131_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx543_tgt
     .local int rx543_pos
@@ -6315,23 +6477,26 @@
     .local int rx543_eos
     .local int rx543_rep
     .local pmc rx543_cur
-    (rx543_cur, rx543_pos, rx543_tgt, $I10) = self."!cursor_start"()
+    (rx543_cur, rx543_pos, rx543_tgt) = self."!cursor_start"()
     rx543_cur."!cursor_debug"("START ", "variable_declarator")
     .lex unicode:"$\x{a2}", rx543_cur
     .local pmc match
     .lex "$/", match
     length rx543_eos, rx543_tgt
     set rx543_off, 0
-    lt $I10, 2, rx543_start
-    sub rx543_off, $I10, 1
+    lt rx543_pos, 2, rx543_start
+    sub rx543_off, rx543_pos, 1
     substr rx543_tgt, rx543_tgt, rx543_off
   rx543_start:
-    ge rx543_pos, 0, rxscan547_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan547_done
+    goto rxscan547_scan
   rxscan547_loop:
     ($P10) = rx543_cur."from"()
     inc $P10
     set rx543_pos, $P10
     ge rx543_pos, rx543_eos, rxscan547_done
+  rxscan547_scan:
     set_addr $I10, rxscan547_loop
     rx543_cur."!mark_push"(0, rx543_pos, $I10)
   rxscan547_done:
@@ -6362,7 +6527,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable_declarator"  :subid("132_1258904213.70809") :method
+.sub "!PREFIX__variable_declarator"  :subid("132_1258923257.41449") :method
 .annotate "line", 4
     $P545 = self."!PREFIX__!subrule"("variable", "")
     new $P546, "ResizablePMCArray"
@@ -6372,7 +6537,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator"  :subid("133_1258904213.70809") :method
+.sub "routine_declarator"  :subid("133_1258923257.41449") :method
 .annotate "line", 254
     $P549 = self."!protoregex"("routine_declarator")
     .return ($P549)
@@ -6380,7 +6545,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator"  :subid("134_1258904213.70809") :method
+.sub "!PREFIX__routine_declarator"  :subid("134_1258923257.41449") :method
 .annotate "line", 254
     $P551 = self."!PREFIX__!protoregex"("routine_declarator")
     .return ($P551)
@@ -6388,7 +6553,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<sub>"  :subid("135_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "routine_declarator:sym<sub>"  :subid("135_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx553_tgt
     .local int rx553_pos
@@ -6396,23 +6561,26 @@
     .local int rx553_eos
     .local int rx553_rep
     .local pmc rx553_cur
-    (rx553_cur, rx553_pos, rx553_tgt, $I10) = self."!cursor_start"()
+    (rx553_cur, rx553_pos, rx553_tgt) = self."!cursor_start"()
     rx553_cur."!cursor_debug"("START ", "routine_declarator:sym<sub>")
     .lex unicode:"$\x{a2}", rx553_cur
     .local pmc match
     .lex "$/", match
     length rx553_eos, rx553_tgt
     set rx553_off, 0
-    lt $I10, 2, rx553_start
-    sub rx553_off, $I10, 1
+    lt rx553_pos, 2, rx553_start
+    sub rx553_off, rx553_pos, 1
     substr rx553_tgt, rx553_tgt, rx553_off
   rx553_start:
-    ge rx553_pos, 0, rxscan557_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan557_done
+    goto rxscan557_scan
   rxscan557_loop:
     ($P10) = rx553_cur."from"()
     inc $P10
     set rx553_pos, $P10
     ge rx553_pos, rx553_eos, rxscan557_done
+  rxscan557_scan:
     set_addr $I10, rxscan557_loop
     rx553_cur."!mark_push"(0, rx553_pos, $I10)
   rxscan557_done:
@@ -6464,7 +6632,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("136_1258904213.70809") :method
+.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("136_1258923257.41449") :method
 .annotate "line", 4
     $P555 = self."!PREFIX__!subrule"("routine_def", "sub")
     new $P556, "ResizablePMCArray"
@@ -6474,7 +6642,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<method>"  :subid("137_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "routine_declarator:sym<method>"  :subid("137_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx560_tgt
     .local int rx560_pos
@@ -6482,23 +6650,26 @@
     .local int rx560_eos
     .local int rx560_rep
     .local pmc rx560_cur
-    (rx560_cur, rx560_pos, rx560_tgt, $I10) = self."!cursor_start"()
+    (rx560_cur, rx560_pos, rx560_tgt) = self."!cursor_start"()
     rx560_cur."!cursor_debug"("START ", "routine_declarator:sym<method>")
     .lex unicode:"$\x{a2}", rx560_cur
     .local pmc match
     .lex "$/", match
     length rx560_eos, rx560_tgt
     set rx560_off, 0
-    lt $I10, 2, rx560_start
-    sub rx560_off, $I10, 1
+    lt rx560_pos, 2, rx560_start
+    sub rx560_off, rx560_pos, 1
     substr rx560_tgt, rx560_tgt, rx560_off
   rx560_start:
-    ge rx560_pos, 0, rxscan564_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan564_done
+    goto rxscan564_scan
   rxscan564_loop:
     ($P10) = rx560_cur."from"()
     inc $P10
     set rx560_pos, $P10
     ge rx560_pos, rx560_eos, rxscan564_done
+  rxscan564_scan:
     set_addr $I10, rxscan564_loop
     rx560_cur."!mark_push"(0, rx560_pos, $I10)
   rxscan564_done:
@@ -6550,7 +6721,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<method>"  :subid("138_1258904213.70809") :method
+.sub "!PREFIX__routine_declarator:sym<method>"  :subid("138_1258923257.41449") :method
 .annotate "line", 4
     $P562 = self."!PREFIX__!subrule"("method_def", "method")
     new $P563, "ResizablePMCArray"
@@ -6560,7 +6731,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_def"  :subid("139_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "routine_def"  :subid("139_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx567_tgt
     .local int rx567_pos
@@ -6568,7 +6739,7 @@
     .local int rx567_eos
     .local int rx567_rep
     .local pmc rx567_cur
-    (rx567_cur, rx567_pos, rx567_tgt, $I10) = self."!cursor_start"()
+    (rx567_cur, rx567_pos, rx567_tgt) = self."!cursor_start"()
     rx567_cur."!cursor_debug"("START ", "routine_def")
     rx567_cur."!cursor_caparray"("deflongname")
     .lex unicode:"$\x{a2}", rx567_cur
@@ -6576,16 +6747,19 @@
     .lex "$/", match
     length rx567_eos, rx567_tgt
     set rx567_off, 0
-    lt $I10, 2, rx567_start
-    sub rx567_off, $I10, 1
+    lt rx567_pos, 2, rx567_start
+    sub rx567_off, rx567_pos, 1
     substr rx567_tgt, rx567_tgt, rx567_off
   rx567_start:
-    ge rx567_pos, 0, rxscan570_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan570_done
+    goto rxscan570_scan
   rxscan570_loop:
     ($P10) = rx567_cur."from"()
     inc $P10
     set rx567_pos, $P10
     ge rx567_pos, rx567_eos, rxscan570_done
+  rxscan570_scan:
     set_addr $I10, rxscan570_loop
     rx567_cur."!mark_push"(0, rx567_pos, $I10)
   rxscan570_done:
@@ -6727,7 +6901,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_def"  :subid("140_1258904213.70809") :method
+.sub "!PREFIX__routine_def"  :subid("140_1258923257.41449") :method
 .annotate "line", 4
     new $P569, "ResizablePMCArray"
     push $P569, ""
@@ -6736,7 +6910,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "method_def"  :subid("141_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "method_def"  :subid("141_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx586_tgt
     .local int rx586_pos
@@ -6744,7 +6918,7 @@
     .local int rx586_eos
     .local int rx586_rep
     .local pmc rx586_cur
-    (rx586_cur, rx586_pos, rx586_tgt, $I10) = self."!cursor_start"()
+    (rx586_cur, rx586_pos, rx586_tgt) = self."!cursor_start"()
     rx586_cur."!cursor_debug"("START ", "method_def")
     rx586_cur."!cursor_caparray"("deflongname")
     .lex unicode:"$\x{a2}", rx586_cur
@@ -6752,16 +6926,19 @@
     .lex "$/", match
     length rx586_eos, rx586_tgt
     set rx586_off, 0
-    lt $I10, 2, rx586_start
-    sub rx586_off, $I10, 1
+    lt rx586_pos, 2, rx586_start
+    sub rx586_off, rx586_pos, 1
     substr rx586_tgt, rx586_tgt, rx586_off
   rx586_start:
-    ge rx586_pos, 0, rxscan589_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan589_done
+    goto rxscan589_scan
   rxscan589_loop:
     ($P10) = rx586_cur."from"()
     inc $P10
     set rx586_pos, $P10
     ge rx586_pos, rx586_eos, rxscan589_done
+  rxscan589_scan:
     set_addr $I10, rxscan589_loop
     rx586_cur."!mark_push"(0, rx586_pos, $I10)
   rxscan589_done:
@@ -6903,7 +7080,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__method_def"  :subid("142_1258904213.70809") :method
+.sub "!PREFIX__method_def"  :subid("142_1258923257.41449") :method
 .annotate "line", 4
     new $P588, "ResizablePMCArray"
     push $P588, ""
@@ -6912,7 +7089,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "signature"  :subid("143_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "signature"  :subid("143_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx605_tgt
     .local int rx605_pos
@@ -6920,7 +7097,7 @@
     .local int rx605_eos
     .local int rx605_rep
     .local pmc rx605_cur
-    (rx605_cur, rx605_pos, rx605_tgt, $I10) = self."!cursor_start"()
+    (rx605_cur, rx605_pos, rx605_tgt) = self."!cursor_start"()
     rx605_cur."!cursor_debug"("START ", "signature")
     rx605_cur."!cursor_caparray"("parameter")
     .lex unicode:"$\x{a2}", rx605_cur
@@ -6928,16 +7105,19 @@
     .lex "$/", match
     length rx605_eos, rx605_tgt
     set rx605_off, 0
-    lt $I10, 2, rx605_start
-    sub rx605_off, $I10, 1
+    lt rx605_pos, 2, rx605_start
+    sub rx605_off, rx605_pos, 1
     substr rx605_tgt, rx605_tgt, rx605_off
   rx605_start:
-    ge rx605_pos, 0, rxscan608_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan608_done
+    goto rxscan608_scan
   rxscan608_loop:
     ($P10) = rx605_cur."from"()
     inc $P10
     set rx605_pos, $P10
     ge rx605_pos, rx605_eos, rxscan608_done
+  rxscan608_scan:
     set_addr $I10, rxscan608_loop
     rx605_cur."!mark_push"(0, rx605_pos, $I10)
   rxscan608_done:
@@ -6999,7 +7179,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__signature"  :subid("144_1258904213.70809") :method
+.sub "!PREFIX__signature"  :subid("144_1258923257.41449") :method
 .annotate "line", 4
     new $P607, "ResizablePMCArray"
     push $P607, ""
@@ -7008,7 +7188,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "parameter"  :subid("145_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "parameter"  :subid("145_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx614_tgt
     .local int rx614_pos
@@ -7016,7 +7196,7 @@
     .local int rx614_eos
     .local int rx614_rep
     .local pmc rx614_cur
-    (rx614_cur, rx614_pos, rx614_tgt, $I10) = self."!cursor_start"()
+    (rx614_cur, rx614_pos, rx614_tgt) = self."!cursor_start"()
     rx614_cur."!cursor_debug"("START ", "parameter")
     rx614_cur."!cursor_caparray"("default_value")
     .lex unicode:"$\x{a2}", rx614_cur
@@ -7024,16 +7204,19 @@
     .lex "$/", match
     length rx614_eos, rx614_tgt
     set rx614_off, 0
-    lt $I10, 2, rx614_start
-    sub rx614_off, $I10, 1
+    lt rx614_pos, 2, rx614_start
+    sub rx614_off, rx614_pos, 1
     substr rx614_tgt, rx614_tgt, rx614_off
   rx614_start:
-    ge rx614_pos, 0, rxscan620_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan620_done
+    goto rxscan620_scan
   rxscan620_loop:
     ($P10) = rx614_cur."from"()
     inc $P10
     set rx614_pos, $P10
     ge rx614_pos, rx614_eos, rxscan620_done
+  rxscan620_scan:
     set_addr $I10, rxscan620_loop
     rx614_cur."!mark_push"(0, rx614_pos, $I10)
   rxscan620_done:
@@ -7166,7 +7349,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__parameter"  :subid("146_1258904213.70809") :method
+.sub "!PREFIX__parameter"  :subid("146_1258923257.41449") :method
 .annotate "line", 4
     $P616 = self."!PREFIX__!subrule"("named_param", "")
     $P617 = self."!PREFIX__!subrule"("param_var", "")
@@ -7180,7 +7363,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "param_var"  :subid("147_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "param_var"  :subid("147_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx629_tgt
     .local int rx629_pos
@@ -7188,7 +7371,7 @@
     .local int rx629_eos
     .local int rx629_rep
     .local pmc rx629_cur
-    (rx629_cur, rx629_pos, rx629_tgt, $I10) = self."!cursor_start"()
+    (rx629_cur, rx629_pos, rx629_tgt) = self."!cursor_start"()
     rx629_cur."!cursor_debug"("START ", "param_var")
     rx629_cur."!cursor_caparray"("twigil")
     .lex unicode:"$\x{a2}", rx629_cur
@@ -7196,16 +7379,19 @@
     .lex "$/", match
     length rx629_eos, rx629_tgt
     set rx629_off, 0
-    lt $I10, 2, rx629_start
-    sub rx629_off, $I10, 1
+    lt rx629_pos, 2, rx629_start
+    sub rx629_off, rx629_pos, 1
     substr rx629_tgt, rx629_tgt, rx629_off
   rx629_start:
-    ge rx629_pos, 0, rxscan633_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan633_done
+    goto rxscan633_scan
   rxscan633_loop:
     ($P10) = rx629_cur."from"()
     inc $P10
     set rx629_pos, $P10
     ge rx629_pos, rx629_eos, rxscan633_done
+  rxscan633_scan:
     set_addr $I10, rxscan633_loop
     rx629_cur."!mark_push"(0, rx629_pos, $I10)
   rxscan633_done:
@@ -7285,7 +7471,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__param_var"  :subid("148_1258904213.70809") :method
+.sub "!PREFIX__param_var"  :subid("148_1258923257.41449") :method
 .annotate "line", 4
     $P631 = self."!PREFIX__!subrule"("sigil", "")
     new $P632, "ResizablePMCArray"
@@ -7295,7 +7481,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "named_param"  :subid("149_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "named_param"  :subid("149_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx639_tgt
     .local int rx639_pos
@@ -7303,23 +7489,26 @@
     .local int rx639_eos
     .local int rx639_rep
     .local pmc rx639_cur
-    (rx639_cur, rx639_pos, rx639_tgt, $I10) = self."!cursor_start"()
+    (rx639_cur, rx639_pos, rx639_tgt) = self."!cursor_start"()
     rx639_cur."!cursor_debug"("START ", "named_param")
     .lex unicode:"$\x{a2}", rx639_cur
     .local pmc match
     .lex "$/", match
     length rx639_eos, rx639_tgt
     set rx639_off, 0
-    lt $I10, 2, rx639_start
-    sub rx639_off, $I10, 1
+    lt rx639_pos, 2, rx639_start
+    sub rx639_off, rx639_pos, 1
     substr rx639_tgt, rx639_tgt, rx639_off
   rx639_start:
-    ge rx639_pos, 0, rxscan643_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan643_done
+    goto rxscan643_scan
   rxscan643_loop:
     ($P10) = rx639_cur."from"()
     inc $P10
     set rx639_pos, $P10
     ge rx639_pos, rx639_eos, rxscan643_done
+  rxscan643_scan:
     set_addr $I10, rxscan643_loop
     rx639_cur."!mark_push"(0, rx639_pos, $I10)
   rxscan643_done:
@@ -7358,7 +7547,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__named_param"  :subid("150_1258904213.70809") :method
+.sub "!PREFIX__named_param"  :subid("150_1258923257.41449") :method
 .annotate "line", 4
     $P641 = self."!PREFIX__!subrule"("param_var", ":")
     new $P642, "ResizablePMCArray"
@@ -7368,7 +7557,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "default_value"  :subid("151_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "default_value"  :subid("151_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx645_tgt
     .local int rx645_pos
@@ -7376,23 +7565,26 @@
     .local int rx645_eos
     .local int rx645_rep
     .local pmc rx645_cur
-    (rx645_cur, rx645_pos, rx645_tgt, $I10) = self."!cursor_start"()
+    (rx645_cur, rx645_pos, rx645_tgt) = self."!cursor_start"()
     rx645_cur."!cursor_debug"("START ", "default_value")
     .lex unicode:"$\x{a2}", rx645_cur
     .local pmc match
     .lex "$/", match
     length rx645_eos, rx645_tgt
     set rx645_off, 0
-    lt $I10, 2, rx645_start
-    sub rx645_off, $I10, 1
+    lt rx645_pos, 2, rx645_start
+    sub rx645_off, rx645_pos, 1
     substr rx645_tgt, rx645_tgt, rx645_off
   rx645_start:
-    ge rx645_pos, 0, rxscan648_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan648_done
+    goto rxscan648_scan
   rxscan648_loop:
     ($P10) = rx645_cur."from"()
     inc $P10
     set rx645_pos, $P10
     ge rx645_pos, rx645_eos, rxscan648_done
+  rxscan648_scan:
     set_addr $I10, rxscan648_loop
     rx645_cur."!mark_push"(0, rx645_pos, $I10)
   rxscan648_done:
@@ -7445,7 +7637,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__default_value"  :subid("152_1258904213.70809") :method
+.sub "!PREFIX__default_value"  :subid("152_1258923257.41449") :method
 .annotate "line", 4
     new $P647, "ResizablePMCArray"
     push $P647, ""
@@ -7454,7 +7646,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "regex_declarator"  :subid("153_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "regex_declarator"  :subid("153_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx653_tgt
     .local int rx653_pos
@@ -7462,7 +7654,7 @@
     .local int rx653_eos
     .local int rx653_rep
     .local pmc rx653_cur
-    (rx653_cur, rx653_pos, rx653_tgt, $I10) = self."!cursor_start"()
+    (rx653_cur, rx653_pos, rx653_tgt) = self."!cursor_start"()
     rx653_cur."!cursor_debug"("START ", "regex_declarator")
     rx653_cur."!cursor_caparray"("signature")
     .lex unicode:"$\x{a2}", rx653_cur
@@ -7470,16 +7662,19 @@
     .lex "$/", match
     length rx653_eos, rx653_tgt
     set rx653_off, 0
-    lt $I10, 2, rx653_start
-    sub rx653_off, $I10, 1
+    lt rx653_pos, 2, rx653_start
+    sub rx653_off, rx653_pos, 1
     substr rx653_tgt, rx653_tgt, rx653_off
   rx653_start:
-    ge rx653_pos, 0, rxscan656_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan656_done
+    goto rxscan656_scan
   rxscan656_loop:
     ($P10) = rx653_cur."from"()
     inc $P10
     set rx653_pos, $P10
     ge rx653_pos, rx653_eos, rxscan656_done
+  rxscan656_scan:
     set_addr $I10, rxscan656_loop
     rx653_cur."!mark_push"(0, rx653_pos, $I10)
   rxscan656_done:
@@ -7818,7 +8013,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__regex_declarator"  :subid("154_1258904213.70809") :method
+.sub "!PREFIX__regex_declarator"  :subid("154_1258923257.41449") :method
 .annotate "line", 4
     new $P655, "ResizablePMCArray"
     push $P655, ""
@@ -7827,7 +8022,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "dotty"  :subid("155_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "dotty"  :subid("155_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx685_tgt
     .local int rx685_pos
@@ -7835,7 +8030,7 @@
     .local int rx685_eos
     .local int rx685_rep
     .local pmc rx685_cur
-    (rx685_cur, rx685_pos, rx685_tgt, $I10) = self."!cursor_start"()
+    (rx685_cur, rx685_pos, rx685_tgt) = self."!cursor_start"()
     rx685_cur."!cursor_debug"("START ", "dotty")
     rx685_cur."!cursor_caparray"("args")
     .lex unicode:"$\x{a2}", rx685_cur
@@ -7843,16 +8038,19 @@
     .lex "$/", match
     length rx685_eos, rx685_tgt
     set rx685_off, 0
-    lt $I10, 2, rx685_start
-    sub rx685_off, $I10, 1
+    lt rx685_pos, 2, rx685_start
+    sub rx685_off, rx685_pos, 1
     substr rx685_tgt, rx685_tgt, rx685_off
   rx685_start:
-    ge rx685_pos, 0, rxscan689_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan689_done
+    goto rxscan689_scan
   rxscan689_loop:
     ($P10) = rx685_cur."from"()
     inc $P10
     set rx685_pos, $P10
     ge rx685_pos, rx685_eos, rxscan689_done
+  rxscan689_scan:
     set_addr $I10, rxscan689_loop
     rx685_cur."!mark_push"(0, rx685_pos, $I10)
   rxscan689_done:
@@ -7980,7 +8178,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__dotty"  :subid("156_1258904213.70809") :method
+.sub "!PREFIX__dotty"  :subid("156_1258923257.41449") :method
 .annotate "line", 4
     $P687 = self."!PREFIX__!subrule"("longname=identifier", ".")
     new $P688, "ResizablePMCArray"
@@ -7992,7 +8190,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term"  :subid("157_1258904213.70809") :method
+.sub "term"  :subid("157_1258923257.41449") :method
 .annotate "line", 323
     $P696 = self."!protoregex"("term")
     .return ($P696)
@@ -8000,7 +8198,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term"  :subid("158_1258904213.70809") :method
+.sub "!PREFIX__term"  :subid("158_1258923257.41449") :method
 .annotate "line", 323
     $P698 = self."!PREFIX__!protoregex"("term")
     .return ($P698)
@@ -8008,7 +8206,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<self>"  :subid("159_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<self>"  :subid("159_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx700_tgt
     .local int rx700_pos
@@ -8016,23 +8214,26 @@
     .local int rx700_eos
     .local int rx700_rep
     .local pmc rx700_cur
-    (rx700_cur, rx700_pos, rx700_tgt, $I10) = self."!cursor_start"()
+    (rx700_cur, rx700_pos, rx700_tgt) = self."!cursor_start"()
     rx700_cur."!cursor_debug"("START ", "term:sym<self>")
     .lex unicode:"$\x{a2}", rx700_cur
     .local pmc match
     .lex "$/", match
     length rx700_eos, rx700_tgt
     set rx700_off, 0
-    lt $I10, 2, rx700_start
-    sub rx700_off, $I10, 1
+    lt rx700_pos, 2, rx700_start
+    sub rx700_off, rx700_pos, 1
     substr rx700_tgt, rx700_tgt, rx700_off
   rx700_start:
-    ge rx700_pos, 0, rxscan703_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan703_done
+    goto rxscan703_scan
   rxscan703_loop:
     ($P10) = rx700_cur."from"()
     inc $P10
     set rx700_pos, $P10
     ge rx700_pos, rx700_eos, rxscan703_done
+  rxscan703_scan:
     set_addr $I10, rxscan703_loop
     rx700_cur."!mark_push"(0, rx700_pos, $I10)
   rxscan703_done:
@@ -8085,7 +8286,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<self>"  :subid("160_1258904213.70809") :method
+.sub "!PREFIX__term:sym<self>"  :subid("160_1258923257.41449") :method
 .annotate "line", 4
     new $P702, "ResizablePMCArray"
     push $P702, "self"
@@ -8094,7 +8295,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<identifier>"  :subid("161_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<identifier>"  :subid("161_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx706_tgt
     .local int rx706_pos
@@ -8102,23 +8303,26 @@
     .local int rx706_eos
     .local int rx706_rep
     .local pmc rx706_cur
-    (rx706_cur, rx706_pos, rx706_tgt, $I10) = self."!cursor_start"()
+    (rx706_cur, rx706_pos, rx706_tgt) = self."!cursor_start"()
     rx706_cur."!cursor_debug"("START ", "term:sym<identifier>")
     .lex unicode:"$\x{a2}", rx706_cur
     .local pmc match
     .lex "$/", match
     length rx706_eos, rx706_tgt
     set rx706_off, 0
-    lt $I10, 2, rx706_start
-    sub rx706_off, $I10, 1
+    lt rx706_pos, 2, rx706_start
+    sub rx706_off, rx706_pos, 1
     substr rx706_tgt, rx706_tgt, rx706_off
   rx706_start:
-    ge rx706_pos, 0, rxscan710_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan710_done
+    goto rxscan710_scan
   rxscan710_loop:
     ($P10) = rx706_cur."from"()
     inc $P10
     set rx706_pos, $P10
     ge rx706_pos, rx706_eos, rxscan710_done
+  rxscan710_scan:
     set_addr $I10, rxscan710_loop
     rx706_cur."!mark_push"(0, rx706_pos, $I10)
   rxscan710_done:
@@ -8163,7 +8367,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<identifier>"  :subid("162_1258904213.70809") :method
+.sub "!PREFIX__term:sym<identifier>"  :subid("162_1258923257.41449") :method
 .annotate "line", 4
     $P708 = self."!PREFIX__!subrule"("identifier", "")
     new $P709, "ResizablePMCArray"
@@ -8173,7 +8377,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<name>"  :subid("163_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<name>"  :subid("163_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx712_tgt
     .local int rx712_pos
@@ -8181,7 +8385,7 @@
     .local int rx712_eos
     .local int rx712_rep
     .local pmc rx712_cur
-    (rx712_cur, rx712_pos, rx712_tgt, $I10) = self."!cursor_start"()
+    (rx712_cur, rx712_pos, rx712_tgt) = self."!cursor_start"()
     rx712_cur."!cursor_debug"("START ", "term:sym<name>")
     rx712_cur."!cursor_caparray"("args")
     .lex unicode:"$\x{a2}", rx712_cur
@@ -8189,16 +8393,19 @@
     .lex "$/", match
     length rx712_eos, rx712_tgt
     set rx712_off, 0
-    lt $I10, 2, rx712_start
-    sub rx712_off, $I10, 1
+    lt rx712_pos, 2, rx712_start
+    sub rx712_off, rx712_pos, 1
     substr rx712_tgt, rx712_tgt, rx712_off
   rx712_start:
-    ge rx712_pos, 0, rxscan716_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan716_done
+    goto rxscan716_scan
   rxscan716_loop:
     ($P10) = rx712_cur."from"()
     inc $P10
     set rx712_pos, $P10
     ge rx712_pos, rx712_eos, rxscan716_done
+  rxscan716_scan:
     set_addr $I10, rxscan716_loop
     rx712_cur."!mark_push"(0, rx712_pos, $I10)
   rxscan716_done:
@@ -8243,7 +8450,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<name>"  :subid("164_1258904213.70809") :method
+.sub "!PREFIX__term:sym<name>"  :subid("164_1258923257.41449") :method
 .annotate "line", 4
     $P714 = self."!PREFIX__!subrule"("name", "")
     new $P715, "ResizablePMCArray"
@@ -8253,7 +8460,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<pir::op>"  :subid("165_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<pir::op>"  :subid("165_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx720_tgt
     .local int rx720_pos
@@ -8261,7 +8468,7 @@
     .local int rx720_eos
     .local int rx720_rep
     .local pmc rx720_cur
-    (rx720_cur, rx720_pos, rx720_tgt, $I10) = self."!cursor_start"()
+    (rx720_cur, rx720_pos, rx720_tgt) = self."!cursor_start"()
     rx720_cur."!cursor_debug"("START ", "term:sym<pir::op>")
     rx720_cur."!cursor_caparray"("args")
     .lex unicode:"$\x{a2}", rx720_cur
@@ -8269,16 +8476,19 @@
     .lex "$/", match
     length rx720_eos, rx720_tgt
     set rx720_off, 0
-    lt $I10, 2, rx720_start
-    sub rx720_off, $I10, 1
+    lt rx720_pos, 2, rx720_start
+    sub rx720_off, rx720_pos, 1
     substr rx720_tgt, rx720_tgt, rx720_off
   rx720_start:
-    ge rx720_pos, 0, rxscan723_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan723_done
+    goto rxscan723_scan
   rxscan723_loop:
     ($P10) = rx720_cur."from"()
     inc $P10
     set rx720_pos, $P10
     ge rx720_pos, rx720_eos, rxscan723_done
+  rxscan723_scan:
     set_addr $I10, rxscan723_loop
     rx720_cur."!mark_push"(0, rx720_pos, $I10)
   rxscan723_done:
@@ -8343,7 +8553,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<pir::op>"  :subid("166_1258904213.70809") :method
+.sub "!PREFIX__term:sym<pir::op>"  :subid("166_1258923257.41449") :method
 .annotate "line", 4
     new $P722, "ResizablePMCArray"
     push $P722, "pir::"
@@ -8352,7 +8562,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "args"  :subid("167_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "args"  :subid("167_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx728_tgt
     .local int rx728_pos
@@ -8360,23 +8570,26 @@
     .local int rx728_eos
     .local int rx728_rep
     .local pmc rx728_cur
-    (rx728_cur, rx728_pos, rx728_tgt, $I10) = self."!cursor_start"()
+    (rx728_cur, rx728_pos, rx728_tgt) = self."!cursor_start"()
     rx728_cur."!cursor_debug"("START ", "args")
     .lex unicode:"$\x{a2}", rx728_cur
     .local pmc match
     .lex "$/", match
     length rx728_eos, rx728_tgt
     set rx728_off, 0
-    lt $I10, 2, rx728_start
-    sub rx728_off, $I10, 1
+    lt rx728_pos, 2, rx728_start
+    sub rx728_off, rx728_pos, 1
     substr rx728_tgt, rx728_tgt, rx728_off
   rx728_start:
-    ge rx728_pos, 0, rxscan732_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan732_done
+    goto rxscan732_scan
   rxscan732_loop:
     ($P10) = rx728_cur."from"()
     inc $P10
     set rx728_pos, $P10
     ge rx728_pos, rx728_eos, rxscan732_done
+  rxscan732_scan:
     set_addr $I10, rxscan732_loop
     rx728_cur."!mark_push"(0, rx728_pos, $I10)
   rxscan732_done:
@@ -8421,7 +8634,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__args"  :subid("168_1258904213.70809") :method
+.sub "!PREFIX__args"  :subid("168_1258923257.41449") :method
 .annotate "line", 4
     $P730 = self."!PREFIX__!subrule"("arglist", "(")
     new $P731, "ResizablePMCArray"
@@ -8431,7 +8644,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "arglist"  :subid("169_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "arglist"  :subid("169_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx734_tgt
     .local int rx734_pos
@@ -8439,23 +8652,26 @@
     .local int rx734_eos
     .local int rx734_rep
     .local pmc rx734_cur
-    (rx734_cur, rx734_pos, rx734_tgt, $I10) = self."!cursor_start"()
+    (rx734_cur, rx734_pos, rx734_tgt) = self."!cursor_start"()
     rx734_cur."!cursor_debug"("START ", "arglist")
     .lex unicode:"$\x{a2}", rx734_cur
     .local pmc match
     .lex "$/", match
     length rx734_eos, rx734_tgt
     set rx734_off, 0
-    lt $I10, 2, rx734_start
-    sub rx734_off, $I10, 1
+    lt rx734_pos, 2, rx734_start
+    sub rx734_off, rx734_pos, 1
     substr rx734_tgt, rx734_tgt, rx734_off
   rx734_start:
-    ge rx734_pos, 0, rxscan738_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan738_done
+    goto rxscan738_scan
   rxscan738_loop:
     ($P10) = rx734_cur."from"()
     inc $P10
     set rx734_pos, $P10
     ge rx734_pos, rx734_eos, rxscan738_done
+  rxscan738_scan:
     set_addr $I10, rxscan738_loop
     rx734_cur."!mark_push"(0, rx734_pos, $I10)
   rxscan738_done:
@@ -8500,7 +8716,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("170_1258904213.70809") :method
+.sub "!PREFIX__arglist"  :subid("170_1258923257.41449") :method
 .annotate "line", 4
     $P736 = self."!PREFIX__!subrule"("", "")
     new $P737, "ResizablePMCArray"
@@ -8510,7 +8726,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<value>"  :subid("171_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "term:sym<value>"  :subid("171_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx741_tgt
     .local int rx741_pos
@@ -8518,23 +8734,26 @@
     .local int rx741_eos
     .local int rx741_rep
     .local pmc rx741_cur
-    (rx741_cur, rx741_pos, rx741_tgt, $I10) = self."!cursor_start"()
+    (rx741_cur, rx741_pos, rx741_tgt) = self."!cursor_start"()
     rx741_cur."!cursor_debug"("START ", "term:sym<value>")
     .lex unicode:"$\x{a2}", rx741_cur
     .local pmc match
     .lex "$/", match
     length rx741_eos, rx741_tgt
     set rx741_off, 0
-    lt $I10, 2, rx741_start
-    sub rx741_off, $I10, 1
+    lt rx741_pos, 2, rx741_start
+    sub rx741_off, rx741_pos, 1
     substr rx741_tgt, rx741_tgt, rx741_off
   rx741_start:
-    ge rx741_pos, 0, rxscan745_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan745_done
+    goto rxscan745_scan
   rxscan745_loop:
     ($P10) = rx741_cur."from"()
     inc $P10
     set rx741_pos, $P10
     ge rx741_pos, rx741_eos, rxscan745_done
+  rxscan745_scan:
     set_addr $I10, rxscan745_loop
     rx741_cur."!mark_push"(0, rx741_pos, $I10)
   rxscan745_done:
@@ -8565,7 +8784,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<value>"  :subid("172_1258904213.70809") :method
+.sub "!PREFIX__term:sym<value>"  :subid("172_1258923257.41449") :method
 .annotate "line", 4
     $P743 = self."!PREFIX__!subrule"("value", "")
     new $P744, "ResizablePMCArray"
@@ -8575,7 +8794,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "value"  :subid("173_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "value"  :subid("173_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx747_tgt
     .local int rx747_pos
@@ -8583,23 +8802,26 @@
     .local int rx747_eos
     .local int rx747_rep
     .local pmc rx747_cur
-    (rx747_cur, rx747_pos, rx747_tgt, $I10) = self."!cursor_start"()
+    (rx747_cur, rx747_pos, rx747_tgt) = self."!cursor_start"()
     rx747_cur."!cursor_debug"("START ", "value")
     .lex unicode:"$\x{a2}", rx747_cur
     .local pmc match
     .lex "$/", match
     length rx747_eos, rx747_tgt
     set rx747_off, 0
-    lt $I10, 2, rx747_start
-    sub rx747_off, $I10, 1
+    lt rx747_pos, 2, rx747_start
+    sub rx747_off, rx747_pos, 1
     substr rx747_tgt, rx747_tgt, rx747_off
   rx747_start:
-    ge rx747_pos, 0, rxscan753_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan753_done
+    goto rxscan753_scan
   rxscan753_loop:
     ($P10) = rx747_cur."from"()
     inc $P10
     set rx747_pos, $P10
     ge rx747_pos, rx747_eos, rxscan753_done
+  rxscan753_scan:
     set_addr $I10, rxscan753_loop
     rx747_cur."!mark_push"(0, rx747_pos, $I10)
   rxscan753_done:
@@ -8658,7 +8880,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__value"  :subid("174_1258904213.70809") :method
+.sub "!PREFIX__value"  :subid("174_1258923257.41449") :method
 .annotate "line", 4
     $P749 = self."!PREFIX__!subrule"("integer", "")
     $P750 = self."!PREFIX__!subrule"("quote", "")
@@ -8672,7 +8894,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote"  :subid("175_1258904213.70809") :method
+.sub "quote"  :subid("175_1258923257.41449") :method
 .annotate "line", 360
     $P756 = self."!protoregex"("quote")
     .return ($P756)
@@ -8680,7 +8902,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote"  :subid("176_1258904213.70809") :method
+.sub "!PREFIX__quote"  :subid("176_1258923257.41449") :method
 .annotate "line", 360
     $P758 = self."!PREFIX__!protoregex"("quote")
     .return ($P758)
@@ -8688,7 +8910,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<apos>"  :subid("177_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "quote:sym<apos>"  :subid("177_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx760_tgt
     .local int rx760_pos
@@ -8696,23 +8918,26 @@
     .local int rx760_eos
     .local int rx760_rep
     .local pmc rx760_cur
-    (rx760_cur, rx760_pos, rx760_tgt, $I10) = self."!cursor_start"()
+    (rx760_cur, rx760_pos, rx760_tgt) = self."!cursor_start"()
     rx760_cur."!cursor_debug"("START ", "quote:sym<apos>")
     .lex unicode:"$\x{a2}", rx760_cur
     .local pmc match
     .lex "$/", match
     length rx760_eos, rx760_tgt
     set rx760_off, 0
-    lt $I10, 2, rx760_start
-    sub rx760_off, $I10, 1
+    lt rx760_pos, 2, rx760_start
+    sub rx760_off, rx760_pos, 1
     substr rx760_tgt, rx760_tgt, rx760_off
   rx760_start:
-    ge rx760_pos, 0, rxscan763_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan763_done
+    goto rxscan763_scan
   rxscan763_loop:
     ($P10) = rx760_cur."from"()
     inc $P10
     set rx760_pos, $P10
     ge rx760_pos, rx760_eos, rxscan763_done
+  rxscan763_scan:
     set_addr $I10, rxscan763_loop
     rx760_cur."!mark_push"(0, rx760_pos, $I10)
   rxscan763_done:
@@ -8749,7 +8974,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<apos>"  :subid("178_1258904213.70809") :method
+.sub "!PREFIX__quote:sym<apos>"  :subid("178_1258923257.41449") :method
 .annotate "line", 4
     new $P762, "ResizablePMCArray"
     push $P762, "'"
@@ -8758,7 +8983,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<dblq>"  :subid("179_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "quote:sym<dblq>"  :subid("179_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx765_tgt
     .local int rx765_pos
@@ -8766,23 +8991,26 @@
     .local int rx765_eos
     .local int rx765_rep
     .local pmc rx765_cur
-    (rx765_cur, rx765_pos, rx765_tgt, $I10) = self."!cursor_start"()
+    (rx765_cur, rx765_pos, rx765_tgt) = self."!cursor_start"()
     rx765_cur."!cursor_debug"("START ", "quote:sym<dblq>")
     .lex unicode:"$\x{a2}", rx765_cur
     .local pmc match
     .lex "$/", match
     length rx765_eos, rx765_tgt
     set rx765_off, 0
-    lt $I10, 2, rx765_start
-    sub rx765_off, $I10, 1
+    lt rx765_pos, 2, rx765_start
+    sub rx765_off, rx765_pos, 1
     substr rx765_tgt, rx765_tgt, rx765_off
   rx765_start:
-    ge rx765_pos, 0, rxscan768_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan768_done
+    goto rxscan768_scan
   rxscan768_loop:
     ($P10) = rx765_cur."from"()
     inc $P10
     set rx765_pos, $P10
     ge rx765_pos, rx765_eos, rxscan768_done
+  rxscan768_scan:
     set_addr $I10, rxscan768_loop
     rx765_cur."!mark_push"(0, rx765_pos, $I10)
   rxscan768_done:
@@ -8819,7 +9047,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<dblq>"  :subid("180_1258904213.70809") :method
+.sub "!PREFIX__quote:sym<dblq>"  :subid("180_1258923257.41449") :method
 .annotate "line", 4
     new $P767, "ResizablePMCArray"
     push $P767, "\""
@@ -8828,7 +9056,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<q>"  :subid("181_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "quote:sym<q>"  :subid("181_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx770_tgt
     .local int rx770_pos
@@ -8836,23 +9064,26 @@
     .local int rx770_eos
     .local int rx770_rep
     .local pmc rx770_cur
-    (rx770_cur, rx770_pos, rx770_tgt, $I10) = self."!cursor_start"()
+    (rx770_cur, rx770_pos, rx770_tgt) = self."!cursor_start"()
     rx770_cur."!cursor_debug"("START ", "quote:sym<q>")
     .lex unicode:"$\x{a2}", rx770_cur
     .local pmc match
     .lex "$/", match
     length rx770_eos, rx770_tgt
     set rx770_off, 0
-    lt $I10, 2, rx770_start
-    sub rx770_off, $I10, 1
+    lt rx770_pos, 2, rx770_start
+    sub rx770_off, rx770_pos, 1
     substr rx770_tgt, rx770_tgt, rx770_off
   rx770_start:
-    ge rx770_pos, 0, rxscan774_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan774_done
+    goto rxscan774_scan
   rxscan774_loop:
     ($P10) = rx770_cur."from"()
     inc $P10
     set rx770_pos, $P10
     ge rx770_pos, rx770_eos, rxscan774_done
+  rxscan774_scan:
     set_addr $I10, rxscan774_loop
     rx770_cur."!mark_push"(0, rx770_pos, $I10)
   rxscan774_done:
@@ -8901,7 +9132,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<q>"  :subid("182_1258904213.70809") :method
+.sub "!PREFIX__quote:sym<q>"  :subid("182_1258923257.41449") :method
 .annotate "line", 4
     $P772 = self."!PREFIX__!subrule"("", "q")
     new $P773, "ResizablePMCArray"
@@ -8911,7 +9142,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<qq>"  :subid("183_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "quote:sym<qq>"  :subid("183_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx776_tgt
     .local int rx776_pos
@@ -8919,23 +9150,26 @@
     .local int rx776_eos
     .local int rx776_rep
     .local pmc rx776_cur
-    (rx776_cur, rx776_pos, rx776_tgt, $I10) = self."!cursor_start"()
+    (rx776_cur, rx776_pos, rx776_tgt) = self."!cursor_start"()
     rx776_cur."!cursor_debug"("START ", "quote:sym<qq>")
     .lex unicode:"$\x{a2}", rx776_cur
     .local pmc match
     .lex "$/", match
     length rx776_eos, rx776_tgt
     set rx776_off, 0
-    lt $I10, 2, rx776_start
-    sub rx776_off, $I10, 1
+    lt rx776_pos, 2, rx776_start
+    sub rx776_off, rx776_pos, 1
     substr rx776_tgt, rx776_tgt, rx776_off
   rx776_start:
-    ge rx776_pos, 0, rxscan780_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan780_done
+    goto rxscan780_scan
   rxscan780_loop:
     ($P10) = rx776_cur."from"()
     inc $P10
     set rx776_pos, $P10
     ge rx776_pos, rx776_eos, rxscan780_done
+  rxscan780_scan:
     set_addr $I10, rxscan780_loop
     rx776_cur."!mark_push"(0, rx776_pos, $I10)
   rxscan780_done:
@@ -8984,7 +9218,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<qq>"  :subid("184_1258904213.70809") :method
+.sub "!PREFIX__quote:sym<qq>"  :subid("184_1258923257.41449") :method
 .annotate "line", 4
     $P778 = self."!PREFIX__!subrule"("", "qq")
     new $P779, "ResizablePMCArray"
@@ -8994,7 +9228,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q>"  :subid("185_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "quote:sym<Q>"  :subid("185_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx782_tgt
     .local int rx782_pos
@@ -9002,23 +9236,26 @@
     .local int rx782_eos
     .local int rx782_rep
     .local pmc rx782_cur
-    (rx782_cur, rx782_pos, rx782_tgt, $I10) = self."!cursor_start"()
+    (rx782_cur, rx782_pos, rx782_tgt) = self."!cursor_start"()
     rx782_cur."!cursor_debug"("START ", "quote:sym<Q>")
     .lex unicode:"$\x{a2}", rx782_cur
     .local pmc match
     .lex "$/", match
     length rx782_eos, rx782_tgt
     set rx782_off, 0
-    lt $I10, 2, rx782_start
-    sub rx782_off, $I10, 1
+    lt rx782_pos, 2, rx782_start
+    sub rx782_off, rx782_pos, 1
     substr rx782_tgt, rx782_tgt, rx782_off
   rx782_start:
-    ge rx782_pos, 0, rxscan786_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan786_done
+    goto rxscan786_scan
   rxscan786_loop:
     ($P10) = rx782_cur."from"()
     inc $P10
     set rx782_pos, $P10
     ge rx782_pos, rx782_eos, rxscan786_done
+  rxscan786_scan:
     set_addr $I10, rxscan786_loop
     rx782_cur."!mark_push"(0, rx782_pos, $I10)
   rxscan786_done:
@@ -9067,7 +9304,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q>"  :subid("186_1258904213.70809") :method
+.sub "!PREFIX__quote:sym<Q>"  :subid("186_1258923257.41449") :method
 .annotate "line", 4
     $P784 = self."!PREFIX__!subrule"("", "Q")
     new $P785, "ResizablePMCArray"
@@ -9077,7 +9314,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q:PIR>"  :subid("187_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "quote:sym<Q:PIR>"  :subid("187_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx788_tgt
     .local int rx788_pos
@@ -9085,23 +9322,26 @@
     .local int rx788_eos
     .local int rx788_rep
     .local pmc rx788_cur
-    (rx788_cur, rx788_pos, rx788_tgt, $I10) = self."!cursor_start"()
+    (rx788_cur, rx788_pos, rx788_tgt) = self."!cursor_start"()
     rx788_cur."!cursor_debug"("START ", "quote:sym<Q:PIR>")
     .lex unicode:"$\x{a2}", rx788_cur
     .local pmc match
     .lex "$/", match
     length rx788_eos, rx788_tgt
     set rx788_off, 0
-    lt $I10, 2, rx788_start
-    sub rx788_off, $I10, 1
+    lt rx788_pos, 2, rx788_start
+    sub rx788_off, rx788_pos, 1
     substr rx788_tgt, rx788_tgt, rx788_off
   rx788_start:
-    ge rx788_pos, 0, rxscan792_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan792_done
+    goto rxscan792_scan
   rxscan792_loop:
     ($P10) = rx788_cur."from"()
     inc $P10
     set rx788_pos, $P10
     ge rx788_pos, rx788_eos, rxscan792_done
+  rxscan792_scan:
     set_addr $I10, rxscan792_loop
     rx788_cur."!mark_push"(0, rx788_pos, $I10)
   rxscan792_done:
@@ -9144,7 +9384,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("188_1258904213.70809") :method
+.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("188_1258923257.41449") :method
 .annotate "line", 4
     $P790 = self."!PREFIX__!subrule"("", "Q:PIR")
     new $P791, "ResizablePMCArray"
@@ -9154,7 +9394,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<$>"  :subid("189_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "quote_escape:sym<$>"  :subid("189_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx794_tgt
     .local int rx794_pos
@@ -9162,23 +9402,26 @@
     .local int rx794_eos
     .local int rx794_rep
     .local pmc rx794_cur
-    (rx794_cur, rx794_pos, rx794_tgt, $I10) = self."!cursor_start"()
+    (rx794_cur, rx794_pos, rx794_tgt) = self."!cursor_start"()
     rx794_cur."!cursor_debug"("START ", "quote_escape:sym<$>")
     .lex unicode:"$\x{a2}", rx794_cur
     .local pmc match
     .lex "$/", match
     length rx794_eos, rx794_tgt
     set rx794_off, 0
-    lt $I10, 2, rx794_start
-    sub rx794_off, $I10, 1
+    lt rx794_pos, 2, rx794_start
+    sub rx794_off, rx794_pos, 1
     substr rx794_tgt, rx794_tgt, rx794_off
   rx794_start:
-    ge rx794_pos, 0, rxscan797_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan797_done
+    goto rxscan797_scan
   rxscan797_loop:
     ($P10) = rx794_cur."from"()
     inc $P10
     set rx794_pos, $P10
     ge rx794_pos, rx794_eos, rxscan797_done
+  rxscan797_scan:
     set_addr $I10, rxscan797_loop
     rx794_cur."!mark_push"(0, rx794_pos, $I10)
   rxscan797_done:
@@ -9219,7 +9462,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<$>"  :subid("190_1258904213.70809") :method
+.sub "!PREFIX__quote_escape:sym<$>"  :subid("190_1258923257.41449") :method
 .annotate "line", 4
     new $P796, "ResizablePMCArray"
     push $P796, "$"
@@ -9228,7 +9471,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<{ }>"  :subid("191_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "quote_escape:sym<{ }>"  :subid("191_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx799_tgt
     .local int rx799_pos
@@ -9236,23 +9479,26 @@
     .local int rx799_eos
     .local int rx799_rep
     .local pmc rx799_cur
-    (rx799_cur, rx799_pos, rx799_tgt, $I10) = self."!cursor_start"()
+    (rx799_cur, rx799_pos, rx799_tgt) = self."!cursor_start"()
     rx799_cur."!cursor_debug"("START ", "quote_escape:sym<{ }>")
     .lex unicode:"$\x{a2}", rx799_cur
     .local pmc match
     .lex "$/", match
     length rx799_eos, rx799_tgt
     set rx799_off, 0
-    lt $I10, 2, rx799_start
-    sub rx799_off, $I10, 1
+    lt rx799_pos, 2, rx799_start
+    sub rx799_off, rx799_pos, 1
     substr rx799_tgt, rx799_tgt, rx799_off
   rx799_start:
-    ge rx799_pos, 0, rxscan802_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan802_done
+    goto rxscan802_scan
   rxscan802_loop:
     ($P10) = rx799_cur."from"()
     inc $P10
     set rx799_pos, $P10
     ge rx799_pos, rx799_eos, rxscan802_done
+  rxscan802_scan:
     set_addr $I10, rxscan802_loop
     rx799_cur."!mark_push"(0, rx799_pos, $I10)
   rxscan802_done:
@@ -9293,7 +9539,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("192_1258904213.70809") :method
+.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("192_1258923257.41449") :method
 .annotate "line", 4
     new $P801, "ResizablePMCArray"
     push $P801, "{"
@@ -9302,7 +9548,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<( )>"  :subid("193_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "circumfix:sym<( )>"  :subid("193_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx804_tgt
     .local int rx804_pos
@@ -9310,7 +9556,7 @@
     .local int rx804_eos
     .local int rx804_rep
     .local pmc rx804_cur
-    (rx804_cur, rx804_pos, rx804_tgt, $I10) = self."!cursor_start"()
+    (rx804_cur, rx804_pos, rx804_tgt) = self."!cursor_start"()
     rx804_cur."!cursor_debug"("START ", "circumfix:sym<( )>")
     rx804_cur."!cursor_caparray"("EXPR")
     .lex unicode:"$\x{a2}", rx804_cur
@@ -9318,16 +9564,19 @@
     .lex "$/", match
     length rx804_eos, rx804_tgt
     set rx804_off, 0
-    lt $I10, 2, rx804_start
-    sub rx804_off, $I10, 1
+    lt rx804_pos, 2, rx804_start
+    sub rx804_off, rx804_pos, 1
     substr rx804_tgt, rx804_tgt, rx804_off
   rx804_start:
-    ge rx804_pos, 0, rxscan808_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan808_done
+    goto rxscan808_scan
   rxscan808_loop:
     ($P10) = rx804_cur."from"()
     inc $P10
     set rx804_pos, $P10
     ge rx804_pos, rx804_eos, rxscan808_done
+  rxscan808_scan:
     set_addr $I10, rxscan808_loop
     rx804_cur."!mark_push"(0, rx804_pos, $I10)
   rxscan808_done:
@@ -9383,7 +9632,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<( )>"  :subid("194_1258904213.70809") :method
+.sub "!PREFIX__circumfix:sym<( )>"  :subid("194_1258923257.41449") :method
 .annotate "line", 4
     $P806 = self."!PREFIX__!subrule"("", "(")
     new $P807, "ResizablePMCArray"
@@ -9393,7 +9642,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<[ ]>"  :subid("195_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "circumfix:sym<[ ]>"  :subid("195_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx812_tgt
     .local int rx812_pos
@@ -9401,7 +9650,7 @@
     .local int rx812_eos
     .local int rx812_rep
     .local pmc rx812_cur
-    (rx812_cur, rx812_pos, rx812_tgt, $I10) = self."!cursor_start"()
+    (rx812_cur, rx812_pos, rx812_tgt) = self."!cursor_start"()
     rx812_cur."!cursor_debug"("START ", "circumfix:sym<[ ]>")
     rx812_cur."!cursor_caparray"("EXPR")
     .lex unicode:"$\x{a2}", rx812_cur
@@ -9409,16 +9658,19 @@
     .lex "$/", match
     length rx812_eos, rx812_tgt
     set rx812_off, 0
-    lt $I10, 2, rx812_start
-    sub rx812_off, $I10, 1
+    lt rx812_pos, 2, rx812_start
+    sub rx812_off, rx812_pos, 1
     substr rx812_tgt, rx812_tgt, rx812_off
   rx812_start:
-    ge rx812_pos, 0, rxscan816_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan816_done
+    goto rxscan816_scan
   rxscan816_loop:
     ($P10) = rx812_cur."from"()
     inc $P10
     set rx812_pos, $P10
     ge rx812_pos, rx812_eos, rxscan816_done
+  rxscan816_scan:
     set_addr $I10, rxscan816_loop
     rx812_cur."!mark_push"(0, rx812_pos, $I10)
   rxscan816_done:
@@ -9474,7 +9726,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("196_1258904213.70809") :method
+.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("196_1258923257.41449") :method
 .annotate "line", 4
     $P814 = self."!PREFIX__!subrule"("", "[")
     new $P815, "ResizablePMCArray"
@@ -9484,7 +9736,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<ang>"  :subid("197_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "circumfix:sym<ang>"  :subid("197_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx820_tgt
     .local int rx820_pos
@@ -9492,23 +9744,26 @@
     .local int rx820_eos
     .local int rx820_rep
     .local pmc rx820_cur
-    (rx820_cur, rx820_pos, rx820_tgt, $I10) = self."!cursor_start"()
+    (rx820_cur, rx820_pos, rx820_tgt) = self."!cursor_start"()
     rx820_cur."!cursor_debug"("START ", "circumfix:sym<ang>")
     .lex unicode:"$\x{a2}", rx820_cur
     .local pmc match
     .lex "$/", match
     length rx820_eos, rx820_tgt
     set rx820_off, 0
-    lt $I10, 2, rx820_start
-    sub rx820_off, $I10, 1
+    lt rx820_pos, 2, rx820_start
+    sub rx820_off, rx820_pos, 1
     substr rx820_tgt, rx820_tgt, rx820_off
   rx820_start:
-    ge rx820_pos, 0, rxscan823_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan823_done
+    goto rxscan823_scan
   rxscan823_loop:
     ($P10) = rx820_cur."from"()
     inc $P10
     set rx820_pos, $P10
     ge rx820_pos, rx820_eos, rxscan823_done
+  rxscan823_scan:
     set_addr $I10, rxscan823_loop
     rx820_cur."!mark_push"(0, rx820_pos, $I10)
   rxscan823_done:
@@ -9545,7 +9800,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<ang>"  :subid("198_1258904213.70809") :method
+.sub "!PREFIX__circumfix:sym<ang>"  :subid("198_1258923257.41449") :method
 .annotate "line", 4
     new $P822, "ResizablePMCArray"
     push $P822, "<"
@@ -9554,7 +9809,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<{ }>"  :subid("199_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "circumfix:sym<{ }>"  :subid("199_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx825_tgt
     .local int rx825_pos
@@ -9562,23 +9817,26 @@
     .local int rx825_eos
     .local int rx825_rep
     .local pmc rx825_cur
-    (rx825_cur, rx825_pos, rx825_tgt, $I10) = self."!cursor_start"()
+    (rx825_cur, rx825_pos, rx825_tgt) = self."!cursor_start"()
     rx825_cur."!cursor_debug"("START ", "circumfix:sym<{ }>")
     .lex unicode:"$\x{a2}", rx825_cur
     .local pmc match
     .lex "$/", match
     length rx825_eos, rx825_tgt
     set rx825_off, 0
-    lt $I10, 2, rx825_start
-    sub rx825_off, $I10, 1
+    lt rx825_pos, 2, rx825_start
+    sub rx825_off, rx825_pos, 1
     substr rx825_tgt, rx825_tgt, rx825_off
   rx825_start:
-    ge rx825_pos, 0, rxscan828_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan828_done
+    goto rxscan828_scan
   rxscan828_loop:
     ($P10) = rx825_cur."from"()
     inc $P10
     set rx825_pos, $P10
     ge rx825_pos, rx825_eos, rxscan828_done
+  rxscan828_scan:
     set_addr $I10, rxscan828_loop
     rx825_cur."!mark_push"(0, rx825_pos, $I10)
   rxscan828_done:
@@ -9615,7 +9873,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<{ }>"  :subid("200_1258904213.70809") :method
+.sub "!PREFIX__circumfix:sym<{ }>"  :subid("200_1258923257.41449") :method
 .annotate "line", 4
     new $P827, "ResizablePMCArray"
     push $P827, "{"
@@ -9624,7 +9882,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<sigil>"  :subid("201_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "circumfix:sym<sigil>"  :subid("201_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx830_tgt
     .local int rx830_pos
@@ -9632,23 +9890,26 @@
     .local int rx830_eos
     .local int rx830_rep
     .local pmc rx830_cur
-    (rx830_cur, rx830_pos, rx830_tgt, $I10) = self."!cursor_start"()
+    (rx830_cur, rx830_pos, rx830_tgt) = self."!cursor_start"()
     rx830_cur."!cursor_debug"("START ", "circumfix:sym<sigil>")
     .lex unicode:"$\x{a2}", rx830_cur
     .local pmc match
     .lex "$/", match
     length rx830_eos, rx830_tgt
     set rx830_off, 0
-    lt $I10, 2, rx830_start
-    sub rx830_off, $I10, 1
+    lt rx830_pos, 2, rx830_start
+    sub rx830_off, rx830_pos, 1
     substr rx830_tgt, rx830_tgt, rx830_off
   rx830_start:
-    ge rx830_pos, 0, rxscan834_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan834_done
+    goto rxscan834_scan
   rxscan834_loop:
     ($P10) = rx830_cur."from"()
     inc $P10
     set rx830_pos, $P10
     ge rx830_pos, rx830_eos, rxscan834_done
+  rxscan834_scan:
     set_addr $I10, rxscan834_loop
     rx830_cur."!mark_push"(0, rx830_pos, $I10)
   rxscan834_done:
@@ -9711,7 +9972,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<sigil>"  :subid("202_1258904213.70809") :method
+.sub "!PREFIX__circumfix:sym<sigil>"  :subid("202_1258923257.41449") :method
 .annotate "line", 4
     $P832 = self."!PREFIX__!subrule"("sigil", "")
     new $P833, "ResizablePMCArray"
@@ -9721,7 +9982,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "semilist"  :subid("203_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "semilist"  :subid("203_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 4
     .local string rx838_tgt
     .local int rx838_pos
@@ -9729,23 +9990,26 @@
     .local int rx838_eos
     .local int rx838_rep
     .local pmc rx838_cur
-    (rx838_cur, rx838_pos, rx838_tgt, $I10) = self."!cursor_start"()
+    (rx838_cur, rx838_pos, rx838_tgt) = self."!cursor_start"()
     rx838_cur."!cursor_debug"("START ", "semilist")
     .lex unicode:"$\x{a2}", rx838_cur
     .local pmc match
     .lex "$/", match
     length rx838_eos, rx838_tgt
     set rx838_off, 0
-    lt $I10, 2, rx838_start
-    sub rx838_off, $I10, 1
+    lt rx838_pos, 2, rx838_start
+    sub rx838_off, rx838_pos, 1
     substr rx838_tgt, rx838_tgt, rx838_off
   rx838_start:
-    ge rx838_pos, 0, rxscan841_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan841_done
+    goto rxscan841_scan
   rxscan841_loop:
     ($P10) = rx838_cur."from"()
     inc $P10
     set rx838_pos, $P10
     ge rx838_pos, rx838_eos, rxscan841_done
+  rxscan841_scan:
     set_addr $I10, rxscan841_loop
     rx838_cur."!mark_push"(0, rx838_pos, $I10)
   rxscan841_done:
@@ -9786,7 +10050,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__semilist"  :subid("204_1258904213.70809") :method
+.sub "!PREFIX__semilist"  :subid("204_1258923257.41449") :method
 .annotate "line", 4
     new $P840, "ResizablePMCArray"
     push $P840, ""
@@ -9795,7 +10059,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixish"  :subid("205_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infixish"  :subid("205_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx845_tgt
     .local int rx845_pos
@@ -9803,23 +10067,26 @@
     .local int rx845_eos
     .local int rx845_rep
     .local pmc rx845_cur
-    (rx845_cur, rx845_pos, rx845_tgt, $I10) = self."!cursor_start"()
+    (rx845_cur, rx845_pos, rx845_tgt) = self."!cursor_start"()
     rx845_cur."!cursor_debug"("START ", "infixish")
     .lex unicode:"$\x{a2}", rx845_cur
     .local pmc match
     .lex "$/", match
     length rx845_eos, rx845_tgt
     set rx845_off, 0
-    lt $I10, 2, rx845_start
-    sub rx845_off, $I10, 1
+    lt rx845_pos, 2, rx845_start
+    sub rx845_off, rx845_pos, 1
     substr rx845_tgt, rx845_tgt, rx845_off
   rx845_start:
-    ge rx845_pos, 0, rxscan848_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan848_done
+    goto rxscan848_scan
   rxscan848_loop:
     ($P10) = rx845_cur."from"()
     inc $P10
     set rx845_pos, $P10
     ge rx845_pos, rx845_eos, rxscan848_done
+  rxscan848_scan:
     set_addr $I10, rxscan848_loop
     rx845_cur."!mark_push"(0, rx845_pos, $I10)
   rxscan848_done:
@@ -9854,7 +10121,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("206_1258904213.70809") :method
+.sub "!PREFIX__infixish"  :subid("206_1258923257.41449") :method
 .annotate "line", 381
     new $P847, "ResizablePMCArray"
     push $P847, ""
@@ -9863,7 +10130,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixstopper"  :subid("207_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infixstopper"  :subid("207_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx850_tgt
     .local int rx850_pos
@@ -9871,23 +10138,26 @@
     .local int rx850_eos
     .local int rx850_rep
     .local pmc rx850_cur
-    (rx850_cur, rx850_pos, rx850_tgt, $I10) = self."!cursor_start"()
+    (rx850_cur, rx850_pos, rx850_tgt) = self."!cursor_start"()
     rx850_cur."!cursor_debug"("START ", "infixstopper")
     .lex unicode:"$\x{a2}", rx850_cur
     .local pmc match
     .lex "$/", match
     length rx850_eos, rx850_tgt
     set rx850_off, 0
-    lt $I10, 2, rx850_start
-    sub rx850_off, $I10, 1
+    lt rx850_pos, 2, rx850_start
+    sub rx850_off, rx850_pos, 1
     substr rx850_tgt, rx850_tgt, rx850_off
   rx850_start:
-    ge rx850_pos, 0, rxscan853_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan853_done
+    goto rxscan853_scan
   rxscan853_loop:
     ($P10) = rx850_cur."from"()
     inc $P10
     set rx850_pos, $P10
     ge rx850_pos, rx850_eos, rxscan853_done
+  rxscan853_scan:
     set_addr $I10, rxscan853_loop
     rx850_cur."!mark_push"(0, rx850_pos, $I10)
   rxscan853_done:
@@ -9915,7 +10185,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixstopper"  :subid("208_1258904213.70809") :method
+.sub "!PREFIX__infixstopper"  :subid("208_1258923257.41449") :method
 .annotate "line", 381
     new $P852, "ResizablePMCArray"
     push $P852, ""
@@ -9924,7 +10194,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<[ ]>"  :subid("209_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "postcircumfix:sym<[ ]>"  :subid("209_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx855_tgt
     .local int rx855_pos
@@ -9932,23 +10202,26 @@
     .local int rx855_eos
     .local int rx855_rep
     .local pmc rx855_cur
-    (rx855_cur, rx855_pos, rx855_tgt, $I10) = self."!cursor_start"()
+    (rx855_cur, rx855_pos, rx855_tgt) = self."!cursor_start"()
     rx855_cur."!cursor_debug"("START ", "postcircumfix:sym<[ ]>")
     .lex unicode:"$\x{a2}", rx855_cur
     .local pmc match
     .lex "$/", match
     length rx855_eos, rx855_tgt
     set rx855_off, 0
-    lt $I10, 2, rx855_start
-    sub rx855_off, $I10, 1
+    lt rx855_pos, 2, rx855_start
+    sub rx855_off, rx855_pos, 1
     substr rx855_tgt, rx855_tgt, rx855_off
   rx855_start:
-    ge rx855_pos, 0, rxscan859_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan859_done
+    goto rxscan859_scan
   rxscan859_loop:
     ($P10) = rx855_cur."from"()
     inc $P10
     set rx855_pos, $P10
     ge rx855_pos, rx855_eos, rxscan859_done
+  rxscan859_scan:
     set_addr $I10, rxscan859_loop
     rx855_cur."!mark_push"(0, rx855_pos, $I10)
   rxscan859_done:
@@ -10007,7 +10280,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("210_1258904213.70809") :method
+.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("210_1258923257.41449") :method
 .annotate "line", 381
     $P857 = self."!PREFIX__!subrule"("", "[")
     new $P858, "ResizablePMCArray"
@@ -10017,7 +10290,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<{ }>"  :subid("211_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "postcircumfix:sym<{ }>"  :subid("211_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx861_tgt
     .local int rx861_pos
@@ -10025,23 +10298,26 @@
     .local int rx861_eos
     .local int rx861_rep
     .local pmc rx861_cur
-    (rx861_cur, rx861_pos, rx861_tgt, $I10) = self."!cursor_start"()
+    (rx861_cur, rx861_pos, rx861_tgt) = self."!cursor_start"()
     rx861_cur."!cursor_debug"("START ", "postcircumfix:sym<{ }>")
     .lex unicode:"$\x{a2}", rx861_cur
     .local pmc match
     .lex "$/", match
     length rx861_eos, rx861_tgt
     set rx861_off, 0
-    lt $I10, 2, rx861_start
-    sub rx861_off, $I10, 1
+    lt rx861_pos, 2, rx861_start
+    sub rx861_off, rx861_pos, 1
     substr rx861_tgt, rx861_tgt, rx861_off
   rx861_start:
-    ge rx861_pos, 0, rxscan865_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan865_done
+    goto rxscan865_scan
   rxscan865_loop:
     ($P10) = rx861_cur."from"()
     inc $P10
     set rx861_pos, $P10
     ge rx861_pos, rx861_eos, rxscan865_done
+  rxscan865_scan:
     set_addr $I10, rxscan865_loop
     rx861_cur."!mark_push"(0, rx861_pos, $I10)
   rxscan865_done:
@@ -10100,7 +10376,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("212_1258904213.70809") :method
+.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("212_1258923257.41449") :method
 .annotate "line", 381
     $P863 = self."!PREFIX__!subrule"("", "{")
     new $P864, "ResizablePMCArray"
@@ -10110,7 +10386,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<ang>"  :subid("213_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "postcircumfix:sym<ang>"  :subid("213_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx867_tgt
     .local int rx867_pos
@@ -10118,23 +10394,26 @@
     .local int rx867_eos
     .local int rx867_rep
     .local pmc rx867_cur
-    (rx867_cur, rx867_pos, rx867_tgt, $I10) = self."!cursor_start"()
+    (rx867_cur, rx867_pos, rx867_tgt) = self."!cursor_start"()
     rx867_cur."!cursor_debug"("START ", "postcircumfix:sym<ang>")
     .lex unicode:"$\x{a2}", rx867_cur
     .local pmc match
     .lex "$/", match
     length rx867_eos, rx867_tgt
     set rx867_off, 0
-    lt $I10, 2, rx867_start
-    sub rx867_off, $I10, 1
+    lt rx867_pos, 2, rx867_start
+    sub rx867_off, rx867_pos, 1
     substr rx867_tgt, rx867_tgt, rx867_off
   rx867_start:
-    ge rx867_pos, 0, rxscan870_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan870_done
+    goto rxscan870_scan
   rxscan870_loop:
     ($P10) = rx867_cur."from"()
     inc $P10
     set rx867_pos, $P10
     ge rx867_pos, rx867_eos, rxscan870_done
+  rxscan870_scan:
     set_addr $I10, rxscan870_loop
     rx867_cur."!mark_push"(0, rx867_pos, $I10)
   rxscan870_done:
@@ -10180,7 +10459,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("214_1258904213.70809") :method
+.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("214_1258923257.41449") :method
 .annotate "line", 381
     new $P869, "ResizablePMCArray"
     push $P869, "<"
@@ -10189,7 +10468,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<( )>"  :subid("215_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "postcircumfix:sym<( )>"  :subid("215_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx872_tgt
     .local int rx872_pos
@@ -10197,23 +10476,26 @@
     .local int rx872_eos
     .local int rx872_rep
     .local pmc rx872_cur
-    (rx872_cur, rx872_pos, rx872_tgt, $I10) = self."!cursor_start"()
+    (rx872_cur, rx872_pos, rx872_tgt) = self."!cursor_start"()
     rx872_cur."!cursor_debug"("START ", "postcircumfix:sym<( )>")
     .lex unicode:"$\x{a2}", rx872_cur
     .local pmc match
     .lex "$/", match
     length rx872_eos, rx872_tgt
     set rx872_off, 0
-    lt $I10, 2, rx872_start
-    sub rx872_off, $I10, 1
+    lt rx872_pos, 2, rx872_start
+    sub rx872_off, rx872_pos, 1
     substr rx872_tgt, rx872_tgt, rx872_off
   rx872_start:
-    ge rx872_pos, 0, rxscan876_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan876_done
+    goto rxscan876_scan
   rxscan876_loop:
     ($P10) = rx872_cur."from"()
     inc $P10
     set rx872_pos, $P10
     ge rx872_pos, rx872_eos, rxscan876_done
+  rxscan876_scan:
     set_addr $I10, rxscan876_loop
     rx872_cur."!mark_push"(0, rx872_pos, $I10)
   rxscan876_done:
@@ -10272,7 +10554,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("216_1258904213.70809") :method
+.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("216_1258923257.41449") :method
 .annotate "line", 381
     $P874 = self."!PREFIX__!subrule"("", "(")
     new $P875, "ResizablePMCArray"
@@ -10282,7 +10564,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<.>"  :subid("217_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "postfix:sym<.>"  :subid("217_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx878_tgt
     .local int rx878_pos
@@ -10290,23 +10572,26 @@
     .local int rx878_eos
     .local int rx878_rep
     .local pmc rx878_cur
-    (rx878_cur, rx878_pos, rx878_tgt, $I10) = self."!cursor_start"()
+    (rx878_cur, rx878_pos, rx878_tgt) = self."!cursor_start"()
     rx878_cur."!cursor_debug"("START ", "postfix:sym<.>")
     .lex unicode:"$\x{a2}", rx878_cur
     .local pmc match
     .lex "$/", match
     length rx878_eos, rx878_tgt
     set rx878_off, 0
-    lt $I10, 2, rx878_start
-    sub rx878_off, $I10, 1
+    lt rx878_pos, 2, rx878_start
+    sub rx878_off, rx878_pos, 1
     substr rx878_tgt, rx878_tgt, rx878_off
   rx878_start:
-    ge rx878_pos, 0, rxscan882_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan882_done
+    goto rxscan882_scan
   rxscan882_loop:
     ($P10) = rx878_cur."from"()
     inc $P10
     set rx878_pos, $P10
     ge rx878_pos, rx878_eos, rxscan882_done
+  rxscan882_scan:
     set_addr $I10, rxscan882_loop
     rx878_cur."!mark_push"(0, rx878_pos, $I10)
   rxscan882_done:
@@ -10344,7 +10629,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<.>"  :subid("218_1258904213.70809") :method
+.sub "!PREFIX__postfix:sym<.>"  :subid("218_1258923257.41449") :method
 .annotate "line", 381
     $P880 = self."!PREFIX__!subrule"("dotty", "")
     new $P881, "ResizablePMCArray"
@@ -10354,7 +10639,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<++>"  :subid("219_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "prefix:sym<++>"  :subid("219_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx884_tgt
     .local int rx884_pos
@@ -10362,23 +10647,26 @@
     .local int rx884_eos
     .local int rx884_rep
     .local pmc rx884_cur
-    (rx884_cur, rx884_pos, rx884_tgt, $I10) = self."!cursor_start"()
+    (rx884_cur, rx884_pos, rx884_tgt) = self."!cursor_start"()
     rx884_cur."!cursor_debug"("START ", "prefix:sym<++>")
     .lex unicode:"$\x{a2}", rx884_cur
     .local pmc match
     .lex "$/", match
     length rx884_eos, rx884_tgt
     set rx884_off, 0
-    lt $I10, 2, rx884_start
-    sub rx884_off, $I10, 1
+    lt rx884_pos, 2, rx884_start
+    sub rx884_off, rx884_pos, 1
     substr rx884_tgt, rx884_tgt, rx884_off
   rx884_start:
-    ge rx884_pos, 0, rxscan888_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan888_done
+    goto rxscan888_scan
   rxscan888_loop:
     ($P10) = rx884_cur."from"()
     inc $P10
     set rx884_pos, $P10
     ge rx884_pos, rx884_eos, rxscan888_done
+  rxscan888_scan:
     set_addr $I10, rxscan888_loop
     rx884_cur."!mark_push"(0, rx884_pos, $I10)
   rxscan888_done:
@@ -10430,7 +10718,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<++>"  :subid("220_1258904213.70809") :method
+.sub "!PREFIX__prefix:sym<++>"  :subid("220_1258923257.41449") :method
 .annotate "line", 381
     $P886 = self."!PREFIX__!subrule"("O", "++")
     new $P887, "ResizablePMCArray"
@@ -10440,7 +10728,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<-->"  :subid("221_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "prefix:sym<-->"  :subid("221_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx891_tgt
     .local int rx891_pos
@@ -10448,23 +10736,26 @@
     .local int rx891_eos
     .local int rx891_rep
     .local pmc rx891_cur
-    (rx891_cur, rx891_pos, rx891_tgt, $I10) = self."!cursor_start"()
+    (rx891_cur, rx891_pos, rx891_tgt) = self."!cursor_start"()
     rx891_cur."!cursor_debug"("START ", "prefix:sym<-->")
     .lex unicode:"$\x{a2}", rx891_cur
     .local pmc match
     .lex "$/", match
     length rx891_eos, rx891_tgt
     set rx891_off, 0
-    lt $I10, 2, rx891_start
-    sub rx891_off, $I10, 1
+    lt rx891_pos, 2, rx891_start
+    sub rx891_off, rx891_pos, 1
     substr rx891_tgt, rx891_tgt, rx891_off
   rx891_start:
-    ge rx891_pos, 0, rxscan895_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan895_done
+    goto rxscan895_scan
   rxscan895_loop:
     ($P10) = rx891_cur."from"()
     inc $P10
     set rx891_pos, $P10
     ge rx891_pos, rx891_eos, rxscan895_done
+  rxscan895_scan:
     set_addr $I10, rxscan895_loop
     rx891_cur."!mark_push"(0, rx891_pos, $I10)
   rxscan895_done:
@@ -10516,7 +10807,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<-->"  :subid("222_1258904213.70809") :method
+.sub "!PREFIX__prefix:sym<-->"  :subid("222_1258923257.41449") :method
 .annotate "line", 381
     $P893 = self."!PREFIX__!subrule"("O", "--")
     new $P894, "ResizablePMCArray"
@@ -10526,7 +10817,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<++>"  :subid("223_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "postfix:sym<++>"  :subid("223_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx898_tgt
     .local int rx898_pos
@@ -10534,23 +10825,26 @@
     .local int rx898_eos
     .local int rx898_rep
     .local pmc rx898_cur
-    (rx898_cur, rx898_pos, rx898_tgt, $I10) = self."!cursor_start"()
+    (rx898_cur, rx898_pos, rx898_tgt) = self."!cursor_start"()
     rx898_cur."!cursor_debug"("START ", "postfix:sym<++>")
     .lex unicode:"$\x{a2}", rx898_cur
     .local pmc match
     .lex "$/", match
     length rx898_eos, rx898_tgt
     set rx898_off, 0
-    lt $I10, 2, rx898_start
-    sub rx898_off, $I10, 1
+    lt rx898_pos, 2, rx898_start
+    sub rx898_off, rx898_pos, 1
     substr rx898_tgt, rx898_tgt, rx898_off
   rx898_start:
-    ge rx898_pos, 0, rxscan902_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan902_done
+    goto rxscan902_scan
   rxscan902_loop:
     ($P10) = rx898_cur."from"()
     inc $P10
     set rx898_pos, $P10
     ge rx898_pos, rx898_eos, rxscan902_done
+  rxscan902_scan:
     set_addr $I10, rxscan902_loop
     rx898_cur."!mark_push"(0, rx898_pos, $I10)
   rxscan902_done:
@@ -10602,7 +10896,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<++>"  :subid("224_1258904213.70809") :method
+.sub "!PREFIX__postfix:sym<++>"  :subid("224_1258923257.41449") :method
 .annotate "line", 381
     $P900 = self."!PREFIX__!subrule"("O", "++")
     new $P901, "ResizablePMCArray"
@@ -10612,7 +10906,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<-->"  :subid("225_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "postfix:sym<-->"  :subid("225_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx905_tgt
     .local int rx905_pos
@@ -10620,23 +10914,26 @@
     .local int rx905_eos
     .local int rx905_rep
     .local pmc rx905_cur
-    (rx905_cur, rx905_pos, rx905_tgt, $I10) = self."!cursor_start"()
+    (rx905_cur, rx905_pos, rx905_tgt) = self."!cursor_start"()
     rx905_cur."!cursor_debug"("START ", "postfix:sym<-->")
     .lex unicode:"$\x{a2}", rx905_cur
     .local pmc match
     .lex "$/", match
     length rx905_eos, rx905_tgt
     set rx905_off, 0
-    lt $I10, 2, rx905_start
-    sub rx905_off, $I10, 1
+    lt rx905_pos, 2, rx905_start
+    sub rx905_off, rx905_pos, 1
     substr rx905_tgt, rx905_tgt, rx905_off
   rx905_start:
-    ge rx905_pos, 0, rxscan909_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan909_done
+    goto rxscan909_scan
   rxscan909_loop:
     ($P10) = rx905_cur."from"()
     inc $P10
     set rx905_pos, $P10
     ge rx905_pos, rx905_eos, rxscan909_done
+  rxscan909_scan:
     set_addr $I10, rxscan909_loop
     rx905_cur."!mark_push"(0, rx905_pos, $I10)
   rxscan909_done:
@@ -10688,7 +10985,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<-->"  :subid("226_1258904213.70809") :method
+.sub "!PREFIX__postfix:sym<-->"  :subid("226_1258923257.41449") :method
 .annotate "line", 381
     $P907 = self."!PREFIX__!subrule"("O", "--")
     new $P908, "ResizablePMCArray"
@@ -10698,7 +10995,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<**>"  :subid("227_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<**>"  :subid("227_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx912_tgt
     .local int rx912_pos
@@ -10706,23 +11003,26 @@
     .local int rx912_eos
     .local int rx912_rep
     .local pmc rx912_cur
-    (rx912_cur, rx912_pos, rx912_tgt, $I10) = self."!cursor_start"()
+    (rx912_cur, rx912_pos, rx912_tgt) = self."!cursor_start"()
     rx912_cur."!cursor_debug"("START ", "infix:sym<**>")
     .lex unicode:"$\x{a2}", rx912_cur
     .local pmc match
     .lex "$/", match
     length rx912_eos, rx912_tgt
     set rx912_off, 0
-    lt $I10, 2, rx912_start
-    sub rx912_off, $I10, 1
+    lt rx912_pos, 2, rx912_start
+    sub rx912_off, rx912_pos, 1
     substr rx912_tgt, rx912_tgt, rx912_off
   rx912_start:
-    ge rx912_pos, 0, rxscan916_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan916_done
+    goto rxscan916_scan
   rxscan916_loop:
     ($P10) = rx912_cur."from"()
     inc $P10
     set rx912_pos, $P10
     ge rx912_pos, rx912_eos, rxscan916_done
+  rxscan916_scan:
     set_addr $I10, rxscan916_loop
     rx912_cur."!mark_push"(0, rx912_pos, $I10)
   rxscan916_done:
@@ -10774,7 +11074,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<**>"  :subid("228_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<**>"  :subid("228_1258923257.41449") :method
 .annotate "line", 381
     $P914 = self."!PREFIX__!subrule"("O", "**")
     new $P915, "ResizablePMCArray"
@@ -10784,7 +11084,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<+>"  :subid("229_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "prefix:sym<+>"  :subid("229_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx919_tgt
     .local int rx919_pos
@@ -10792,23 +11092,26 @@
     .local int rx919_eos
     .local int rx919_rep
     .local pmc rx919_cur
-    (rx919_cur, rx919_pos, rx919_tgt, $I10) = self."!cursor_start"()
+    (rx919_cur, rx919_pos, rx919_tgt) = self."!cursor_start"()
     rx919_cur."!cursor_debug"("START ", "prefix:sym<+>")
     .lex unicode:"$\x{a2}", rx919_cur
     .local pmc match
     .lex "$/", match
     length rx919_eos, rx919_tgt
     set rx919_off, 0
-    lt $I10, 2, rx919_start
-    sub rx919_off, $I10, 1
+    lt rx919_pos, 2, rx919_start
+    sub rx919_off, rx919_pos, 1
     substr rx919_tgt, rx919_tgt, rx919_off
   rx919_start:
-    ge rx919_pos, 0, rxscan923_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan923_done
+    goto rxscan923_scan
   rxscan923_loop:
     ($P10) = rx919_cur."from"()
     inc $P10
     set rx919_pos, $P10
     ge rx919_pos, rx919_eos, rxscan923_done
+  rxscan923_scan:
     set_addr $I10, rxscan923_loop
     rx919_cur."!mark_push"(0, rx919_pos, $I10)
   rxscan923_done:
@@ -10860,7 +11163,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<+>"  :subid("230_1258904213.70809") :method
+.sub "!PREFIX__prefix:sym<+>"  :subid("230_1258923257.41449") :method
 .annotate "line", 381
     $P921 = self."!PREFIX__!subrule"("O", "+")
     new $P922, "ResizablePMCArray"
@@ -10870,7 +11173,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<~>"  :subid("231_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "prefix:sym<~>"  :subid("231_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx926_tgt
     .local int rx926_pos
@@ -10878,23 +11181,26 @@
     .local int rx926_eos
     .local int rx926_rep
     .local pmc rx926_cur
-    (rx926_cur, rx926_pos, rx926_tgt, $I10) = self."!cursor_start"()
+    (rx926_cur, rx926_pos, rx926_tgt) = self."!cursor_start"()
     rx926_cur."!cursor_debug"("START ", "prefix:sym<~>")
     .lex unicode:"$\x{a2}", rx926_cur
     .local pmc match
     .lex "$/", match
     length rx926_eos, rx926_tgt
     set rx926_off, 0
-    lt $I10, 2, rx926_start
-    sub rx926_off, $I10, 1
+    lt rx926_pos, 2, rx926_start
+    sub rx926_off, rx926_pos, 1
     substr rx926_tgt, rx926_tgt, rx926_off
   rx926_start:
-    ge rx926_pos, 0, rxscan930_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan930_done
+    goto rxscan930_scan
   rxscan930_loop:
     ($P10) = rx926_cur."from"()
     inc $P10
     set rx926_pos, $P10
     ge rx926_pos, rx926_eos, rxscan930_done
+  rxscan930_scan:
     set_addr $I10, rxscan930_loop
     rx926_cur."!mark_push"(0, rx926_pos, $I10)
   rxscan930_done:
@@ -10946,7 +11252,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<~>"  :subid("232_1258904213.70809") :method
+.sub "!PREFIX__prefix:sym<~>"  :subid("232_1258923257.41449") :method
 .annotate "line", 381
     $P928 = self."!PREFIX__!subrule"("O", "~")
     new $P929, "ResizablePMCArray"
@@ -10956,7 +11262,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<->"  :subid("233_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "prefix:sym<->"  :subid("233_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx933_tgt
     .local int rx933_pos
@@ -10964,23 +11270,26 @@
     .local int rx933_eos
     .local int rx933_rep
     .local pmc rx933_cur
-    (rx933_cur, rx933_pos, rx933_tgt, $I10) = self."!cursor_start"()
+    (rx933_cur, rx933_pos, rx933_tgt) = self."!cursor_start"()
     rx933_cur."!cursor_debug"("START ", "prefix:sym<->")
     .lex unicode:"$\x{a2}", rx933_cur
     .local pmc match
     .lex "$/", match
     length rx933_eos, rx933_tgt
     set rx933_off, 0
-    lt $I10, 2, rx933_start
-    sub rx933_off, $I10, 1
+    lt rx933_pos, 2, rx933_start
+    sub rx933_off, rx933_pos, 1
     substr rx933_tgt, rx933_tgt, rx933_off
   rx933_start:
-    ge rx933_pos, 0, rxscan937_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan937_done
+    goto rxscan937_scan
   rxscan937_loop:
     ($P10) = rx933_cur."from"()
     inc $P10
     set rx933_pos, $P10
     ge rx933_pos, rx933_eos, rxscan937_done
+  rxscan937_scan:
     set_addr $I10, rxscan937_loop
     rx933_cur."!mark_push"(0, rx933_pos, $I10)
   rxscan937_done:
@@ -11038,7 +11347,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<->"  :subid("234_1258904213.70809") :method
+.sub "!PREFIX__prefix:sym<->"  :subid("234_1258923257.41449") :method
 .annotate "line", 381
     $P935 = self."!PREFIX__!subrule"("O", "-")
     new $P936, "ResizablePMCArray"
@@ -11048,7 +11357,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<?>"  :subid("235_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "prefix:sym<?>"  :subid("235_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx940_tgt
     .local int rx940_pos
@@ -11056,23 +11365,26 @@
     .local int rx940_eos
     .local int rx940_rep
     .local pmc rx940_cur
-    (rx940_cur, rx940_pos, rx940_tgt, $I10) = self."!cursor_start"()
+    (rx940_cur, rx940_pos, rx940_tgt) = self."!cursor_start"()
     rx940_cur."!cursor_debug"("START ", "prefix:sym<?>")
     .lex unicode:"$\x{a2}", rx940_cur
     .local pmc match
     .lex "$/", match
     length rx940_eos, rx940_tgt
     set rx940_off, 0
-    lt $I10, 2, rx940_start
-    sub rx940_off, $I10, 1
+    lt rx940_pos, 2, rx940_start
+    sub rx940_off, rx940_pos, 1
     substr rx940_tgt, rx940_tgt, rx940_off
   rx940_start:
-    ge rx940_pos, 0, rxscan944_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan944_done
+    goto rxscan944_scan
   rxscan944_loop:
     ($P10) = rx940_cur."from"()
     inc $P10
     set rx940_pos, $P10
     ge rx940_pos, rx940_eos, rxscan944_done
+  rxscan944_scan:
     set_addr $I10, rxscan944_loop
     rx940_cur."!mark_push"(0, rx940_pos, $I10)
   rxscan944_done:
@@ -11124,7 +11436,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<?>"  :subid("236_1258904213.70809") :method
+.sub "!PREFIX__prefix:sym<?>"  :subid("236_1258923257.41449") :method
 .annotate "line", 381
     $P942 = self."!PREFIX__!subrule"("O", "?")
     new $P943, "ResizablePMCArray"
@@ -11134,7 +11446,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<!>"  :subid("237_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "prefix:sym<!>"  :subid("237_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx947_tgt
     .local int rx947_pos
@@ -11142,23 +11454,26 @@
     .local int rx947_eos
     .local int rx947_rep
     .local pmc rx947_cur
-    (rx947_cur, rx947_pos, rx947_tgt, $I10) = self."!cursor_start"()
+    (rx947_cur, rx947_pos, rx947_tgt) = self."!cursor_start"()
     rx947_cur."!cursor_debug"("START ", "prefix:sym<!>")
     .lex unicode:"$\x{a2}", rx947_cur
     .local pmc match
     .lex "$/", match
     length rx947_eos, rx947_tgt
     set rx947_off, 0
-    lt $I10, 2, rx947_start
-    sub rx947_off, $I10, 1
+    lt rx947_pos, 2, rx947_start
+    sub rx947_off, rx947_pos, 1
     substr rx947_tgt, rx947_tgt, rx947_off
   rx947_start:
-    ge rx947_pos, 0, rxscan951_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan951_done
+    goto rxscan951_scan
   rxscan951_loop:
     ($P10) = rx947_cur."from"()
     inc $P10
     set rx947_pos, $P10
     ge rx947_pos, rx947_eos, rxscan951_done
+  rxscan951_scan:
     set_addr $I10, rxscan951_loop
     rx947_cur."!mark_push"(0, rx947_pos, $I10)
   rxscan951_done:
@@ -11210,7 +11525,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<!>"  :subid("238_1258904213.70809") :method
+.sub "!PREFIX__prefix:sym<!>"  :subid("238_1258923257.41449") :method
 .annotate "line", 381
     $P949 = self."!PREFIX__!subrule"("O", "!")
     new $P950, "ResizablePMCArray"
@@ -11220,7 +11535,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<|>"  :subid("239_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "prefix:sym<|>"  :subid("239_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx954_tgt
     .local int rx954_pos
@@ -11228,23 +11543,26 @@
     .local int rx954_eos
     .local int rx954_rep
     .local pmc rx954_cur
-    (rx954_cur, rx954_pos, rx954_tgt, $I10) = self."!cursor_start"()
+    (rx954_cur, rx954_pos, rx954_tgt) = self."!cursor_start"()
     rx954_cur."!cursor_debug"("START ", "prefix:sym<|>")
     .lex unicode:"$\x{a2}", rx954_cur
     .local pmc match
     .lex "$/", match
     length rx954_eos, rx954_tgt
     set rx954_off, 0
-    lt $I10, 2, rx954_start
-    sub rx954_off, $I10, 1
+    lt rx954_pos, 2, rx954_start
+    sub rx954_off, rx954_pos, 1
     substr rx954_tgt, rx954_tgt, rx954_off
   rx954_start:
-    ge rx954_pos, 0, rxscan958_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan958_done
+    goto rxscan958_scan
   rxscan958_loop:
     ($P10) = rx954_cur."from"()
     inc $P10
     set rx954_pos, $P10
     ge rx954_pos, rx954_eos, rxscan958_done
+  rxscan958_scan:
     set_addr $I10, rxscan958_loop
     rx954_cur."!mark_push"(0, rx954_pos, $I10)
   rxscan958_done:
@@ -11296,7 +11614,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<|>"  :subid("240_1258904213.70809") :method
+.sub "!PREFIX__prefix:sym<|>"  :subid("240_1258923257.41449") :method
 .annotate "line", 381
     $P956 = self."!PREFIX__!subrule"("O", "|")
     new $P957, "ResizablePMCArray"
@@ -11306,7 +11624,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<*>"  :subid("241_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<*>"  :subid("241_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx961_tgt
     .local int rx961_pos
@@ -11314,23 +11632,26 @@
     .local int rx961_eos
     .local int rx961_rep
     .local pmc rx961_cur
-    (rx961_cur, rx961_pos, rx961_tgt, $I10) = self."!cursor_start"()
+    (rx961_cur, rx961_pos, rx961_tgt) = self."!cursor_start"()
     rx961_cur."!cursor_debug"("START ", "infix:sym<*>")
     .lex unicode:"$\x{a2}", rx961_cur
     .local pmc match
     .lex "$/", match
     length rx961_eos, rx961_tgt
     set rx961_off, 0
-    lt $I10, 2, rx961_start
-    sub rx961_off, $I10, 1
+    lt rx961_pos, 2, rx961_start
+    sub rx961_off, rx961_pos, 1
     substr rx961_tgt, rx961_tgt, rx961_off
   rx961_start:
-    ge rx961_pos, 0, rxscan965_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan965_done
+    goto rxscan965_scan
   rxscan965_loop:
     ($P10) = rx961_cur."from"()
     inc $P10
     set rx961_pos, $P10
     ge rx961_pos, rx961_eos, rxscan965_done
+  rxscan965_scan:
     set_addr $I10, rxscan965_loop
     rx961_cur."!mark_push"(0, rx961_pos, $I10)
   rxscan965_done:
@@ -11382,7 +11703,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<*>"  :subid("242_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<*>"  :subid("242_1258923257.41449") :method
 .annotate "line", 381
     $P963 = self."!PREFIX__!subrule"("O", "*")
     new $P964, "ResizablePMCArray"
@@ -11392,7 +11713,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym</>"  :subid("243_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym</>"  :subid("243_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx968_tgt
     .local int rx968_pos
@@ -11400,23 +11721,26 @@
     .local int rx968_eos
     .local int rx968_rep
     .local pmc rx968_cur
-    (rx968_cur, rx968_pos, rx968_tgt, $I10) = self."!cursor_start"()
+    (rx968_cur, rx968_pos, rx968_tgt) = self."!cursor_start"()
     rx968_cur."!cursor_debug"("START ", "infix:sym</>")
     .lex unicode:"$\x{a2}", rx968_cur
     .local pmc match
     .lex "$/", match
     length rx968_eos, rx968_tgt
     set rx968_off, 0
-    lt $I10, 2, rx968_start
-    sub rx968_off, $I10, 1
+    lt rx968_pos, 2, rx968_start
+    sub rx968_off, rx968_pos, 1
     substr rx968_tgt, rx968_tgt, rx968_off
   rx968_start:
-    ge rx968_pos, 0, rxscan972_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan972_done
+    goto rxscan972_scan
   rxscan972_loop:
     ($P10) = rx968_cur."from"()
     inc $P10
     set rx968_pos, $P10
     ge rx968_pos, rx968_eos, rxscan972_done
+  rxscan972_scan:
     set_addr $I10, rxscan972_loop
     rx968_cur."!mark_push"(0, rx968_pos, $I10)
   rxscan972_done:
@@ -11468,7 +11792,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym</>"  :subid("244_1258904213.70809") :method
+.sub "!PREFIX__infix:sym</>"  :subid("244_1258923257.41449") :method
 .annotate "line", 381
     $P970 = self."!PREFIX__!subrule"("O", "/")
     new $P971, "ResizablePMCArray"
@@ -11478,7 +11802,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<%>"  :subid("245_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<%>"  :subid("245_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx975_tgt
     .local int rx975_pos
@@ -11486,23 +11810,26 @@
     .local int rx975_eos
     .local int rx975_rep
     .local pmc rx975_cur
-    (rx975_cur, rx975_pos, rx975_tgt, $I10) = self."!cursor_start"()
+    (rx975_cur, rx975_pos, rx975_tgt) = self."!cursor_start"()
     rx975_cur."!cursor_debug"("START ", "infix:sym<%>")
     .lex unicode:"$\x{a2}", rx975_cur
     .local pmc match
     .lex "$/", match
     length rx975_eos, rx975_tgt
     set rx975_off, 0
-    lt $I10, 2, rx975_start
-    sub rx975_off, $I10, 1
+    lt rx975_pos, 2, rx975_start
+    sub rx975_off, rx975_pos, 1
     substr rx975_tgt, rx975_tgt, rx975_off
   rx975_start:
-    ge rx975_pos, 0, rxscan979_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan979_done
+    goto rxscan979_scan
   rxscan979_loop:
     ($P10) = rx975_cur."from"()
     inc $P10
     set rx975_pos, $P10
     ge rx975_pos, rx975_eos, rxscan979_done
+  rxscan979_scan:
     set_addr $I10, rxscan979_loop
     rx975_cur."!mark_push"(0, rx975_pos, $I10)
   rxscan979_done:
@@ -11554,7 +11881,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<%>"  :subid("246_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<%>"  :subid("246_1258923257.41449") :method
 .annotate "line", 381
     $P977 = self."!PREFIX__!subrule"("O", "%")
     new $P978, "ResizablePMCArray"
@@ -11564,7 +11891,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<+>"  :subid("247_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<+>"  :subid("247_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx982_tgt
     .local int rx982_pos
@@ -11572,23 +11899,26 @@
     .local int rx982_eos
     .local int rx982_rep
     .local pmc rx982_cur
-    (rx982_cur, rx982_pos, rx982_tgt, $I10) = self."!cursor_start"()
+    (rx982_cur, rx982_pos, rx982_tgt) = self."!cursor_start"()
     rx982_cur."!cursor_debug"("START ", "infix:sym<+>")
     .lex unicode:"$\x{a2}", rx982_cur
     .local pmc match
     .lex "$/", match
     length rx982_eos, rx982_tgt
     set rx982_off, 0
-    lt $I10, 2, rx982_start
-    sub rx982_off, $I10, 1
+    lt rx982_pos, 2, rx982_start
+    sub rx982_off, rx982_pos, 1
     substr rx982_tgt, rx982_tgt, rx982_off
   rx982_start:
-    ge rx982_pos, 0, rxscan986_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan986_done
+    goto rxscan986_scan
   rxscan986_loop:
     ($P10) = rx982_cur."from"()
     inc $P10
     set rx982_pos, $P10
     ge rx982_pos, rx982_eos, rxscan986_done
+  rxscan986_scan:
     set_addr $I10, rxscan986_loop
     rx982_cur."!mark_push"(0, rx982_pos, $I10)
   rxscan986_done:
@@ -11640,7 +11970,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<+>"  :subid("248_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<+>"  :subid("248_1258923257.41449") :method
 .annotate "line", 381
     $P984 = self."!PREFIX__!subrule"("O", "+")
     new $P985, "ResizablePMCArray"
@@ -11650,7 +11980,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<->"  :subid("249_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<->"  :subid("249_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx989_tgt
     .local int rx989_pos
@@ -11658,23 +11988,26 @@
     .local int rx989_eos
     .local int rx989_rep
     .local pmc rx989_cur
-    (rx989_cur, rx989_pos, rx989_tgt, $I10) = self."!cursor_start"()
+    (rx989_cur, rx989_pos, rx989_tgt) = self."!cursor_start"()
     rx989_cur."!cursor_debug"("START ", "infix:sym<->")
     .lex unicode:"$\x{a2}", rx989_cur
     .local pmc match
     .lex "$/", match
     length rx989_eos, rx989_tgt
     set rx989_off, 0
-    lt $I10, 2, rx989_start
-    sub rx989_off, $I10, 1
+    lt rx989_pos, 2, rx989_start
+    sub rx989_off, rx989_pos, 1
     substr rx989_tgt, rx989_tgt, rx989_off
   rx989_start:
-    ge rx989_pos, 0, rxscan993_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan993_done
+    goto rxscan993_scan
   rxscan993_loop:
     ($P10) = rx989_cur."from"()
     inc $P10
     set rx989_pos, $P10
     ge rx989_pos, rx989_eos, rxscan993_done
+  rxscan993_scan:
     set_addr $I10, rxscan993_loop
     rx989_cur."!mark_push"(0, rx989_pos, $I10)
   rxscan993_done:
@@ -11726,7 +12059,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<->"  :subid("250_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<->"  :subid("250_1258923257.41449") :method
 .annotate "line", 381
     $P991 = self."!PREFIX__!subrule"("O", "-")
     new $P992, "ResizablePMCArray"
@@ -11736,7 +12069,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~>"  :subid("251_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<~>"  :subid("251_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx996_tgt
     .local int rx996_pos
@@ -11744,23 +12077,26 @@
     .local int rx996_eos
     .local int rx996_rep
     .local pmc rx996_cur
-    (rx996_cur, rx996_pos, rx996_tgt, $I10) = self."!cursor_start"()
+    (rx996_cur, rx996_pos, rx996_tgt) = self."!cursor_start"()
     rx996_cur."!cursor_debug"("START ", "infix:sym<~>")
     .lex unicode:"$\x{a2}", rx996_cur
     .local pmc match
     .lex "$/", match
     length rx996_eos, rx996_tgt
     set rx996_off, 0
-    lt $I10, 2, rx996_start
-    sub rx996_off, $I10, 1
+    lt rx996_pos, 2, rx996_start
+    sub rx996_off, rx996_pos, 1
     substr rx996_tgt, rx996_tgt, rx996_off
   rx996_start:
-    ge rx996_pos, 0, rxscan1000_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1000_done
+    goto rxscan1000_scan
   rxscan1000_loop:
     ($P10) = rx996_cur."from"()
     inc $P10
     set rx996_pos, $P10
     ge rx996_pos, rx996_eos, rxscan1000_done
+  rxscan1000_scan:
     set_addr $I10, rxscan1000_loop
     rx996_cur."!mark_push"(0, rx996_pos, $I10)
   rxscan1000_done:
@@ -11812,7 +12148,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~>"  :subid("252_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<~>"  :subid("252_1258923257.41449") :method
 .annotate "line", 381
     $P998 = self."!PREFIX__!subrule"("O", "~")
     new $P999, "ResizablePMCArray"
@@ -11822,7 +12158,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<==>"  :subid("253_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<==>"  :subid("253_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1003_tgt
     .local int rx1003_pos
@@ -11830,23 +12166,26 @@
     .local int rx1003_eos
     .local int rx1003_rep
     .local pmc rx1003_cur
-    (rx1003_cur, rx1003_pos, rx1003_tgt, $I10) = self."!cursor_start"()
+    (rx1003_cur, rx1003_pos, rx1003_tgt) = self."!cursor_start"()
     rx1003_cur."!cursor_debug"("START ", "infix:sym<==>")
     .lex unicode:"$\x{a2}", rx1003_cur
     .local pmc match
     .lex "$/", match
     length rx1003_eos, rx1003_tgt
     set rx1003_off, 0
-    lt $I10, 2, rx1003_start
-    sub rx1003_off, $I10, 1
+    lt rx1003_pos, 2, rx1003_start
+    sub rx1003_off, rx1003_pos, 1
     substr rx1003_tgt, rx1003_tgt, rx1003_off
   rx1003_start:
-    ge rx1003_pos, 0, rxscan1007_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1007_done
+    goto rxscan1007_scan
   rxscan1007_loop:
     ($P10) = rx1003_cur."from"()
     inc $P10
     set rx1003_pos, $P10
     ge rx1003_pos, rx1003_eos, rxscan1007_done
+  rxscan1007_scan:
     set_addr $I10, rxscan1007_loop
     rx1003_cur."!mark_push"(0, rx1003_pos, $I10)
   rxscan1007_done:
@@ -11898,7 +12237,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<==>"  :subid("254_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<==>"  :subid("254_1258923257.41449") :method
 .annotate "line", 381
     $P1005 = self."!PREFIX__!subrule"("O", "==")
     new $P1006, "ResizablePMCArray"
@@ -11908,7 +12247,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<!=>"  :subid("255_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<!=>"  :subid("255_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1010_tgt
     .local int rx1010_pos
@@ -11916,23 +12255,26 @@
     .local int rx1010_eos
     .local int rx1010_rep
     .local pmc rx1010_cur
-    (rx1010_cur, rx1010_pos, rx1010_tgt, $I10) = self."!cursor_start"()
+    (rx1010_cur, rx1010_pos, rx1010_tgt) = self."!cursor_start"()
     rx1010_cur."!cursor_debug"("START ", "infix:sym<!=>")
     .lex unicode:"$\x{a2}", rx1010_cur
     .local pmc match
     .lex "$/", match
     length rx1010_eos, rx1010_tgt
     set rx1010_off, 0
-    lt $I10, 2, rx1010_start
-    sub rx1010_off, $I10, 1
+    lt rx1010_pos, 2, rx1010_start
+    sub rx1010_off, rx1010_pos, 1
     substr rx1010_tgt, rx1010_tgt, rx1010_off
   rx1010_start:
-    ge rx1010_pos, 0, rxscan1014_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1014_done
+    goto rxscan1014_scan
   rxscan1014_loop:
     ($P10) = rx1010_cur."from"()
     inc $P10
     set rx1010_pos, $P10
     ge rx1010_pos, rx1010_eos, rxscan1014_done
+  rxscan1014_scan:
     set_addr $I10, rxscan1014_loop
     rx1010_cur."!mark_push"(0, rx1010_pos, $I10)
   rxscan1014_done:
@@ -11984,7 +12326,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<!=>"  :subid("256_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<!=>"  :subid("256_1258923257.41449") :method
 .annotate "line", 381
     $P1012 = self."!PREFIX__!subrule"("O", "!=")
     new $P1013, "ResizablePMCArray"
@@ -11994,7 +12336,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<=>"  :subid("257_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<<=>"  :subid("257_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1017_tgt
     .local int rx1017_pos
@@ -12002,23 +12344,26 @@
     .local int rx1017_eos
     .local int rx1017_rep
     .local pmc rx1017_cur
-    (rx1017_cur, rx1017_pos, rx1017_tgt, $I10) = self."!cursor_start"()
+    (rx1017_cur, rx1017_pos, rx1017_tgt) = self."!cursor_start"()
     rx1017_cur."!cursor_debug"("START ", "infix:sym<<=>")
     .lex unicode:"$\x{a2}", rx1017_cur
     .local pmc match
     .lex "$/", match
     length rx1017_eos, rx1017_tgt
     set rx1017_off, 0
-    lt $I10, 2, rx1017_start
-    sub rx1017_off, $I10, 1
+    lt rx1017_pos, 2, rx1017_start
+    sub rx1017_off, rx1017_pos, 1
     substr rx1017_tgt, rx1017_tgt, rx1017_off
   rx1017_start:
-    ge rx1017_pos, 0, rxscan1021_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1021_done
+    goto rxscan1021_scan
   rxscan1021_loop:
     ($P10) = rx1017_cur."from"()
     inc $P10
     set rx1017_pos, $P10
     ge rx1017_pos, rx1017_eos, rxscan1021_done
+  rxscan1021_scan:
     set_addr $I10, rxscan1021_loop
     rx1017_cur."!mark_push"(0, rx1017_pos, $I10)
   rxscan1021_done:
@@ -12070,7 +12415,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<=>"  :subid("258_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<<=>"  :subid("258_1258923257.41449") :method
 .annotate "line", 381
     $P1019 = self."!PREFIX__!subrule"("O", "<=")
     new $P1020, "ResizablePMCArray"
@@ -12080,7 +12425,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>=>"  :subid("259_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<>=>"  :subid("259_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1024_tgt
     .local int rx1024_pos
@@ -12088,23 +12433,26 @@
     .local int rx1024_eos
     .local int rx1024_rep
     .local pmc rx1024_cur
-    (rx1024_cur, rx1024_pos, rx1024_tgt, $I10) = self."!cursor_start"()
+    (rx1024_cur, rx1024_pos, rx1024_tgt) = self."!cursor_start"()
     rx1024_cur."!cursor_debug"("START ", "infix:sym<>=>")
     .lex unicode:"$\x{a2}", rx1024_cur
     .local pmc match
     .lex "$/", match
     length rx1024_eos, rx1024_tgt
     set rx1024_off, 0
-    lt $I10, 2, rx1024_start
-    sub rx1024_off, $I10, 1
+    lt rx1024_pos, 2, rx1024_start
+    sub rx1024_off, rx1024_pos, 1
     substr rx1024_tgt, rx1024_tgt, rx1024_off
   rx1024_start:
-    ge rx1024_pos, 0, rxscan1028_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1028_done
+    goto rxscan1028_scan
   rxscan1028_loop:
     ($P10) = rx1024_cur."from"()
     inc $P10
     set rx1024_pos, $P10
     ge rx1024_pos, rx1024_eos, rxscan1028_done
+  rxscan1028_scan:
     set_addr $I10, rxscan1028_loop
     rx1024_cur."!mark_push"(0, rx1024_pos, $I10)
   rxscan1028_done:
@@ -12156,7 +12504,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>=>"  :subid("260_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<>=>"  :subid("260_1258923257.41449") :method
 .annotate "line", 381
     $P1026 = self."!PREFIX__!subrule"("O", ">=")
     new $P1027, "ResizablePMCArray"
@@ -12166,7 +12514,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<>"  :subid("261_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<<>"  :subid("261_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1031_tgt
     .local int rx1031_pos
@@ -12174,23 +12522,26 @@
     .local int rx1031_eos
     .local int rx1031_rep
     .local pmc rx1031_cur
-    (rx1031_cur, rx1031_pos, rx1031_tgt, $I10) = self."!cursor_start"()
+    (rx1031_cur, rx1031_pos, rx1031_tgt) = self."!cursor_start"()
     rx1031_cur."!cursor_debug"("START ", "infix:sym<<>")
     .lex unicode:"$\x{a2}", rx1031_cur
     .local pmc match
     .lex "$/", match
     length rx1031_eos, rx1031_tgt
     set rx1031_off, 0
-    lt $I10, 2, rx1031_start
-    sub rx1031_off, $I10, 1
+    lt rx1031_pos, 2, rx1031_start
+    sub rx1031_off, rx1031_pos, 1
     substr rx1031_tgt, rx1031_tgt, rx1031_off
   rx1031_start:
-    ge rx1031_pos, 0, rxscan1035_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1035_done
+    goto rxscan1035_scan
   rxscan1035_loop:
     ($P10) = rx1031_cur."from"()
     inc $P10
     set rx1031_pos, $P10
     ge rx1031_pos, rx1031_eos, rxscan1035_done
+  rxscan1035_scan:
     set_addr $I10, rxscan1035_loop
     rx1031_cur."!mark_push"(0, rx1031_pos, $I10)
   rxscan1035_done:
@@ -12242,7 +12593,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<>"  :subid("262_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<<>"  :subid("262_1258923257.41449") :method
 .annotate "line", 381
     $P1033 = self."!PREFIX__!subrule"("O", "<")
     new $P1034, "ResizablePMCArray"
@@ -12252,7 +12603,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>>"  :subid("263_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<>>"  :subid("263_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1038_tgt
     .local int rx1038_pos
@@ -12260,23 +12611,26 @@
     .local int rx1038_eos
     .local int rx1038_rep
     .local pmc rx1038_cur
-    (rx1038_cur, rx1038_pos, rx1038_tgt, $I10) = self."!cursor_start"()
+    (rx1038_cur, rx1038_pos, rx1038_tgt) = self."!cursor_start"()
     rx1038_cur."!cursor_debug"("START ", "infix:sym<>>")
     .lex unicode:"$\x{a2}", rx1038_cur
     .local pmc match
     .lex "$/", match
     length rx1038_eos, rx1038_tgt
     set rx1038_off, 0
-    lt $I10, 2, rx1038_start
-    sub rx1038_off, $I10, 1
+    lt rx1038_pos, 2, rx1038_start
+    sub rx1038_off, rx1038_pos, 1
     substr rx1038_tgt, rx1038_tgt, rx1038_off
   rx1038_start:
-    ge rx1038_pos, 0, rxscan1042_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1042_done
+    goto rxscan1042_scan
   rxscan1042_loop:
     ($P10) = rx1038_cur."from"()
     inc $P10
     set rx1038_pos, $P10
     ge rx1038_pos, rx1038_eos, rxscan1042_done
+  rxscan1042_scan:
     set_addr $I10, rxscan1042_loop
     rx1038_cur."!mark_push"(0, rx1038_pos, $I10)
   rxscan1042_done:
@@ -12328,7 +12682,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>>"  :subid("264_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<>>"  :subid("264_1258923257.41449") :method
 .annotate "line", 381
     $P1040 = self."!PREFIX__!subrule"("O", ">")
     new $P1041, "ResizablePMCArray"
@@ -12338,7 +12692,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<eq>"  :subid("265_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<eq>"  :subid("265_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1045_tgt
     .local int rx1045_pos
@@ -12346,23 +12700,26 @@
     .local int rx1045_eos
     .local int rx1045_rep
     .local pmc rx1045_cur
-    (rx1045_cur, rx1045_pos, rx1045_tgt, $I10) = self."!cursor_start"()
+    (rx1045_cur, rx1045_pos, rx1045_tgt) = self."!cursor_start"()
     rx1045_cur."!cursor_debug"("START ", "infix:sym<eq>")
     .lex unicode:"$\x{a2}", rx1045_cur
     .local pmc match
     .lex "$/", match
     length rx1045_eos, rx1045_tgt
     set rx1045_off, 0
-    lt $I10, 2, rx1045_start
-    sub rx1045_off, $I10, 1
+    lt rx1045_pos, 2, rx1045_start
+    sub rx1045_off, rx1045_pos, 1
     substr rx1045_tgt, rx1045_tgt, rx1045_off
   rx1045_start:
-    ge rx1045_pos, 0, rxscan1049_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1049_done
+    goto rxscan1049_scan
   rxscan1049_loop:
     ($P10) = rx1045_cur."from"()
     inc $P10
     set rx1045_pos, $P10
     ge rx1045_pos, rx1045_eos, rxscan1049_done
+  rxscan1049_scan:
     set_addr $I10, rxscan1049_loop
     rx1045_cur."!mark_push"(0, rx1045_pos, $I10)
   rxscan1049_done:
@@ -12414,7 +12771,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<eq>"  :subid("266_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<eq>"  :subid("266_1258923257.41449") :method
 .annotate "line", 381
     $P1047 = self."!PREFIX__!subrule"("O", "eq")
     new $P1048, "ResizablePMCArray"
@@ -12424,7 +12781,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ne>"  :subid("267_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<ne>"  :subid("267_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1052_tgt
     .local int rx1052_pos
@@ -12432,23 +12789,26 @@
     .local int rx1052_eos
     .local int rx1052_rep
     .local pmc rx1052_cur
-    (rx1052_cur, rx1052_pos, rx1052_tgt, $I10) = self."!cursor_start"()
+    (rx1052_cur, rx1052_pos, rx1052_tgt) = self."!cursor_start"()
     rx1052_cur."!cursor_debug"("START ", "infix:sym<ne>")
     .lex unicode:"$\x{a2}", rx1052_cur
     .local pmc match
     .lex "$/", match
     length rx1052_eos, rx1052_tgt
     set rx1052_off, 0
-    lt $I10, 2, rx1052_start
-    sub rx1052_off, $I10, 1
+    lt rx1052_pos, 2, rx1052_start
+    sub rx1052_off, rx1052_pos, 1
     substr rx1052_tgt, rx1052_tgt, rx1052_off
   rx1052_start:
-    ge rx1052_pos, 0, rxscan1056_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1056_done
+    goto rxscan1056_scan
   rxscan1056_loop:
     ($P10) = rx1052_cur."from"()
     inc $P10
     set rx1052_pos, $P10
     ge rx1052_pos, rx1052_eos, rxscan1056_done
+  rxscan1056_scan:
     set_addr $I10, rxscan1056_loop
     rx1052_cur."!mark_push"(0, rx1052_pos, $I10)
   rxscan1056_done:
@@ -12500,7 +12860,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ne>"  :subid("268_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<ne>"  :subid("268_1258923257.41449") :method
 .annotate "line", 381
     $P1054 = self."!PREFIX__!subrule"("O", "ne")
     new $P1055, "ResizablePMCArray"
@@ -12510,7 +12870,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<le>"  :subid("269_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<le>"  :subid("269_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1059_tgt
     .local int rx1059_pos
@@ -12518,23 +12878,26 @@
     .local int rx1059_eos
     .local int rx1059_rep
     .local pmc rx1059_cur
-    (rx1059_cur, rx1059_pos, rx1059_tgt, $I10) = self."!cursor_start"()
+    (rx1059_cur, rx1059_pos, rx1059_tgt) = self."!cursor_start"()
     rx1059_cur."!cursor_debug"("START ", "infix:sym<le>")
     .lex unicode:"$\x{a2}", rx1059_cur
     .local pmc match
     .lex "$/", match
     length rx1059_eos, rx1059_tgt
     set rx1059_off, 0
-    lt $I10, 2, rx1059_start
-    sub rx1059_off, $I10, 1
+    lt rx1059_pos, 2, rx1059_start
+    sub rx1059_off, rx1059_pos, 1
     substr rx1059_tgt, rx1059_tgt, rx1059_off
   rx1059_start:
-    ge rx1059_pos, 0, rxscan1063_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1063_done
+    goto rxscan1063_scan
   rxscan1063_loop:
     ($P10) = rx1059_cur."from"()
     inc $P10
     set rx1059_pos, $P10
     ge rx1059_pos, rx1059_eos, rxscan1063_done
+  rxscan1063_scan:
     set_addr $I10, rxscan1063_loop
     rx1059_cur."!mark_push"(0, rx1059_pos, $I10)
   rxscan1063_done:
@@ -12586,7 +12949,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<le>"  :subid("270_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<le>"  :subid("270_1258923257.41449") :method
 .annotate "line", 381
     $P1061 = self."!PREFIX__!subrule"("O", "le")
     new $P1062, "ResizablePMCArray"
@@ -12596,7 +12959,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ge>"  :subid("271_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<ge>"  :subid("271_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1066_tgt
     .local int rx1066_pos
@@ -12604,23 +12967,26 @@
     .local int rx1066_eos
     .local int rx1066_rep
     .local pmc rx1066_cur
-    (rx1066_cur, rx1066_pos, rx1066_tgt, $I10) = self."!cursor_start"()
+    (rx1066_cur, rx1066_pos, rx1066_tgt) = self."!cursor_start"()
     rx1066_cur."!cursor_debug"("START ", "infix:sym<ge>")
     .lex unicode:"$\x{a2}", rx1066_cur
     .local pmc match
     .lex "$/", match
     length rx1066_eos, rx1066_tgt
     set rx1066_off, 0
-    lt $I10, 2, rx1066_start
-    sub rx1066_off, $I10, 1
+    lt rx1066_pos, 2, rx1066_start
+    sub rx1066_off, rx1066_pos, 1
     substr rx1066_tgt, rx1066_tgt, rx1066_off
   rx1066_start:
-    ge rx1066_pos, 0, rxscan1070_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1070_done
+    goto rxscan1070_scan
   rxscan1070_loop:
     ($P10) = rx1066_cur."from"()
     inc $P10
     set rx1066_pos, $P10
     ge rx1066_pos, rx1066_eos, rxscan1070_done
+  rxscan1070_scan:
     set_addr $I10, rxscan1070_loop
     rx1066_cur."!mark_push"(0, rx1066_pos, $I10)
   rxscan1070_done:
@@ -12672,7 +13038,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ge>"  :subid("272_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<ge>"  :subid("272_1258923257.41449") :method
 .annotate "line", 381
     $P1068 = self."!PREFIX__!subrule"("O", "ge")
     new $P1069, "ResizablePMCArray"
@@ -12682,7 +13048,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<lt>"  :subid("273_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<lt>"  :subid("273_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1073_tgt
     .local int rx1073_pos
@@ -12690,23 +13056,26 @@
     .local int rx1073_eos
     .local int rx1073_rep
     .local pmc rx1073_cur
-    (rx1073_cur, rx1073_pos, rx1073_tgt, $I10) = self."!cursor_start"()
+    (rx1073_cur, rx1073_pos, rx1073_tgt) = self."!cursor_start"()
     rx1073_cur."!cursor_debug"("START ", "infix:sym<lt>")
     .lex unicode:"$\x{a2}", rx1073_cur
     .local pmc match
     .lex "$/", match
     length rx1073_eos, rx1073_tgt
     set rx1073_off, 0
-    lt $I10, 2, rx1073_start
-    sub rx1073_off, $I10, 1
+    lt rx1073_pos, 2, rx1073_start
+    sub rx1073_off, rx1073_pos, 1
     substr rx1073_tgt, rx1073_tgt, rx1073_off
   rx1073_start:
-    ge rx1073_pos, 0, rxscan1077_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1077_done
+    goto rxscan1077_scan
   rxscan1077_loop:
     ($P10) = rx1073_cur."from"()
     inc $P10
     set rx1073_pos, $P10
     ge rx1073_pos, rx1073_eos, rxscan1077_done
+  rxscan1077_scan:
     set_addr $I10, rxscan1077_loop
     rx1073_cur."!mark_push"(0, rx1073_pos, $I10)
   rxscan1077_done:
@@ -12758,7 +13127,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<lt>"  :subid("274_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<lt>"  :subid("274_1258923257.41449") :method
 .annotate "line", 381
     $P1075 = self."!PREFIX__!subrule"("O", "lt")
     new $P1076, "ResizablePMCArray"
@@ -12768,7 +13137,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<gt>"  :subid("275_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<gt>"  :subid("275_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1080_tgt
     .local int rx1080_pos
@@ -12776,23 +13145,26 @@
     .local int rx1080_eos
     .local int rx1080_rep
     .local pmc rx1080_cur
-    (rx1080_cur, rx1080_pos, rx1080_tgt, $I10) = self."!cursor_start"()
+    (rx1080_cur, rx1080_pos, rx1080_tgt) = self."!cursor_start"()
     rx1080_cur."!cursor_debug"("START ", "infix:sym<gt>")
     .lex unicode:"$\x{a2}", rx1080_cur
     .local pmc match
     .lex "$/", match
     length rx1080_eos, rx1080_tgt
     set rx1080_off, 0
-    lt $I10, 2, rx1080_start
-    sub rx1080_off, $I10, 1
+    lt rx1080_pos, 2, rx1080_start
+    sub rx1080_off, rx1080_pos, 1
     substr rx1080_tgt, rx1080_tgt, rx1080_off
   rx1080_start:
-    ge rx1080_pos, 0, rxscan1084_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1084_done
+    goto rxscan1084_scan
   rxscan1084_loop:
     ($P10) = rx1080_cur."from"()
     inc $P10
     set rx1080_pos, $P10
     ge rx1080_pos, rx1080_eos, rxscan1084_done
+  rxscan1084_scan:
     set_addr $I10, rxscan1084_loop
     rx1080_cur."!mark_push"(0, rx1080_pos, $I10)
   rxscan1084_done:
@@ -12844,7 +13216,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<gt>"  :subid("276_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<gt>"  :subid("276_1258923257.41449") :method
 .annotate "line", 381
     $P1082 = self."!PREFIX__!subrule"("O", "gt")
     new $P1083, "ResizablePMCArray"
@@ -12854,7 +13226,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=:=>"  :subid("277_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<=:=>"  :subid("277_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1087_tgt
     .local int rx1087_pos
@@ -12862,23 +13234,26 @@
     .local int rx1087_eos
     .local int rx1087_rep
     .local pmc rx1087_cur
-    (rx1087_cur, rx1087_pos, rx1087_tgt, $I10) = self."!cursor_start"()
+    (rx1087_cur, rx1087_pos, rx1087_tgt) = self."!cursor_start"()
     rx1087_cur."!cursor_debug"("START ", "infix:sym<=:=>")
     .lex unicode:"$\x{a2}", rx1087_cur
     .local pmc match
     .lex "$/", match
     length rx1087_eos, rx1087_tgt
     set rx1087_off, 0
-    lt $I10, 2, rx1087_start
-    sub rx1087_off, $I10, 1
+    lt rx1087_pos, 2, rx1087_start
+    sub rx1087_off, rx1087_pos, 1
     substr rx1087_tgt, rx1087_tgt, rx1087_off
   rx1087_start:
-    ge rx1087_pos, 0, rxscan1091_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1091_done
+    goto rxscan1091_scan
   rxscan1091_loop:
     ($P10) = rx1087_cur."from"()
     inc $P10
     set rx1087_pos, $P10
     ge rx1087_pos, rx1087_eos, rxscan1091_done
+  rxscan1091_scan:
     set_addr $I10, rxscan1091_loop
     rx1087_cur."!mark_push"(0, rx1087_pos, $I10)
   rxscan1091_done:
@@ -12930,7 +13305,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=:=>"  :subid("278_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<=:=>"  :subid("278_1258923257.41449") :method
 .annotate "line", 381
     $P1089 = self."!PREFIX__!subrule"("O", "=:=")
     new $P1090, "ResizablePMCArray"
@@ -12940,7 +13315,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<&&>"  :subid("279_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<&&>"  :subid("279_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1094_tgt
     .local int rx1094_pos
@@ -12948,23 +13323,26 @@
     .local int rx1094_eos
     .local int rx1094_rep
     .local pmc rx1094_cur
-    (rx1094_cur, rx1094_pos, rx1094_tgt, $I10) = self."!cursor_start"()
+    (rx1094_cur, rx1094_pos, rx1094_tgt) = self."!cursor_start"()
     rx1094_cur."!cursor_debug"("START ", "infix:sym<&&>")
     .lex unicode:"$\x{a2}", rx1094_cur
     .local pmc match
     .lex "$/", match
     length rx1094_eos, rx1094_tgt
     set rx1094_off, 0
-    lt $I10, 2, rx1094_start
-    sub rx1094_off, $I10, 1
+    lt rx1094_pos, 2, rx1094_start
+    sub rx1094_off, rx1094_pos, 1
     substr rx1094_tgt, rx1094_tgt, rx1094_off
   rx1094_start:
-    ge rx1094_pos, 0, rxscan1098_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1098_done
+    goto rxscan1098_scan
   rxscan1098_loop:
     ($P10) = rx1094_cur."from"()
     inc $P10
     set rx1094_pos, $P10
     ge rx1094_pos, rx1094_eos, rxscan1098_done
+  rxscan1098_scan:
     set_addr $I10, rxscan1098_loop
     rx1094_cur."!mark_push"(0, rx1094_pos, $I10)
   rxscan1098_done:
@@ -13016,7 +13394,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<&&>"  :subid("280_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<&&>"  :subid("280_1258923257.41449") :method
 .annotate "line", 381
     $P1096 = self."!PREFIX__!subrule"("O", "&&")
     new $P1097, "ResizablePMCArray"
@@ -13026,7 +13404,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<||>"  :subid("281_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<||>"  :subid("281_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1101_tgt
     .local int rx1101_pos
@@ -13034,23 +13412,26 @@
     .local int rx1101_eos
     .local int rx1101_rep
     .local pmc rx1101_cur
-    (rx1101_cur, rx1101_pos, rx1101_tgt, $I10) = self."!cursor_start"()
+    (rx1101_cur, rx1101_pos, rx1101_tgt) = self."!cursor_start"()
     rx1101_cur."!cursor_debug"("START ", "infix:sym<||>")
     .lex unicode:"$\x{a2}", rx1101_cur
     .local pmc match
     .lex "$/", match
     length rx1101_eos, rx1101_tgt
     set rx1101_off, 0
-    lt $I10, 2, rx1101_start
-    sub rx1101_off, $I10, 1
+    lt rx1101_pos, 2, rx1101_start
+    sub rx1101_off, rx1101_pos, 1
     substr rx1101_tgt, rx1101_tgt, rx1101_off
   rx1101_start:
-    ge rx1101_pos, 0, rxscan1105_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1105_done
+    goto rxscan1105_scan
   rxscan1105_loop:
     ($P10) = rx1101_cur."from"()
     inc $P10
     set rx1101_pos, $P10
     ge rx1101_pos, rx1101_eos, rxscan1105_done
+  rxscan1105_scan:
     set_addr $I10, rxscan1105_loop
     rx1101_cur."!mark_push"(0, rx1101_pos, $I10)
   rxscan1105_done:
@@ -13102,7 +13483,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<||>"  :subid("282_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<||>"  :subid("282_1258923257.41449") :method
 .annotate "line", 381
     $P1103 = self."!PREFIX__!subrule"("O", "||")
     new $P1104, "ResizablePMCArray"
@@ -13112,7 +13493,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<//>"  :subid("283_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<//>"  :subid("283_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1108_tgt
     .local int rx1108_pos
@@ -13120,23 +13501,26 @@
     .local int rx1108_eos
     .local int rx1108_rep
     .local pmc rx1108_cur
-    (rx1108_cur, rx1108_pos, rx1108_tgt, $I10) = self."!cursor_start"()
+    (rx1108_cur, rx1108_pos, rx1108_tgt) = self."!cursor_start"()
     rx1108_cur."!cursor_debug"("START ", "infix:sym<//>")
     .lex unicode:"$\x{a2}", rx1108_cur
     .local pmc match
     .lex "$/", match
     length rx1108_eos, rx1108_tgt
     set rx1108_off, 0
-    lt $I10, 2, rx1108_start
-    sub rx1108_off, $I10, 1
+    lt rx1108_pos, 2, rx1108_start
+    sub rx1108_off, rx1108_pos, 1
     substr rx1108_tgt, rx1108_tgt, rx1108_off
   rx1108_start:
-    ge rx1108_pos, 0, rxscan1112_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1112_done
+    goto rxscan1112_scan
   rxscan1112_loop:
     ($P10) = rx1108_cur."from"()
     inc $P10
     set rx1108_pos, $P10
     ge rx1108_pos, rx1108_eos, rxscan1112_done
+  rxscan1112_scan:
     set_addr $I10, rxscan1112_loop
     rx1108_cur."!mark_push"(0, rx1108_pos, $I10)
   rxscan1112_done:
@@ -13188,7 +13572,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<//>"  :subid("284_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<//>"  :subid("284_1258923257.41449") :method
 .annotate "line", 381
     $P1110 = self."!PREFIX__!subrule"("O", "//")
     new $P1111, "ResizablePMCArray"
@@ -13198,7 +13582,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<?? !!>"  :subid("285_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<?? !!>"  :subid("285_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1115_tgt
     .local int rx1115_pos
@@ -13206,23 +13590,26 @@
     .local int rx1115_eos
     .local int rx1115_rep
     .local pmc rx1115_cur
-    (rx1115_cur, rx1115_pos, rx1115_tgt, $I10) = self."!cursor_start"()
+    (rx1115_cur, rx1115_pos, rx1115_tgt) = self."!cursor_start"()
     rx1115_cur."!cursor_debug"("START ", "infix:sym<?? !!>")
     .lex unicode:"$\x{a2}", rx1115_cur
     .local pmc match
     .lex "$/", match
     length rx1115_eos, rx1115_tgt
     set rx1115_off, 0
-    lt $I10, 2, rx1115_start
-    sub rx1115_off, $I10, 1
+    lt rx1115_pos, 2, rx1115_start
+    sub rx1115_off, rx1115_pos, 1
     substr rx1115_tgt, rx1115_tgt, rx1115_off
   rx1115_start:
-    ge rx1115_pos, 0, rxscan1119_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1119_done
+    goto rxscan1119_scan
   rxscan1119_loop:
     ($P10) = rx1115_cur."from"()
     inc $P10
     set rx1115_pos, $P10
     ge rx1115_pos, rx1115_eos, rxscan1119_done
+  rxscan1119_scan:
     set_addr $I10, rxscan1119_loop
     rx1115_cur."!mark_push"(0, rx1115_pos, $I10)
   rxscan1119_done:
@@ -13284,7 +13671,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<?? !!>"  :subid("286_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<?? !!>"  :subid("286_1258923257.41449") :method
 .annotate "line", 381
     $P1117 = self."!PREFIX__!subrule"("", "??")
     new $P1118, "ResizablePMCArray"
@@ -13294,7 +13681,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=>"  :subid("287_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<=>"  :subid("287_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1121_tgt
     .local int rx1121_pos
@@ -13302,23 +13689,26 @@
     .local int rx1121_eos
     .local int rx1121_rep
     .local pmc rx1121_cur
-    (rx1121_cur, rx1121_pos, rx1121_tgt, $I10) = self."!cursor_start"()
+    (rx1121_cur, rx1121_pos, rx1121_tgt) = self."!cursor_start"()
     rx1121_cur."!cursor_debug"("START ", "infix:sym<=>")
     .lex unicode:"$\x{a2}", rx1121_cur
     .local pmc match
     .lex "$/", match
     length rx1121_eos, rx1121_tgt
     set rx1121_off, 0
-    lt $I10, 2, rx1121_start
-    sub rx1121_off, $I10, 1
+    lt rx1121_pos, 2, rx1121_start
+    sub rx1121_off, rx1121_pos, 1
     substr rx1121_tgt, rx1121_tgt, rx1121_off
   rx1121_start:
-    ge rx1121_pos, 0, rxscan1125_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1125_done
+    goto rxscan1125_scan
   rxscan1125_loop:
     ($P10) = rx1121_cur."from"()
     inc $P10
     set rx1121_pos, $P10
     ge rx1121_pos, rx1121_eos, rxscan1125_done
+  rxscan1125_scan:
     set_addr $I10, rxscan1125_loop
     rx1121_cur."!mark_push"(0, rx1121_pos, $I10)
   rxscan1125_done:
@@ -13369,7 +13759,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=>"  :subid("288_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<=>"  :subid("288_1258923257.41449") :method
 .annotate "line", 381
     $P1123 = self."!PREFIX__!subrule"("", "=")
     new $P1124, "ResizablePMCArray"
@@ -13379,7 +13769,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<:=>"  :subid("289_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<:=>"  :subid("289_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1128_tgt
     .local int rx1128_pos
@@ -13387,23 +13777,26 @@
     .local int rx1128_eos
     .local int rx1128_rep
     .local pmc rx1128_cur
-    (rx1128_cur, rx1128_pos, rx1128_tgt, $I10) = self."!cursor_start"()
+    (rx1128_cur, rx1128_pos, rx1128_tgt) = self."!cursor_start"()
     rx1128_cur."!cursor_debug"("START ", "infix:sym<:=>")
     .lex unicode:"$\x{a2}", rx1128_cur
     .local pmc match
     .lex "$/", match
     length rx1128_eos, rx1128_tgt
     set rx1128_off, 0
-    lt $I10, 2, rx1128_start
-    sub rx1128_off, $I10, 1
+    lt rx1128_pos, 2, rx1128_start
+    sub rx1128_off, rx1128_pos, 1
     substr rx1128_tgt, rx1128_tgt, rx1128_off
   rx1128_start:
-    ge rx1128_pos, 0, rxscan1132_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1132_done
+    goto rxscan1132_scan
   rxscan1132_loop:
     ($P10) = rx1128_cur."from"()
     inc $P10
     set rx1128_pos, $P10
     ge rx1128_pos, rx1128_eos, rxscan1132_done
+  rxscan1132_scan:
     set_addr $I10, rxscan1132_loop
     rx1128_cur."!mark_push"(0, rx1128_pos, $I10)
   rxscan1132_done:
@@ -13455,7 +13848,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<:=>"  :subid("290_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<:=>"  :subid("290_1258923257.41449") :method
 .annotate "line", 381
     $P1130 = self."!PREFIX__!subrule"("O", ":=")
     new $P1131, "ResizablePMCArray"
@@ -13465,7 +13858,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<::=>"  :subid("291_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<::=>"  :subid("291_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1135_tgt
     .local int rx1135_pos
@@ -13473,23 +13866,26 @@
     .local int rx1135_eos
     .local int rx1135_rep
     .local pmc rx1135_cur
-    (rx1135_cur, rx1135_pos, rx1135_tgt, $I10) = self."!cursor_start"()
+    (rx1135_cur, rx1135_pos, rx1135_tgt) = self."!cursor_start"()
     rx1135_cur."!cursor_debug"("START ", "infix:sym<::=>")
     .lex unicode:"$\x{a2}", rx1135_cur
     .local pmc match
     .lex "$/", match
     length rx1135_eos, rx1135_tgt
     set rx1135_off, 0
-    lt $I10, 2, rx1135_start
-    sub rx1135_off, $I10, 1
+    lt rx1135_pos, 2, rx1135_start
+    sub rx1135_off, rx1135_pos, 1
     substr rx1135_tgt, rx1135_tgt, rx1135_off
   rx1135_start:
-    ge rx1135_pos, 0, rxscan1139_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1139_done
+    goto rxscan1139_scan
   rxscan1139_loop:
     ($P10) = rx1135_cur."from"()
     inc $P10
     set rx1135_pos, $P10
     ge rx1135_pos, rx1135_eos, rxscan1139_done
+  rxscan1139_scan:
     set_addr $I10, rxscan1139_loop
     rx1135_cur."!mark_push"(0, rx1135_pos, $I10)
   rxscan1139_done:
@@ -13541,7 +13937,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<::=>"  :subid("292_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<::=>"  :subid("292_1258923257.41449") :method
 .annotate "line", 381
     $P1137 = self."!PREFIX__!subrule"("O", "::=")
     new $P1138, "ResizablePMCArray"
@@ -13551,7 +13947,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<,>"  :subid("293_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "infix:sym<,>"  :subid("293_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1142_tgt
     .local int rx1142_pos
@@ -13559,23 +13955,26 @@
     .local int rx1142_eos
     .local int rx1142_rep
     .local pmc rx1142_cur
-    (rx1142_cur, rx1142_pos, rx1142_tgt, $I10) = self."!cursor_start"()
+    (rx1142_cur, rx1142_pos, rx1142_tgt) = self."!cursor_start"()
     rx1142_cur."!cursor_debug"("START ", "infix:sym<,>")
     .lex unicode:"$\x{a2}", rx1142_cur
     .local pmc match
     .lex "$/", match
     length rx1142_eos, rx1142_tgt
     set rx1142_off, 0
-    lt $I10, 2, rx1142_start
-    sub rx1142_off, $I10, 1
+    lt rx1142_pos, 2, rx1142_start
+    sub rx1142_off, rx1142_pos, 1
     substr rx1142_tgt, rx1142_tgt, rx1142_off
   rx1142_start:
-    ge rx1142_pos, 0, rxscan1146_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1146_done
+    goto rxscan1146_scan
   rxscan1146_loop:
     ($P10) = rx1142_cur."from"()
     inc $P10
     set rx1142_pos, $P10
     ge rx1142_pos, rx1142_eos, rxscan1146_done
+  rxscan1146_scan:
     set_addr $I10, rxscan1146_loop
     rx1142_cur."!mark_push"(0, rx1142_pos, $I10)
   rxscan1146_done:
@@ -13627,7 +14026,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<,>"  :subid("294_1258904213.70809") :method
+.sub "!PREFIX__infix:sym<,>"  :subid("294_1258923257.41449") :method
 .annotate "line", 381
     $P1144 = self."!PREFIX__!subrule"("O", ",")
     new $P1145, "ResizablePMCArray"
@@ -13637,7 +14036,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<return>"  :subid("295_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "prefix:sym<return>"  :subid("295_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1149_tgt
     .local int rx1149_pos
@@ -13645,23 +14044,26 @@
     .local int rx1149_eos
     .local int rx1149_rep
     .local pmc rx1149_cur
-    (rx1149_cur, rx1149_pos, rx1149_tgt, $I10) = self."!cursor_start"()
+    (rx1149_cur, rx1149_pos, rx1149_tgt) = self."!cursor_start"()
     rx1149_cur."!cursor_debug"("START ", "prefix:sym<return>")
     .lex unicode:"$\x{a2}", rx1149_cur
     .local pmc match
     .lex "$/", match
     length rx1149_eos, rx1149_tgt
     set rx1149_off, 0
-    lt $I10, 2, rx1149_start
-    sub rx1149_off, $I10, 1
+    lt rx1149_pos, 2, rx1149_start
+    sub rx1149_off, rx1149_pos, 1
     substr rx1149_tgt, rx1149_tgt, rx1149_off
   rx1149_start:
-    ge rx1149_pos, 0, rxscan1152_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1152_done
+    goto rxscan1152_scan
   rxscan1152_loop:
     ($P10) = rx1149_cur."from"()
     inc $P10
     set rx1149_pos, $P10
     ge rx1149_pos, rx1149_eos, rxscan1152_done
+  rxscan1152_scan:
     set_addr $I10, rxscan1152_loop
     rx1149_cur."!mark_push"(0, rx1149_pos, $I10)
   rxscan1152_done:
@@ -13719,7 +14121,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<return>"  :subid("296_1258904213.70809") :method
+.sub "!PREFIX__prefix:sym<return>"  :subid("296_1258923257.41449") :method
 .annotate "line", 381
     new $P1151, "ResizablePMCArray"
     push $P1151, "return"
@@ -13728,7 +14130,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<make>"  :subid("297_1258904213.70809") :method :outer("11_1258904213.70809")
+.sub "prefix:sym<make>"  :subid("297_1258923257.41449") :method :outer("11_1258923257.41449")
 .annotate "line", 381
     .local string rx1155_tgt
     .local int rx1155_pos
@@ -13736,23 +14138,26 @@
     .local int rx1155_eos
     .local int rx1155_rep
     .local pmc rx1155_cur
-    (rx1155_cur, rx1155_pos, rx1155_tgt, $I10) = self."!cursor_start"()
+    (rx1155_cur, rx1155_pos, rx1155_tgt) = self."!cursor_start"()
     rx1155_cur."!cursor_debug"("START ", "prefix:sym<make>")
     .lex unicode:"$\x{a2}", rx1155_cur
     .local pmc match
     .lex "$/", match
     length rx1155_eos, rx1155_tgt
     set rx1155_off, 0
-    lt $I10, 2, rx1155_start
-    sub rx1155_off, $I10, 1
+    lt rx1155_pos, 2, rx1155_start
+    sub rx1155_off, rx1155_pos, 1
     substr rx1155_tgt, rx1155_tgt, rx1155_off
   rx1155_start:
-    ge rx1155_pos, 0, rxscan1158_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1158_done
+    goto rxscan1158_scan
   rxscan1158_loop:
     ($P10) = rx1155_cur."from"()
     inc $P10
     set rx1155_pos, $P10
     ge rx1155_pos, rx1155_eos, rxscan1158_done
+  rxscan1158_scan:
     set_addr $I10, rxscan1158_loop
     rx1155_cur."!mark_push"(0, rx1155_pos, $I10)
   rxscan1158_done:
@@ -13810,7 +14215,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<make>"  :subid("298_1258904213.70809") :method
+.sub "!PREFIX__prefix:sym<make>"  :subid("298_1258923257.41449") :method
 .annotate "line", 381
     new $P1157, "ResizablePMCArray"
     push $P1157, "make"
@@ -13819,28 +14224,28 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1160"  :subid("299_1258904213.70809") :outer("11_1258904213.70809")
+.sub "_block1160"  :subid("299_1258923257.41449") :outer("11_1258923257.41449")
 .annotate "line", 489
-    .const 'Sub' $P1194 = "310_1258904213.70809" 
+    .const 'Sub' $P1194 = "310_1258923257.41449" 
     capture_lex $P1194
-    .const 'Sub' $P1181 = "307_1258904213.70809" 
+    .const 'Sub' $P1181 = "307_1258923257.41449" 
     capture_lex $P1181
-    .const 'Sub' $P1176 = "305_1258904213.70809" 
+    .const 'Sub' $P1176 = "305_1258923257.41449" 
     capture_lex $P1176
-    .const 'Sub' $P1171 = "303_1258904213.70809" 
+    .const 'Sub' $P1171 = "303_1258923257.41449" 
     capture_lex $P1171
-    .const 'Sub' $P1162 = "300_1258904213.70809" 
+    .const 'Sub' $P1162 = "300_1258923257.41449" 
     capture_lex $P1162
-    .const 'Sub' $P1194 = "310_1258904213.70809" 
+    .const 'Sub' $P1194 = "310_1258923257.41449" 
     capture_lex $P1194
     .return ($P1194)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<:my>"  :subid("300_1258904213.70809") :method :outer("299_1258904213.70809")
+.sub "metachar:sym<:my>"  :subid("300_1258923257.41449") :method :outer("299_1258923257.41449")
 .annotate "line", 489
-    .const 'Sub' $P1168 = "302_1258904213.70809" 
+    .const 'Sub' $P1168 = "302_1258923257.41449" 
     capture_lex $P1168
     .local string rx1163_tgt
     .local int rx1163_pos
@@ -13848,23 +14253,26 @@
     .local int rx1163_eos
     .local int rx1163_rep
     .local pmc rx1163_cur
-    (rx1163_cur, rx1163_pos, rx1163_tgt, $I10) = self."!cursor_start"()
+    (rx1163_cur, rx1163_pos, rx1163_tgt) = self."!cursor_start"()
     rx1163_cur."!cursor_debug"("START ", "metachar:sym<:my>")
     .lex unicode:"$\x{a2}", rx1163_cur
     .local pmc match
     .lex "$/", match
     length rx1163_eos, rx1163_tgt
     set rx1163_off, 0
-    lt $I10, 2, rx1163_start
-    sub rx1163_off, $I10, 1
+    lt rx1163_pos, 2, rx1163_start
+    sub rx1163_off, rx1163_pos, 1
     substr rx1163_tgt, rx1163_tgt, rx1163_off
   rx1163_start:
-    ge rx1163_pos, 0, rxscan1166_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1166_done
+    goto rxscan1166_scan
   rxscan1166_loop:
     ($P10) = rx1163_cur."from"()
     inc $P10
     set rx1163_pos, $P10
     ge rx1163_pos, rx1163_eos, rxscan1166_done
+  rxscan1166_scan:
     set_addr $I10, rxscan1166_loop
     rx1163_cur."!mark_push"(0, rx1163_pos, $I10)
   rxscan1166_done:
@@ -13878,7 +14286,7 @@
     add rx1163_pos, 1
   # rx subrule "before" subtype=zerowidth negate=
     rx1163_cur."!cursor_pos"(rx1163_pos)
-    .const 'Sub' $P1168 = "302_1258904213.70809" 
+    .const 'Sub' $P1168 = "302_1258923257.41449" 
     capture_lex $P1168
     $P10 = rx1163_cur."before"($P1168)
     unless $P10, rx1163_fail
@@ -13921,7 +14329,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<:my>"  :subid("301_1258904213.70809") :method
+.sub "!PREFIX__metachar:sym<:my>"  :subid("301_1258923257.41449") :method
 .annotate "line", 489
     new $P1165, "ResizablePMCArray"
     push $P1165, ":"
@@ -13930,7 +14338,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1167"  :anon :subid("302_1258904213.70809") :method :outer("300_1258904213.70809")
+.sub "_block1167"  :anon :subid("302_1258923257.41449") :method :outer("300_1258923257.41449")
 .annotate "line", 491
     .local string rx1169_tgt
     .local int rx1169_pos
@@ -13938,23 +14346,26 @@
     .local int rx1169_eos
     .local int rx1169_rep
     .local pmc rx1169_cur
-    (rx1169_cur, rx1169_pos, rx1169_tgt, $I10) = self."!cursor_start"()
+    (rx1169_cur, rx1169_pos, rx1169_tgt) = self."!cursor_start"()
     rx1169_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx1169_cur
     .local pmc match
     .lex "$/", match
     length rx1169_eos, rx1169_tgt
     set rx1169_off, 0
-    lt $I10, 2, rx1169_start
-    sub rx1169_off, $I10, 1
+    lt rx1169_pos, 2, rx1169_start
+    sub rx1169_off, rx1169_pos, 1
     substr rx1169_tgt, rx1169_tgt, rx1169_off
   rx1169_start:
-    ge rx1169_pos, 0, rxscan1170_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1170_done
+    goto rxscan1170_scan
   rxscan1170_loop:
     ($P10) = rx1169_cur."from"()
     inc $P10
     set rx1169_pos, $P10
     ge rx1169_pos, rx1169_eos, rxscan1170_done
+  rxscan1170_scan:
     set_addr $I10, rxscan1170_loop
     rx1169_cur."!mark_push"(0, rx1169_pos, $I10)
   rxscan1170_done:
@@ -13983,7 +14394,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<{ }>"  :subid("303_1258904213.70809") :method :outer("299_1258904213.70809")
+.sub "metachar:sym<{ }>"  :subid("303_1258923257.41449") :method :outer("299_1258923257.41449")
 .annotate "line", 489
     .local string rx1172_tgt
     .local int rx1172_pos
@@ -13991,23 +14402,26 @@
     .local int rx1172_eos
     .local int rx1172_rep
     .local pmc rx1172_cur
-    (rx1172_cur, rx1172_pos, rx1172_tgt, $I10) = self."!cursor_start"()
+    (rx1172_cur, rx1172_pos, rx1172_tgt) = self."!cursor_start"()
     rx1172_cur."!cursor_debug"("START ", "metachar:sym<{ }>")
     .lex unicode:"$\x{a2}", rx1172_cur
     .local pmc match
     .lex "$/", match
     length rx1172_eos, rx1172_tgt
     set rx1172_off, 0
-    lt $I10, 2, rx1172_start
-    sub rx1172_off, $I10, 1
+    lt rx1172_pos, 2, rx1172_start
+    sub rx1172_off, rx1172_pos, 1
     substr rx1172_tgt, rx1172_tgt, rx1172_off
   rx1172_start:
-    ge rx1172_pos, 0, rxscan1175_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1175_done
+    goto rxscan1175_scan
   rxscan1175_loop:
     ($P10) = rx1172_cur."from"()
     inc $P10
     set rx1172_pos, $P10
     ge rx1172_pos, rx1172_eos, rxscan1175_done
+  rxscan1175_scan:
     set_addr $I10, rxscan1175_loop
     rx1172_cur."!mark_push"(0, rx1172_pos, $I10)
   rxscan1175_done:
@@ -14045,7 +14459,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<{ }>"  :subid("304_1258904213.70809") :method
+.sub "!PREFIX__metachar:sym<{ }>"  :subid("304_1258923257.41449") :method
 .annotate "line", 489
     new $P1174, "ResizablePMCArray"
     push $P1174, "{"
@@ -14054,7 +14468,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<{ }>"  :subid("305_1258904213.70809") :method :outer("299_1258904213.70809")
+.sub "assertion:sym<{ }>"  :subid("305_1258923257.41449") :method :outer("299_1258923257.41449")
 .annotate "line", 489
     .local string rx1177_tgt
     .local int rx1177_pos
@@ -14062,23 +14476,26 @@
     .local int rx1177_eos
     .local int rx1177_rep
     .local pmc rx1177_cur
-    (rx1177_cur, rx1177_pos, rx1177_tgt, $I10) = self."!cursor_start"()
+    (rx1177_cur, rx1177_pos, rx1177_tgt) = self."!cursor_start"()
     rx1177_cur."!cursor_debug"("START ", "assertion:sym<{ }>")
     .lex unicode:"$\x{a2}", rx1177_cur
     .local pmc match
     .lex "$/", match
     length rx1177_eos, rx1177_tgt
     set rx1177_off, 0
-    lt $I10, 2, rx1177_start
-    sub rx1177_off, $I10, 1
+    lt rx1177_pos, 2, rx1177_start
+    sub rx1177_off, rx1177_pos, 1
     substr rx1177_tgt, rx1177_tgt, rx1177_off
   rx1177_start:
-    ge rx1177_pos, 0, rxscan1180_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1180_done
+    goto rxscan1180_scan
   rxscan1180_loop:
     ($P10) = rx1177_cur."from"()
     inc $P10
     set rx1177_pos, $P10
     ge rx1177_pos, rx1177_eos, rxscan1180_done
+  rxscan1180_scan:
     set_addr $I10, rxscan1180_loop
     rx1177_cur."!mark_push"(0, rx1177_pos, $I10)
   rxscan1180_done:
@@ -14116,7 +14533,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<{ }>"  :subid("306_1258904213.70809") :method
+.sub "!PREFIX__assertion:sym<{ }>"  :subid("306_1258923257.41449") :method
 .annotate "line", 489
     new $P1179, "ResizablePMCArray"
     push $P1179, "{"
@@ -14125,9 +14542,9 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<name>"  :subid("307_1258904213.70809") :method :outer("299_1258904213.70809")
+.sub "assertion:sym<name>"  :subid("307_1258923257.41449") :method :outer("299_1258923257.41449")
 .annotate "line", 489
-    .const 'Sub' $P1190 = "309_1258904213.70809" 
+    .const 'Sub' $P1190 = "309_1258923257.41449" 
     capture_lex $P1190
     .local string rx1182_tgt
     .local int rx1182_pos
@@ -14135,7 +14552,7 @@
     .local int rx1182_eos
     .local int rx1182_rep
     .local pmc rx1182_cur
-    (rx1182_cur, rx1182_pos, rx1182_tgt, $I10) = self."!cursor_start"()
+    (rx1182_cur, rx1182_pos, rx1182_tgt) = self."!cursor_start"()
     rx1182_cur."!cursor_debug"("START ", "assertion:sym<name>")
     rx1182_cur."!cursor_caparray"("assertion", "nibbler", "arglist")
     .lex unicode:"$\x{a2}", rx1182_cur
@@ -14143,16 +14560,19 @@
     .lex "$/", match
     length rx1182_eos, rx1182_tgt
     set rx1182_off, 0
-    lt $I10, 2, rx1182_start
-    sub rx1182_off, $I10, 1
+    lt rx1182_pos, 2, rx1182_start
+    sub rx1182_off, rx1182_pos, 1
     substr rx1182_tgt, rx1182_tgt, rx1182_off
   rx1182_start:
-    ge rx1182_pos, 0, rxscan1185_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1185_done
+    goto rxscan1185_scan
   rxscan1185_loop:
     ($P10) = rx1182_cur."from"()
     inc $P10
     set rx1182_pos, $P10
     ge rx1182_pos, rx1182_eos, rxscan1185_done
+  rxscan1185_scan:
     set_addr $I10, rxscan1185_loop
     rx1182_cur."!mark_push"(0, rx1182_pos, $I10)
   rxscan1185_done:
@@ -14189,7 +14609,7 @@
 .annotate "line", 505
   # rx subrule "before" subtype=zerowidth negate=
     rx1182_cur."!cursor_pos"(rx1182_pos)
-    .const 'Sub' $P1190 = "309_1258904213.70809" 
+    .const 'Sub' $P1190 = "309_1258923257.41449" 
     capture_lex $P1190
     $P10 = rx1182_cur."before"($P1190)
     unless $P10, rx1182_fail
@@ -14296,7 +14716,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<name>"  :subid("308_1258904213.70809") :method
+.sub "!PREFIX__assertion:sym<name>"  :subid("308_1258923257.41449") :method
 .annotate "line", 489
     new $P1184, "ResizablePMCArray"
     push $P1184, ""
@@ -14305,7 +14725,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1189"  :anon :subid("309_1258904213.70809") :method :outer("307_1258904213.70809")
+.sub "_block1189"  :anon :subid("309_1258923257.41449") :method :outer("307_1258923257.41449")
 .annotate "line", 505
     .local string rx1191_tgt
     .local int rx1191_pos
@@ -14313,23 +14733,26 @@
     .local int rx1191_eos
     .local int rx1191_rep
     .local pmc rx1191_cur
-    (rx1191_cur, rx1191_pos, rx1191_tgt, $I10) = self."!cursor_start"()
+    (rx1191_cur, rx1191_pos, rx1191_tgt) = self."!cursor_start"()
     rx1191_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx1191_cur
     .local pmc match
     .lex "$/", match
     length rx1191_eos, rx1191_tgt
     set rx1191_off, 0
-    lt $I10, 2, rx1191_start
-    sub rx1191_off, $I10, 1
+    lt rx1191_pos, 2, rx1191_start
+    sub rx1191_off, rx1191_pos, 1
     substr rx1191_tgt, rx1191_tgt, rx1191_off
   rx1191_start:
-    ge rx1191_pos, 0, rxscan1192_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1192_done
+    goto rxscan1192_scan
   rxscan1192_loop:
     ($P10) = rx1191_cur."from"()
     inc $P10
     set rx1191_pos, $P10
     ge rx1191_pos, rx1191_eos, rxscan1192_done
+  rxscan1192_scan:
     set_addr $I10, rxscan1192_loop
     rx1191_cur."!mark_push"(0, rx1191_pos, $I10)
   rxscan1192_done:
@@ -14358,7 +14781,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "codeblock"  :subid("310_1258904213.70809") :method :outer("299_1258904213.70809")
+.sub "codeblock"  :subid("310_1258923257.41449") :method :outer("299_1258923257.41449")
 .annotate "line", 489
     .local string rx1195_tgt
     .local int rx1195_pos
@@ -14366,23 +14789,26 @@
     .local int rx1195_eos
     .local int rx1195_rep
     .local pmc rx1195_cur
-    (rx1195_cur, rx1195_pos, rx1195_tgt, $I10) = self."!cursor_start"()
+    (rx1195_cur, rx1195_pos, rx1195_tgt) = self."!cursor_start"()
     rx1195_cur."!cursor_debug"("START ", "codeblock")
     .lex unicode:"$\x{a2}", rx1195_cur
     .local pmc match
     .lex "$/", match
     length rx1195_eos, rx1195_tgt
     set rx1195_off, 0
-    lt $I10, 2, rx1195_start
-    sub rx1195_off, $I10, 1
+    lt rx1195_pos, 2, rx1195_start
+    sub rx1195_off, rx1195_pos, 1
     substr rx1195_tgt, rx1195_tgt, rx1195_off
   rx1195_start:
-    ge rx1195_pos, 0, rxscan1199_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1199_done
+    goto rxscan1199_scan
   rxscan1199_loop:
     ($P10) = rx1195_cur."from"()
     inc $P10
     set rx1195_pos, $P10
     ge rx1195_pos, rx1195_eos, rxscan1199_done
+  rxscan1199_scan:
     set_addr $I10, rxscan1199_loop
     rx1195_cur."!mark_push"(0, rx1195_pos, $I10)
   rxscan1199_done:
@@ -14414,7 +14840,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__codeblock"  :subid("311_1258904213.70809") :method
+.sub "!PREFIX__codeblock"  :subid("311_1258923257.41449") :method
 .annotate "line", 489
     $P1197 = self."!PREFIX__!subrule"("block", "")
     new $P1198, "ResizablePMCArray"
@@ -14425,7 +14851,7 @@
 ### .include 'gen/nqp-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1258904224.56063")
+.sub "_block11"  :anon :subid("10_1258923268.31051")
 .annotate "line", 0
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     capture_lex $P14
@@ -14439,9 +14865,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post114") :outer("10_1258904224.56063")
+.sub "" :load :init :subid("post114") :outer("10_1258923268.31051")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1258904224.56063" 
+    .const 'Sub' $P12 = "10_1258923268.31051" 
     .local pmc block
     set block, $P12
     $P1910 = get_root_global ["parrot"], "P6metaclass"
@@ -14450,177 +14876,177 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block13"  :subid("11_1258904224.56063") :outer("10_1258904224.56063")
+.sub "_block13"  :subid("11_1258923268.31051") :outer("10_1258923268.31051")
 .annotate "line", 3
-    .const 'Sub' $P1905 = "113_1258904224.56063" 
+    .const 'Sub' $P1905 = "113_1258923268.31051" 
     capture_lex $P1905
     get_hll_global $P1841, ["NQP";"RegexActions"], "_block1840" 
     capture_lex $P1841
-    .const 'Sub' $P1828 = "107_1258904224.56063" 
+    .const 'Sub' $P1828 = "107_1258923268.31051" 
     capture_lex $P1828
-    .const 'Sub' $P1818 = "106_1258904224.56063" 
+    .const 'Sub' $P1818 = "106_1258923268.31051" 
     capture_lex $P1818
-    .const 'Sub' $P1808 = "105_1258904224.56063" 
+    .const 'Sub' $P1808 = "105_1258923268.31051" 
     capture_lex $P1808
-    .const 'Sub' $P1798 = "104_1258904224.56063" 
+    .const 'Sub' $P1798 = "104_1258923268.31051" 
     capture_lex $P1798
-    .const 'Sub' $P1784 = "103_1258904224.56063" 
+    .const 'Sub' $P1784 = "103_1258923268.31051" 
     capture_lex $P1784
-    .const 'Sub' $P1774 = "102_1258904224.56063" 
+    .const 'Sub' $P1774 = "102_1258923268.31051" 
     capture_lex $P1774
-    .const 'Sub' $P1760 = "101_1258904224.56063" 
+    .const 'Sub' $P1760 = "101_1258923268.31051" 
     capture_lex $P1760
-    .const 'Sub' $P1750 = "100_1258904224.56063" 
+    .const 'Sub' $P1750 = "100_1258923268.31051" 
     capture_lex $P1750
-    .const 'Sub' $P1740 = "99_1258904224.56063" 
+    .const 'Sub' $P1740 = "99_1258923268.31051" 
     capture_lex $P1740
-    .const 'Sub' $P1730 = "98_1258904224.56063" 
+    .const 'Sub' $P1730 = "98_1258923268.31051" 
     capture_lex $P1730
-    .const 'Sub' $P1720 = "97_1258904224.56063" 
+    .const 'Sub' $P1720 = "97_1258923268.31051" 
     capture_lex $P1720
-    .const 'Sub' $P1710 = "96_1258904224.56063" 
+    .const 'Sub' $P1710 = "96_1258923268.31051" 
     capture_lex $P1710
-    .const 'Sub' $P1682 = "95_1258904224.56063" 
+    .const 'Sub' $P1682 = "95_1258923268.31051" 
     capture_lex $P1682
-    .const 'Sub' $P1672 = "94_1258904224.56063" 
+    .const 'Sub' $P1672 = "94_1258923268.31051" 
     capture_lex $P1672
-    .const 'Sub' $P1660 = "93_1258904224.56063" 
+    .const 'Sub' $P1660 = "93_1258923268.31051" 
     capture_lex $P1660
-    .const 'Sub' $P1648 = "92_1258904224.56063" 
+    .const 'Sub' $P1648 = "92_1258923268.31051" 
     capture_lex $P1648
-    .const 'Sub' $P1636 = "91_1258904224.56063" 
+    .const 'Sub' $P1636 = "91_1258923268.31051" 
     capture_lex $P1636
-    .const 'Sub' $P1626 = "90_1258904224.56063" 
+    .const 'Sub' $P1626 = "90_1258923268.31051" 
     capture_lex $P1626
-    .const 'Sub' $P1597 = "89_1258904224.56063" 
+    .const 'Sub' $P1597 = "89_1258923268.31051" 
     capture_lex $P1597
-    .const 'Sub' $P1573 = "88_1258904224.56063" 
+    .const 'Sub' $P1573 = "88_1258923268.31051" 
     capture_lex $P1573
-    .const 'Sub' $P1563 = "87_1258904224.56063" 
+    .const 'Sub' $P1563 = "87_1258923268.31051" 
     capture_lex $P1563
-    .const 'Sub' $P1536 = "86_1258904224.56063" 
+    .const 'Sub' $P1536 = "86_1258923268.31051" 
     capture_lex $P1536
-    .const 'Sub' $P1518 = "85_1258904224.56063" 
+    .const 'Sub' $P1518 = "85_1258923268.31051" 
     capture_lex $P1518
-    .const 'Sub' $P1508 = "84_1258904224.56063" 
+    .const 'Sub' $P1508 = "84_1258923268.31051" 
     capture_lex $P1508
-    .const 'Sub' $P1424 = "81_1258904224.56063" 
+    .const 'Sub' $P1424 = "81_1258923268.31051" 
     capture_lex $P1424
-    .const 'Sub' $P1414 = "80_1258904224.56063" 
+    .const 'Sub' $P1414 = "80_1258923268.31051" 
     capture_lex $P1414
-    .const 'Sub' $P1385 = "79_1258904224.56063" 
+    .const 'Sub' $P1385 = "79_1258923268.31051" 
     capture_lex $P1385
-    .const 'Sub' $P1343 = "78_1258904224.56063" 
+    .const 'Sub' $P1343 = "78_1258923268.31051" 
     capture_lex $P1343
-    .const 'Sub' $P1327 = "77_1258904224.56063" 
+    .const 'Sub' $P1327 = "77_1258923268.31051" 
     capture_lex $P1327
-    .const 'Sub' $P1318 = "76_1258904224.56063" 
+    .const 'Sub' $P1318 = "76_1258923268.31051" 
     capture_lex $P1318
-    .const 'Sub' $P1286 = "75_1258904224.56063" 
+    .const 'Sub' $P1286 = "75_1258923268.31051" 
     capture_lex $P1286
-    .const 'Sub' $P1199 = "73_1258904224.56063" 
+    .const 'Sub' $P1199 = "73_1258923268.31051" 
     capture_lex $P1199
-    .const 'Sub' $P1182 = "72_1258904224.56063" 
+    .const 'Sub' $P1182 = "72_1258923268.31051" 
     capture_lex $P1182
-    .const 'Sub' $P1162 = "71_1258904224.56063" 
+    .const 'Sub' $P1162 = "71_1258923268.31051" 
     capture_lex $P1162
-    .const 'Sub' $P1078 = "70_1258904224.56063" 
+    .const 'Sub' $P1078 = "70_1258923268.31051" 
     capture_lex $P1078
-    .const 'Sub' $P1054 = "68_1258904224.56063" 
+    .const 'Sub' $P1054 = "68_1258923268.31051" 
     capture_lex $P1054
-    .const 'Sub' $P1020 = "66_1258904224.56063" 
+    .const 'Sub' $P1020 = "66_1258923268.31051" 
     capture_lex $P1020
-    .const 'Sub' $P974 = "64_1258904224.56063" 
+    .const 'Sub' $P974 = "64_1258923268.31051" 
     capture_lex $P974
-    .const 'Sub' $P964 = "63_1258904224.56063" 
+    .const 'Sub' $P964 = "63_1258923268.31051" 
     capture_lex $P964
-    .const 'Sub' $P954 = "62_1258904224.56063" 
+    .const 'Sub' $P954 = "62_1258923268.31051" 
     capture_lex $P954
-    .const 'Sub' $P883 = "60_1258904224.56063" 
+    .const 'Sub' $P883 = "60_1258923268.31051" 
     capture_lex $P883
-    .const 'Sub' $P866 = "59_1258904224.56063" 
+    .const 'Sub' $P866 = "59_1258923268.31051" 
     capture_lex $P866
-    .const 'Sub' $P856 = "58_1258904224.56063" 
+    .const 'Sub' $P856 = "58_1258923268.31051" 
     capture_lex $P856
-    .const 'Sub' $P846 = "57_1258904224.56063" 
+    .const 'Sub' $P846 = "57_1258923268.31051" 
     capture_lex $P846
-    .const 'Sub' $P836 = "56_1258904224.56063" 
+    .const 'Sub' $P836 = "56_1258923268.31051" 
     capture_lex $P836
-    .const 'Sub' $P812 = "55_1258904224.56063" 
+    .const 'Sub' $P812 = "55_1258923268.31051" 
     capture_lex $P812
-    .const 'Sub' $P759 = "54_1258904224.56063" 
+    .const 'Sub' $P759 = "54_1258923268.31051" 
     capture_lex $P759
-    .const 'Sub' $P749 = "53_1258904224.56063" 
+    .const 'Sub' $P749 = "53_1258923268.31051" 
     capture_lex $P749
-    .const 'Sub' $P660 = "51_1258904224.56063" 
+    .const 'Sub' $P660 = "51_1258923268.31051" 
     capture_lex $P660
-    .const 'Sub' $P634 = "50_1258904224.56063" 
+    .const 'Sub' $P634 = "50_1258923268.31051" 
     capture_lex $P634
-    .const 'Sub' $P624 = "49_1258904224.56063" 
+    .const 'Sub' $P624 = "49_1258923268.31051" 
     capture_lex $P624
-    .const 'Sub' $P614 = "48_1258904224.56063" 
+    .const 'Sub' $P614 = "48_1258923268.31051" 
     capture_lex $P614
-    .const 'Sub' $P604 = "47_1258904224.56063" 
+    .const 'Sub' $P604 = "47_1258923268.31051" 
     capture_lex $P604
-    .const 'Sub' $P594 = "46_1258904224.56063" 
+    .const 'Sub' $P594 = "46_1258923268.31051" 
     capture_lex $P594
-    .const 'Sub' $P584 = "45_1258904224.56063" 
+    .const 'Sub' $P584 = "45_1258923268.31051" 
     capture_lex $P584
-    .const 'Sub' $P574 = "44_1258904224.56063" 
+    .const 'Sub' $P574 = "44_1258923268.31051" 
     capture_lex $P574
-    .const 'Sub' $P564 = "43_1258904224.56063" 
+    .const 'Sub' $P564 = "43_1258923268.31051" 
     capture_lex $P564
-    .const 'Sub' $P554 = "42_1258904224.56063" 
+    .const 'Sub' $P554 = "42_1258923268.31051" 
     capture_lex $P554
-    .const 'Sub' $P544 = "41_1258904224.56063" 
+    .const 'Sub' $P544 = "41_1258923268.31051" 
     capture_lex $P544
-    .const 'Sub' $P534 = "40_1258904224.56063" 
+    .const 'Sub' $P534 = "40_1258923268.31051" 
     capture_lex $P534
-    .const 'Sub' $P524 = "39_1258904224.56063" 
+    .const 'Sub' $P524 = "39_1258923268.31051" 
     capture_lex $P524
-    .const 'Sub' $P514 = "38_1258904224.56063" 
+    .const 'Sub' $P514 = "38_1258923268.31051" 
     capture_lex $P514
-    .const 'Sub' $P496 = "37_1258904224.56063" 
+    .const 'Sub' $P496 = "37_1258923268.31051" 
     capture_lex $P496
-    .const 'Sub' $P480 = "36_1258904224.56063" 
+    .const 'Sub' $P480 = "36_1258923268.31051" 
     capture_lex $P480
-    .const 'Sub' $P467 = "35_1258904224.56063" 
+    .const 'Sub' $P467 = "35_1258923268.31051" 
     capture_lex $P467
-    .const 'Sub' $P441 = "34_1258904224.56063" 
+    .const 'Sub' $P441 = "34_1258923268.31051" 
     capture_lex $P441
-    .const 'Sub' $P405 = "33_1258904224.56063" 
+    .const 'Sub' $P405 = "33_1258923268.31051" 
     capture_lex $P405
-    .const 'Sub' $P388 = "32_1258904224.56063" 
+    .const 'Sub' $P388 = "32_1258923268.31051" 
     capture_lex $P388
-    .const 'Sub' $P374 = "31_1258904224.56063" 
+    .const 'Sub' $P374 = "31_1258923268.31051" 
     capture_lex $P374
-    .const 'Sub' $P319 = "29_1258904224.56063" 
+    .const 'Sub' $P319 = "29_1258923268.31051" 
     capture_lex $P319
-    .const 'Sub' $P306 = "28_1258904224.56063" 
+    .const 'Sub' $P306 = "28_1258923268.31051" 
     capture_lex $P306
-    .const 'Sub' $P287 = "27_1258904224.56063" 
+    .const 'Sub' $P287 = "27_1258923268.31051" 
     capture_lex $P287
-    .const 'Sub' $P277 = "26_1258904224.56063" 
+    .const 'Sub' $P277 = "26_1258923268.31051" 
     capture_lex $P277
-    .const 'Sub' $P267 = "25_1258904224.56063" 
+    .const 'Sub' $P267 = "25_1258923268.31051" 
     capture_lex $P267
-    .const 'Sub' $P251 = "24_1258904224.56063" 
+    .const 'Sub' $P251 = "24_1258923268.31051" 
     capture_lex $P251
-    .const 'Sub' $P173 = "22_1258904224.56063" 
+    .const 'Sub' $P173 = "22_1258923268.31051" 
     capture_lex $P173
-    .const 'Sub' $P130 = "20_1258904224.56063" 
+    .const 'Sub' $P130 = "20_1258923268.31051" 
     capture_lex $P130
-    .const 'Sub' $P111 = "19_1258904224.56063" 
+    .const 'Sub' $P111 = "19_1258923268.31051" 
     capture_lex $P111
-    .const 'Sub' $P89 = "18_1258904224.56063" 
+    .const 'Sub' $P89 = "18_1258923268.31051" 
     capture_lex $P89
-    .const 'Sub' $P79 = "17_1258904224.56063" 
+    .const 'Sub' $P79 = "17_1258923268.31051" 
     capture_lex $P79
-    .const 'Sub' $P57 = "16_1258904224.56063" 
+    .const 'Sub' $P57 = "16_1258923268.31051" 
     capture_lex $P57
-    .const 'Sub' $P26 = "13_1258904224.56063" 
+    .const 'Sub' $P26 = "13_1258923268.31051" 
     capture_lex $P26
-    .const 'Sub' $P16 = "12_1258904224.56063" 
+    .const 'Sub' $P16 = "12_1258923268.31051" 
     capture_lex $P16
     get_global $P15, "@BLOCK"
     unless_null $P15, vivify_117
@@ -14628,15 +15054,15 @@
     set_global "@BLOCK", $P15
   vivify_117:
 .annotate "line", 9
-    .const 'Sub' $P16 = "12_1258904224.56063" 
+    .const 'Sub' $P16 = "12_1258923268.31051" 
     capture_lex $P16
     .lex "xblock_immediate", $P16
 .annotate "line", 14
-    .const 'Sub' $P26 = "13_1258904224.56063" 
+    .const 'Sub' $P26 = "13_1258923268.31051" 
     capture_lex $P26
     .lex "block_immediate", $P26
 .annotate "line", 24
-    .const 'Sub' $P57 = "16_1258904224.56063" 
+    .const 'Sub' $P57 = "16_1258923268.31051" 
     capture_lex $P57
     .lex "sigiltype", $P57
 .annotate "line", 3
@@ -14655,13 +15081,13 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "" :load :init :subid("post115") :outer("11_1258904224.56063")
+.sub "" :load :init :subid("post115") :outer("11_1258923268.31051")
 .annotate "line", 3
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     .local pmc block
     set block, $P14
 .annotate "line", 5
-    .const 'Sub' $P1905 = "113_1258904224.56063" 
+    .const 'Sub' $P1905 = "113_1258923268.31051" 
     capture_lex $P1905
     $P1905()
     $P1908 = get_root_global ["parrot"], "P6metaclass"
@@ -14670,7 +15096,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1904"  :anon :subid("113_1258904224.56063") :outer("11_1258904224.56063")
+.sub "_block1904"  :anon :subid("113_1258923268.31051") :outer("11_1258923268.31051")
 .annotate "line", 6
     get_global $P1906, "@BLOCK"
     unless_null $P1906, vivify_116
@@ -14685,7 +15111,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "xblock_immediate"  :subid("12_1258904224.56063") :outer("11_1258904224.56063")
+.sub "xblock_immediate"  :subid("12_1258923268.31051") :outer("11_1258923268.31051")
     .param pmc param_19
 .annotate "line", 9
     new $P18, 'ExceptionHandler'
@@ -14721,10 +15147,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "block_immediate"  :subid("13_1258904224.56063") :outer("11_1258904224.56063")
+.sub "block_immediate"  :subid("13_1258923268.31051") :outer("11_1258923268.31051")
     .param pmc param_29
 .annotate "line", 14
-    .const 'Sub' $P35 = "14_1258904224.56063" 
+    .const 'Sub' $P35 = "14_1258923268.31051" 
     capture_lex $P35
     new $P28, 'ExceptionHandler'
     set_addr $P28, control_27
@@ -14738,7 +15164,7 @@
     find_lex $P32, "$block"
     $P33 = $P32."symtable"()
     if $P33, unless_31_end
-    .const 'Sub' $P35 = "14_1258904224.56063" 
+    .const 'Sub' $P35 = "14_1258923268.31051" 
     capture_lex $P35
     $P35()
   unless_31_end:
@@ -14754,9 +15180,9 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block34"  :anon :subid("14_1258904224.56063") :outer("13_1258904224.56063")
+.sub "_block34"  :anon :subid("14_1258923268.31051") :outer("13_1258923268.31051")
 .annotate "line", 16
-    .const 'Sub' $P46 = "15_1258904224.56063" 
+    .const 'Sub' $P46 = "15_1258923268.31051" 
     capture_lex $P46
 .annotate "line", 17
     new $P36, "Undef"
@@ -14779,7 +15205,7 @@
     unless $P40, loop51_done
     shift $P44, $P40
   loop51_redo:
-    .const 'Sub' $P46 = "15_1258904224.56063" 
+    .const 'Sub' $P46 = "15_1258923268.31051" 
     capture_lex $P46
     $P46($P44)
   loop51_next:
@@ -14802,7 +15228,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block45"  :anon :subid("15_1258904224.56063") :outer("14_1258904224.56063")
+.sub "_block45"  :anon :subid("15_1258923268.31051") :outer("14_1258923268.31051")
     .param pmc param_47
 .annotate "line", 18
     .lex "$_", param_47
@@ -14814,7 +15240,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "sigiltype"  :subid("16_1258904224.56063") :outer("11_1258904224.56063")
+.sub "sigiltype"  :subid("16_1258923268.31051") :outer("11_1258923268.31051")
     .param pmc param_60
 .annotate "line", 24
     new $P59, 'ExceptionHandler'
@@ -14860,7 +15286,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "TOP"  :subid("17_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "TOP"  :subid("17_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_82
 .annotate "line", 30
     new $P81, 'ExceptionHandler'
@@ -14890,7 +15316,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "deflongname"  :subid("18_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "deflongname"  :subid("18_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_92
 .annotate "line", 32
     new $P91, 'ExceptionHandler'
@@ -14954,7 +15380,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "comp_unit"  :subid("19_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "comp_unit"  :subid("19_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_114
 .annotate "line", 36
     new $P113, 'ExceptionHandler'
@@ -15007,10 +15433,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statementlist"  :subid("20_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statementlist"  :subid("20_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_133
 .annotate "line", 44
-    .const 'Sub' $P147 = "21_1258904224.56063" 
+    .const 'Sub' $P147 = "21_1258923268.31051" 
     capture_lex $P147
     new $P132, 'ExceptionHandler'
     set_addr $P132, control_131
@@ -15055,7 +15481,7 @@
     unless $P141, loop166_done
     shift $P145, $P141
   loop166_redo:
-    .const 'Sub' $P147 = "21_1258904224.56063" 
+    .const 'Sub' $P147 = "21_1258923268.31051" 
     capture_lex $P147
     $P147($P145)
   loop166_next:
@@ -15085,7 +15511,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block146"  :anon :subid("21_1258904224.56063") :outer("20_1258904224.56063")
+.sub "_block146"  :anon :subid("21_1258923268.31051") :outer("20_1258923268.31051")
     .param pmc param_149
 .annotate "line", 48
     new $P148, "Undef"
@@ -15124,12 +15550,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement"  :subid("22_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statement"  :subid("22_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_176
     .param pmc param_177 :optional
     .param int has_param_177 :opt_flag
 .annotate "line", 58
-    .const 'Sub' $P185 = "23_1258904224.56063" 
+    .const 'Sub' $P185 = "23_1258923268.31051" 
     capture_lex $P185
     new $P175, 'ExceptionHandler'
     set_addr $P175, control_174
@@ -15188,7 +15614,7 @@
     goto if_181_end
   if_181:
 .annotate "line", 60
-    .const 'Sub' $P185 = "23_1258904224.56063" 
+    .const 'Sub' $P185 = "23_1258923268.31051" 
     capture_lex $P185
     $P185()
   if_181_end:
@@ -15207,7 +15633,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block184"  :anon :subid("23_1258904224.56063") :outer("22_1258904224.56063")
+.sub "_block184"  :anon :subid("23_1258923268.31051") :outer("22_1258923268.31051")
 .annotate "line", 61
     new $P186, "Undef"
     .lex "$mc", $P186
@@ -15377,7 +15803,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "xblock"  :subid("24_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "xblock"  :subid("24_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_254
 .annotate "line", 79
     new $P253, 'ExceptionHandler'
@@ -15421,7 +15847,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "pblock"  :subid("25_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "pblock"  :subid("25_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_270
 .annotate "line", 83
     new $P269, 'ExceptionHandler'
@@ -15453,7 +15879,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "block"  :subid("26_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "block"  :subid("26_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_280
 .annotate "line", 87
     new $P279, 'ExceptionHandler'
@@ -15485,7 +15911,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "blockoid"  :subid("27_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "blockoid"  :subid("27_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_290
 .annotate "line", 91
     new $P289, 'ExceptionHandler'
@@ -15538,7 +15964,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "newpad"  :subid("28_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "newpad"  :subid("28_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_309
 .annotate "line", 99
     new $P308, 'ExceptionHandler'
@@ -15573,10 +15999,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<if>"  :subid("29_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statement_control:sym<if>"  :subid("29_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_322
 .annotate "line", 106
-    .const 'Sub' $P352 = "30_1258904224.56063" 
+    .const 'Sub' $P352 = "30_1258923268.31051" 
     capture_lex $P352
     new $P321, 'ExceptionHandler'
     set_addr $P321, control_320
@@ -15664,7 +16090,7 @@
     isgt $I350, $N347, $N349
     unless $I350, loop367_done
   loop367_redo:
-    .const 'Sub' $P352 = "30_1258904224.56063" 
+    .const 'Sub' $P352 = "30_1258923268.31051" 
     capture_lex $P352
     $P352()
   loop367_next:
@@ -15692,7 +16118,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block351"  :anon :subid("30_1258904224.56063") :outer("29_1258904224.56063")
+.sub "_block351"  :anon :subid("30_1258923268.31051") :outer("29_1258923268.31051")
 .annotate "line", 115
     new $P353, "Undef"
     .lex "$else", $P353
@@ -15731,7 +16157,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<unless>"  :subid("31_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statement_control:sym<unless>"  :subid("31_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_377
 .annotate "line", 122
     new $P376, 'ExceptionHandler'
@@ -15772,7 +16198,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<while>"  :subid("32_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statement_control:sym<while>"  :subid("32_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_391
 .annotate "line", 128
     new $P390, 'ExceptionHandler'
@@ -15822,7 +16248,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<repeat>"  :subid("33_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statement_control:sym<repeat>"  :subid("33_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_408
 .annotate "line", 134
     new $P407, 'ExceptionHandler'
@@ -15922,7 +16348,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<for>"  :subid("34_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statement_control:sym<for>"  :subid("34_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_444
 .annotate "line", 148
     new $P443, 'ExceptionHandler'
@@ -16002,7 +16428,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<return>"  :subid("35_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statement_control:sym<return>"  :subid("35_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_470
 .annotate "line", 161
     new $P469, 'ExceptionHandler'
@@ -16037,7 +16463,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<INIT>"  :subid("36_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statement_prefix:sym<INIT>"  :subid("36_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_483
 .annotate "line", 165
     new $P482, 'ExceptionHandler'
@@ -16083,7 +16509,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "blorst"  :subid("37_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "blorst"  :subid("37_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_499
 .annotate "line", 170
     new $P498, 'ExceptionHandler'
@@ -16142,7 +16568,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<if>"  :subid("38_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statement_mod_cond:sym<if>"  :subid("38_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_517
 .annotate "line", 178
     new $P516, 'ExceptionHandler'
@@ -16172,7 +16598,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<unless>"  :subid("39_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statement_mod_cond:sym<unless>"  :subid("39_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_527
 .annotate "line", 179
     new $P526, 'ExceptionHandler'
@@ -16202,7 +16628,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<while>"  :subid("40_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statement_mod_loop:sym<while>"  :subid("40_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_537
 .annotate "line", 181
     new $P536, 'ExceptionHandler'
@@ -16232,7 +16658,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<until>"  :subid("41_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "statement_mod_loop:sym<until>"  :subid("41_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_547
 .annotate "line", 182
     new $P546, 'ExceptionHandler'
@@ -16262,7 +16688,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<colonpair>"  :subid("42_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<colonpair>"  :subid("42_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_557
 .annotate "line", 186
     new $P556, 'ExceptionHandler'
@@ -16292,7 +16718,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<variable>"  :subid("43_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<variable>"  :subid("43_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_567
 .annotate "line", 187
     new $P566, 'ExceptionHandler'
@@ -16322,7 +16748,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<package_declarator>"  :subid("44_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<package_declarator>"  :subid("44_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_577
 .annotate "line", 188
     new $P576, 'ExceptionHandler'
@@ -16352,7 +16778,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<scope_declarator>"  :subid("45_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<scope_declarator>"  :subid("45_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_587
 .annotate "line", 189
     new $P586, 'ExceptionHandler'
@@ -16382,7 +16808,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<routine_declarator>"  :subid("46_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<routine_declarator>"  :subid("46_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_597
 .annotate "line", 190
     new $P596, 'ExceptionHandler'
@@ -16412,7 +16838,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<regex_declarator>"  :subid("47_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<regex_declarator>"  :subid("47_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_607
 .annotate "line", 191
     new $P606, 'ExceptionHandler'
@@ -16442,7 +16868,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<statement_prefix>"  :subid("48_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<statement_prefix>"  :subid("48_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_617
 .annotate "line", 192
     new $P616, 'ExceptionHandler'
@@ -16472,7 +16898,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<lambda>"  :subid("49_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<lambda>"  :subid("49_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_627
 .annotate "line", 193
     new $P626, 'ExceptionHandler'
@@ -16502,7 +16928,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "colonpair"  :subid("50_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "colonpair"  :subid("50_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_637
 .annotate "line", 195
     new $P636, 'ExceptionHandler'
@@ -16583,10 +17009,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "variable"  :subid("51_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "variable"  :subid("51_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_663
 .annotate "line", 203
-    .const 'Sub' $P676 = "52_1258904224.56063" 
+    .const 'Sub' $P676 = "52_1258923268.31051" 
     capture_lex $P676
     new $P662, 'ExceptionHandler'
     set_addr $P662, control_661
@@ -16610,7 +17036,7 @@
   vivify_261:
     if $P668, if_666
 .annotate "line", 209
-    .const 'Sub' $P676 = "52_1258904224.56063" 
+    .const 'Sub' $P676 = "52_1258923268.31051" 
     capture_lex $P676
     $P676()
     goto if_666_end
@@ -16647,7 +17073,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block675"  :anon :subid("52_1258904224.56063") :outer("51_1258904224.56063")
+.sub "_block675"  :anon :subid("52_1258923268.31051") :outer("51_1258923268.31051")
 .annotate "line", 210
     new $P677, "ResizablePMCArray"
     .lex "@name", $P677
@@ -16816,7 +17242,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<module>"  :subid("53_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "package_declarator:sym<module>"  :subid("53_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_752
 .annotate "line", 241
     new $P751, 'ExceptionHandler'
@@ -16846,7 +17272,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<class>"  :subid("54_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "package_declarator:sym<class>"  :subid("54_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_762
 .annotate "line", 242
     new $P761, 'ExceptionHandler'
@@ -17003,7 +17429,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_def"  :subid("55_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "package_def"  :subid("55_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_815
 .annotate "line", 265
     new $P814, 'ExceptionHandler'
@@ -17081,7 +17507,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<my>"  :subid("56_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "scope_declarator:sym<my>"  :subid("56_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_839
 .annotate "line", 272
     new $P838, 'ExceptionHandler'
@@ -17111,7 +17537,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<our>"  :subid("57_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "scope_declarator:sym<our>"  :subid("57_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_849
 .annotate "line", 273
     new $P848, 'ExceptionHandler'
@@ -17141,7 +17567,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<has>"  :subid("58_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "scope_declarator:sym<has>"  :subid("58_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_859
 .annotate "line", 274
     new $P858, 'ExceptionHandler'
@@ -17171,7 +17597,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scoped"  :subid("59_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "scoped"  :subid("59_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_869
 .annotate "line", 276
     new $P868, 'ExceptionHandler'
@@ -17229,10 +17655,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "variable_declarator"  :subid("60_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "variable_declarator"  :subid("60_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_886
 .annotate "line", 282
-    .const 'Sub' $P926 = "61_1258904224.56063" 
+    .const 'Sub' $P926 = "61_1258923268.31051" 
     capture_lex $P926
     new $P885, 'ExceptionHandler'
     set_addr $P885, control_884
@@ -17314,7 +17740,7 @@
     iseq $I911, $S910, "has"
     if $I911, if_908
 .annotate "line", 299
-    .const 'Sub' $P926 = "61_1258904224.56063" 
+    .const 'Sub' $P926 = "61_1258923268.31051" 
     capture_lex $P926
     $P926()
     goto if_908_end
@@ -17374,7 +17800,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block925"  :anon :subid("61_1258904224.56063") :outer("60_1258904224.56063")
+.sub "_block925"  :anon :subid("61_1258923268.31051") :outer("60_1258923268.31051")
 .annotate "line", 300
     new $P927, "Undef"
     .lex "$scope", $P927
@@ -17435,7 +17861,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<sub>"  :subid("62_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "routine_declarator:sym<sub>"  :subid("62_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_957
 .annotate "line", 310
     new $P956, 'ExceptionHandler'
@@ -17465,7 +17891,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<method>"  :subid("63_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "routine_declarator:sym<method>"  :subid("63_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_967
 .annotate "line", 311
     new $P966, 'ExceptionHandler'
@@ -17495,10 +17921,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_def"  :subid("64_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "routine_def"  :subid("64_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_977
 .annotate "line", 313
-    .const 'Sub' $P988 = "65_1258904224.56063" 
+    .const 'Sub' $P988 = "65_1258923268.31051" 
     capture_lex $P988
     new $P976, 'ExceptionHandler'
     set_addr $P976, control_975
@@ -17535,7 +17961,7 @@
     new $P986, "Undef"
   vivify_345:
     unless $P986, if_984_end
-    .const 'Sub' $P988 = "65_1258904224.56063" 
+    .const 'Sub' $P988 = "65_1258923268.31051" 
     capture_lex $P988
     $P988()
   if_984_end:
@@ -17554,7 +17980,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block987"  :anon :subid("65_1258904224.56063") :outer("64_1258904224.56063")
+.sub "_block987"  :anon :subid("65_1258923268.31051") :outer("64_1258923268.31051")
 .annotate "line", 318
     new $P989, "Undef"
     .lex "$name", $P989
@@ -17637,10 +18063,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "method_def"  :subid("66_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "method_def"  :subid("66_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1023
 .annotate "line", 331
-    .const 'Sub' $P1039 = "67_1258904224.56063" 
+    .const 'Sub' $P1039 = "67_1258923268.31051" 
     capture_lex $P1039
     new $P1022, 'ExceptionHandler'
     set_addr $P1022, control_1021
@@ -17692,7 +18118,7 @@
     new $P1037, "Undef"
   vivify_361:
     unless $P1037, if_1035_end
-    .const 'Sub' $P1039 = "67_1258904224.56063" 
+    .const 'Sub' $P1039 = "67_1258923268.31051" 
     capture_lex $P1039
     $P1039()
   if_1035_end:
@@ -17711,7 +18137,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1038"  :anon :subid("67_1258904224.56063") :outer("66_1258904224.56063")
+.sub "_block1038"  :anon :subid("67_1258923268.31051") :outer("66_1258923268.31051")
 .annotate "line", 338
     new $P1040, "Undef"
     .lex "$name", $P1040
@@ -17742,10 +18168,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "signature"  :subid("68_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "signature"  :subid("68_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1057
 .annotate "line", 345
-    .const 'Sub' $P1068 = "69_1258904224.56063" 
+    .const 'Sub' $P1068 = "69_1258923268.31051" 
     capture_lex $P1068
     new $P1056, 'ExceptionHandler'
     set_addr $P1056, control_1055
@@ -17789,7 +18215,7 @@
     unless $P1062, loop1074_done
     shift $P1066, $P1062
   loop1074_redo:
-    .const 'Sub' $P1068 = "69_1258904224.56063" 
+    .const 'Sub' $P1068 = "69_1258923268.31051" 
     capture_lex $P1068
     $P1068($P1066)
   loop1074_next:
@@ -17814,7 +18240,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1067"  :anon :subid("69_1258904224.56063") :outer("68_1258904224.56063")
+.sub "_block1067"  :anon :subid("69_1258923268.31051") :outer("68_1258923268.31051")
     .param pmc param_1069
 .annotate "line", 347
     .lex "$_", param_1069
@@ -17827,7 +18253,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "parameter"  :subid("70_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "parameter"  :subid("70_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1081
 .annotate "line", 350
     new $P1080, 'ExceptionHandler'
@@ -18059,7 +18485,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "param_var"  :subid("71_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "param_var"  :subid("71_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1165
 .annotate "line", 382
     new $P1164, 'ExceptionHandler'
@@ -18112,7 +18538,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "named_param"  :subid("72_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "named_param"  :subid("72_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1185
 .annotate "line", 390
     new $P1184, 'ExceptionHandler'
@@ -18165,12 +18591,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "regex_declarator"  :subid("73_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "regex_declarator"  :subid("73_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1202
     .param pmc param_1203 :optional
     .param int has_param_1203 :opt_flag
 .annotate "line", 396
-    .const 'Sub' $P1220 = "74_1258904224.56063" 
+    .const 'Sub' $P1220 = "74_1258923268.31051" 
     capture_lex $P1220
     new $P1201, 'ExceptionHandler'
     set_addr $P1201, control_1200
@@ -18292,7 +18718,7 @@
     goto if_1215_end
   if_1215:
 .annotate "line", 402
-    .const 'Sub' $P1220 = "74_1258904224.56063" 
+    .const 'Sub' $P1220 = "74_1258923268.31051" 
     capture_lex $P1220
     $P1220()
   if_1215_end:
@@ -18311,7 +18737,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1219"  :anon :subid("74_1258904224.56063") :outer("73_1258904224.56063")
+.sub "_block1219"  :anon :subid("74_1258923268.31051") :outer("73_1258923268.31051")
 .annotate "line", 403
     new $P1221, "Hash"
     .lex "%h", $P1221
@@ -18409,7 +18835,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "dotty"  :subid("75_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "dotty"  :subid("75_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1289
 .annotate "line", 452
     new $P1288, 'ExceptionHandler'
@@ -18506,7 +18932,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<self>"  :subid("76_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<self>"  :subid("76_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1321
 .annotate "line", 461
     new $P1320, 'ExceptionHandler'
@@ -18531,7 +18957,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<identifier>"  :subid("77_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<identifier>"  :subid("77_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1330
 .annotate "line", 465
     new $P1329, 'ExceptionHandler'
@@ -18580,7 +19006,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<name>"  :subid("78_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<name>"  :subid("78_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1346
 .annotate "line", 471
     new $P1345, 'ExceptionHandler'
@@ -18698,7 +19124,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<pir::op>"  :subid("79_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<pir::op>"  :subid("79_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1388
 .annotate "line", 485
     new $P1387, 'ExceptionHandler'
@@ -18789,7 +19215,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "args"  :subid("80_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "args"  :subid("80_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1417
 .annotate "line", 500
     new $P1416, 'ExceptionHandler'
@@ -18819,10 +19245,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "arglist"  :subid("81_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "arglist"  :subid("81_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1427
 .annotate "line", 502
-    .const 'Sub' $P1438 = "82_1258904224.56063" 
+    .const 'Sub' $P1438 = "82_1258923268.31051" 
     capture_lex $P1438
     new $P1426, 'ExceptionHandler'
     set_addr $P1426, control_1425
@@ -18854,7 +19280,7 @@
     new $P1436, "Undef"
   vivify_459:
     unless $P1436, if_1434_end
-    .const 'Sub' $P1438 = "82_1258904224.56063" 
+    .const 'Sub' $P1438 = "82_1258923268.31051" 
     capture_lex $P1438
     $P1438()
   if_1434_end:
@@ -18962,9 +19388,9 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1437"  :anon :subid("82_1258904224.56063") :outer("81_1258904224.56063")
+.sub "_block1437"  :anon :subid("82_1258923268.31051") :outer("81_1258923268.31051")
 .annotate "line", 504
-    .const 'Sub' $P1459 = "83_1258904224.56063" 
+    .const 'Sub' $P1459 = "83_1258923268.31051" 
     capture_lex $P1459
 .annotate "line", 505
     new $P1439, "Undef"
@@ -19017,7 +19443,7 @@
     unless $P1453, loop1464_done
     shift $P1457, $P1453
   loop1464_redo:
-    .const 'Sub' $P1459 = "83_1258904224.56063" 
+    .const 'Sub' $P1459 = "83_1258923268.31051" 
     capture_lex $P1459
     $P1459($P1457)
   loop1464_next:
@@ -19040,7 +19466,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1458"  :anon :subid("83_1258904224.56063") :outer("82_1258904224.56063")
+.sub "_block1458"  :anon :subid("83_1258923268.31051") :outer("82_1258923268.31051")
     .param pmc param_1460
 .annotate "line", 507
     .lex "$_", param_1460
@@ -19052,7 +19478,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<value>"  :subid("84_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "term:sym<value>"  :subid("84_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1511
 .annotate "line", 524
     new $P1510, 'ExceptionHandler'
@@ -19082,7 +19508,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<( )>"  :subid("85_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "circumfix:sym<( )>"  :subid("85_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1521
 .annotate "line", 526
     new $P1520, 'ExceptionHandler'
@@ -19138,7 +19564,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<[ ]>"  :subid("86_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "circumfix:sym<[ ]>"  :subid("86_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1539
 .annotate "line", 532
     new $P1538, 'ExceptionHandler'
@@ -19214,7 +19640,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<ang>"  :subid("87_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "circumfix:sym<ang>"  :subid("87_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1566
 .annotate "line", 547
     new $P1565, 'ExceptionHandler'
@@ -19244,7 +19670,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<{ }>"  :subid("88_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "circumfix:sym<{ }>"  :subid("88_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1576
 .annotate "line", 549
     new $P1575, 'ExceptionHandler'
@@ -19313,7 +19739,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<sigil>"  :subid("89_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "circumfix:sym<sigil>"  :subid("89_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1600
 .annotate "line", 555
     new $P1599, 'ExceptionHandler'
@@ -19392,7 +19818,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "semilist"  :subid("90_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "semilist"  :subid("90_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1629
 .annotate "line", 562
     new $P1628, 'ExceptionHandler'
@@ -19422,7 +19848,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<[ ]>"  :subid("91_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "postcircumfix:sym<[ ]>"  :subid("91_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1639
 .annotate "line", 564
     new $P1638, 'ExceptionHandler'
@@ -19456,7 +19882,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<{ }>"  :subid("92_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "postcircumfix:sym<{ }>"  :subid("92_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1651
 .annotate "line", 570
     new $P1650, 'ExceptionHandler'
@@ -19490,7 +19916,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<ang>"  :subid("93_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "postcircumfix:sym<ang>"  :subid("93_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1663
 .annotate "line", 576
     new $P1662, 'ExceptionHandler'
@@ -19524,7 +19950,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<( )>"  :subid("94_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "postcircumfix:sym<( )>"  :subid("94_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1675
 .annotate "line", 582
     new $P1674, 'ExceptionHandler'
@@ -19556,7 +19982,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "value"  :subid("95_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "value"  :subid("95_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1685
 .annotate "line", 586
     new $P1684, 'ExceptionHandler'
@@ -19648,7 +20074,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<apos>"  :subid("96_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "quote:sym<apos>"  :subid("96_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1713
 .annotate "line", 597
     new $P1712, 'ExceptionHandler'
@@ -19678,7 +20104,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<dblq>"  :subid("97_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "quote:sym<dblq>"  :subid("97_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1723
 .annotate "line", 598
     new $P1722, 'ExceptionHandler'
@@ -19708,7 +20134,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<qq>"  :subid("98_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "quote:sym<qq>"  :subid("98_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1733
 .annotate "line", 599
     new $P1732, 'ExceptionHandler'
@@ -19738,7 +20164,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<q>"  :subid("99_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "quote:sym<q>"  :subid("99_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1743
 .annotate "line", 600
     new $P1742, 'ExceptionHandler'
@@ -19768,7 +20194,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<Q>"  :subid("100_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "quote:sym<Q>"  :subid("100_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1753
 .annotate "line", 601
     new $P1752, 'ExceptionHandler'
@@ -19798,7 +20224,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<Q:PIR>"  :subid("101_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "quote:sym<Q:PIR>"  :subid("101_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1763
 .annotate "line", 602
     new $P1762, 'ExceptionHandler'
@@ -19834,7 +20260,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<$>"  :subid("102_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "quote_escape:sym<$>"  :subid("102_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1777
 .annotate "line", 608
     new $P1776, 'ExceptionHandler'
@@ -19864,7 +20290,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<{ }>"  :subid("103_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "quote_escape:sym<{ }>"  :subid("103_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1787
 .annotate "line", 609
     new $P1786, 'ExceptionHandler'
@@ -19902,7 +20328,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<.>"  :subid("104_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "postfix:sym<.>"  :subid("104_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1801
 .annotate "line", 617
     new $P1800, 'ExceptionHandler'
@@ -19932,7 +20358,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<++>"  :subid("105_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "postfix:sym<++>"  :subid("105_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1811
 .annotate "line", 619
     new $P1810, 'ExceptionHandler'
@@ -19962,7 +20388,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<-->"  :subid("106_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "postfix:sym<-->"  :subid("106_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1821
 .annotate "line", 625
     new $P1820, 'ExceptionHandler'
@@ -19992,7 +20418,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "prefix:sym<make>"  :subid("107_1258904224.56063") :method :outer("11_1258904224.56063")
+.sub "prefix:sym<make>"  :subid("107_1258923268.31051") :method :outer("11_1258923268.31051")
     .param pmc param_1831
 .annotate "line", 631
     new $P1830, 'ExceptionHandler'
@@ -20022,18 +20448,18 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "_block1840"  :subid("108_1258904224.56063") :outer("11_1258904224.56063")
+.sub "_block1840"  :subid("108_1258923268.31051") :outer("11_1258923268.31051")
 .annotate "line", 641
-    .const 'Sub' $P1876 = "112_1258904224.56063" 
+    .const 'Sub' $P1876 = "112_1258923268.31051" 
     capture_lex $P1876
-    .const 'Sub' $P1866 = "111_1258904224.56063" 
+    .const 'Sub' $P1866 = "111_1258923268.31051" 
     capture_lex $P1866
-    .const 'Sub' $P1856 = "110_1258904224.56063" 
+    .const 'Sub' $P1856 = "110_1258923268.31051" 
     capture_lex $P1856
-    .const 'Sub' $P1842 = "109_1258904224.56063" 
+    .const 'Sub' $P1842 = "109_1258923268.31051" 
     capture_lex $P1842
 .annotate "line", 652
-    .const 'Sub' $P1876 = "112_1258904224.56063" 
+    .const 'Sub' $P1876 = "112_1258923268.31051" 
     capture_lex $P1876
 .annotate "line", 641
     .return ($P1876)
@@ -20041,7 +20467,7 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<:my>"  :subid("109_1258904224.56063") :method :outer("108_1258904224.56063")
+.sub "metachar:sym<:my>"  :subid("109_1258923268.31051") :method :outer("108_1258923268.31051")
     .param pmc param_1845
 .annotate "line", 643
     new $P1844, 'ExceptionHandler'
@@ -20080,7 +20506,7 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<{ }>"  :subid("110_1258904224.56063") :method :outer("108_1258904224.56063")
+.sub "metachar:sym<{ }>"  :subid("110_1258923268.31051") :method :outer("108_1258923268.31051")
     .param pmc param_1859
 .annotate "line", 648
     new $P1858, 'ExceptionHandler'
@@ -20110,7 +20536,7 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "assertion:sym<{ }>"  :subid("111_1258904224.56063") :method :outer("108_1258904224.56063")
+.sub "assertion:sym<{ }>"  :subid("111_1258923268.31051") :method :outer("108_1258923268.31051")
     .param pmc param_1869
 .annotate "line", 650
     new $P1868, 'ExceptionHandler'
@@ -20140,7 +20566,7 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "codeblock"  :subid("112_1258904224.56063") :method :outer("108_1258904224.56063")
+.sub "codeblock"  :subid("112_1258923268.31051") :method :outer("108_1258923268.31051")
     .param pmc param_1879
 .annotate "line", 652
     new $P1878, 'ExceptionHandler'

Modified: trunk/ext/nqp-rx/src/stage0/P6Regex-s0.pir
==============================================================================
--- trunk/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Sun Nov 22 16:35:00 2009	(r42791)
+++ trunk/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Sun Nov 22 21:02:11 2009	(r42792)
@@ -16,7 +16,7 @@
 ### .include 'gen/p6regex-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1258904200.37175")
+.sub "_block11"  :anon :subid("10_1258923244.0326")
 .annotate "line", 0
     get_hll_global $P14, ["Regex";"P6Regex";"Grammar"], "_block13" 
     capture_lex $P14
@@ -30,9 +30,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post158") :outer("10_1258904200.37175")
+.sub "" :load :init :subid("post158") :outer("10_1258923244.0326")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1258904200.37175" 
+    .const 'Sub' $P12 = "10_1258923244.0326" 
     .local pmc block
     set block, $P12
     $P580 = get_root_global ["parrot"], "P6metaclass"
@@ -41,140 +41,140 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block13"  :subid("11_1258904200.37175") :outer("10_1258904200.37175")
+.sub "_block13"  :subid("11_1258923244.0326") :outer("10_1258923244.0326")
 .annotate "line", 3
-    .const 'Sub' $P571 = "156_1258904200.37175" 
+    .const 'Sub' $P571 = "156_1258923244.0326" 
     capture_lex $P571
-    .const 'Sub' $P563 = "154_1258904200.37175" 
+    .const 'Sub' $P563 = "154_1258923244.0326" 
     capture_lex $P563
-    .const 'Sub' $P555 = "152_1258904200.37175" 
+    .const 'Sub' $P555 = "152_1258923244.0326" 
     capture_lex $P555
-    .const 'Sub' $P534 = "147_1258904200.37175" 
+    .const 'Sub' $P534 = "147_1258923244.0326" 
     capture_lex $P534
-    .const 'Sub' $P499 = "141_1258904200.37175" 
+    .const 'Sub' $P499 = "141_1258923244.0326" 
     capture_lex $P499
-    .const 'Sub' $P487 = "138_1258904200.37175" 
+    .const 'Sub' $P487 = "138_1258923244.0326" 
     capture_lex $P487
-    .const 'Sub' $P474 = "135_1258904200.37175" 
+    .const 'Sub' $P474 = "135_1258923244.0326" 
     capture_lex $P474
-    .const 'Sub' $P468 = "133_1258904200.37175" 
+    .const 'Sub' $P468 = "133_1258923244.0326" 
     capture_lex $P468
-    .const 'Sub' $P457 = "130_1258904200.37175" 
+    .const 'Sub' $P457 = "130_1258923244.0326" 
     capture_lex $P457
-    .const 'Sub' $P446 = "127_1258904200.37175" 
+    .const 'Sub' $P446 = "127_1258923244.0326" 
     capture_lex $P446
-    .const 'Sub' $P437 = "123_1258904200.37175" 
+    .const 'Sub' $P437 = "123_1258923244.0326" 
     capture_lex $P437
-    .const 'Sub' $P431 = "121_1258904200.37175" 
+    .const 'Sub' $P431 = "121_1258923244.0326" 
     capture_lex $P431
-    .const 'Sub' $P425 = "119_1258904200.37175" 
+    .const 'Sub' $P425 = "119_1258923244.0326" 
     capture_lex $P425
-    .const 'Sub' $P419 = "117_1258904200.37175" 
+    .const 'Sub' $P419 = "117_1258923244.0326" 
     capture_lex $P419
-    .const 'Sub' $P413 = "115_1258904200.37175" 
+    .const 'Sub' $P413 = "115_1258923244.0326" 
     capture_lex $P413
-    .const 'Sub' $P402 = "113_1258904200.37175" 
+    .const 'Sub' $P402 = "113_1258923244.0326" 
     capture_lex $P402
-    .const 'Sub' $P391 = "111_1258904200.37175" 
+    .const 'Sub' $P391 = "111_1258923244.0326" 
     capture_lex $P391
-    .const 'Sub' $P383 = "109_1258904200.37175" 
+    .const 'Sub' $P383 = "109_1258923244.0326" 
     capture_lex $P383
-    .const 'Sub' $P377 = "107_1258904200.37175" 
+    .const 'Sub' $P377 = "107_1258923244.0326" 
     capture_lex $P377
-    .const 'Sub' $P371 = "105_1258904200.37175" 
+    .const 'Sub' $P371 = "105_1258923244.0326" 
     capture_lex $P371
-    .const 'Sub' $P365 = "103_1258904200.37175" 
+    .const 'Sub' $P365 = "103_1258923244.0326" 
     capture_lex $P365
-    .const 'Sub' $P359 = "101_1258904200.37175" 
+    .const 'Sub' $P359 = "101_1258923244.0326" 
     capture_lex $P359
-    .const 'Sub' $P353 = "99_1258904200.37175" 
+    .const 'Sub' $P353 = "99_1258923244.0326" 
     capture_lex $P353
-    .const 'Sub' $P347 = "97_1258904200.37175" 
+    .const 'Sub' $P347 = "97_1258923244.0326" 
     capture_lex $P347
-    .const 'Sub' $P341 = "95_1258904200.37175" 
+    .const 'Sub' $P341 = "95_1258923244.0326" 
     capture_lex $P341
-    .const 'Sub' $P335 = "93_1258904200.37175" 
+    .const 'Sub' $P335 = "93_1258923244.0326" 
     capture_lex $P335
-    .const 'Sub' $P323 = "89_1258904200.37175" 
+    .const 'Sub' $P323 = "89_1258923244.0326" 
     capture_lex $P323
-    .const 'Sub' $P311 = "87_1258904200.37175" 
+    .const 'Sub' $P311 = "87_1258923244.0326" 
     capture_lex $P311
-    .const 'Sub' $P304 = "85_1258904200.37175" 
+    .const 'Sub' $P304 = "85_1258923244.0326" 
     capture_lex $P304
-    .const 'Sub' $P287 = "83_1258904200.37175" 
+    .const 'Sub' $P287 = "83_1258923244.0326" 
     capture_lex $P287
-    .const 'Sub' $P280 = "81_1258904200.37175" 
+    .const 'Sub' $P280 = "81_1258923244.0326" 
     capture_lex $P280
-    .const 'Sub' $P274 = "79_1258904200.37175" 
+    .const 'Sub' $P274 = "79_1258923244.0326" 
     capture_lex $P274
-    .const 'Sub' $P268 = "77_1258904200.37175" 
+    .const 'Sub' $P268 = "77_1258923244.0326" 
     capture_lex $P268
-    .const 'Sub' $P261 = "75_1258904200.37175" 
+    .const 'Sub' $P261 = "75_1258923244.0326" 
     capture_lex $P261
-    .const 'Sub' $P254 = "73_1258904200.37175" 
+    .const 'Sub' $P254 = "73_1258923244.0326" 
     capture_lex $P254
-    .const 'Sub' $P247 = "71_1258904200.37175" 
+    .const 'Sub' $P247 = "71_1258923244.0326" 
     capture_lex $P247
-    .const 'Sub' $P240 = "69_1258904200.37175" 
+    .const 'Sub' $P240 = "69_1258923244.0326" 
     capture_lex $P240
-    .const 'Sub' $P234 = "67_1258904200.37175" 
+    .const 'Sub' $P234 = "67_1258923244.0326" 
     capture_lex $P234
-    .const 'Sub' $P228 = "65_1258904200.37175" 
+    .const 'Sub' $P228 = "65_1258923244.0326" 
     capture_lex $P228
-    .const 'Sub' $P222 = "63_1258904200.37175" 
+    .const 'Sub' $P222 = "63_1258923244.0326" 
     capture_lex $P222
-    .const 'Sub' $P216 = "61_1258904200.37175" 
+    .const 'Sub' $P216 = "61_1258923244.0326" 
     capture_lex $P216
-    .const 'Sub' $P210 = "59_1258904200.37175" 
+    .const 'Sub' $P210 = "59_1258923244.0326" 
     capture_lex $P210
-    .const 'Sub' $P205 = "57_1258904200.37175" 
+    .const 'Sub' $P205 = "57_1258923244.0326" 
     capture_lex $P205
-    .const 'Sub' $P200 = "55_1258904200.37175" 
+    .const 'Sub' $P200 = "55_1258923244.0326" 
     capture_lex $P200
-    .const 'Sub' $P194 = "53_1258904200.37175" 
+    .const 'Sub' $P194 = "53_1258923244.0326" 
     capture_lex $P194
-    .const 'Sub' $P188 = "51_1258904200.37175" 
+    .const 'Sub' $P188 = "51_1258923244.0326" 
     capture_lex $P188
-    .const 'Sub' $P182 = "49_1258904200.37175" 
+    .const 'Sub' $P182 = "49_1258923244.0326" 
     capture_lex $P182
-    .const 'Sub' $P166 = "44_1258904200.37175" 
+    .const 'Sub' $P166 = "44_1258923244.0326" 
     capture_lex $P166
-    .const 'Sub' $P154 = "42_1258904200.37175" 
+    .const 'Sub' $P154 = "42_1258923244.0326" 
     capture_lex $P154
-    .const 'Sub' $P147 = "40_1258904200.37175" 
+    .const 'Sub' $P147 = "40_1258923244.0326" 
     capture_lex $P147
-    .const 'Sub' $P140 = "38_1258904200.37175" 
+    .const 'Sub' $P140 = "38_1258923244.0326" 
     capture_lex $P140
-    .const 'Sub' $P133 = "36_1258904200.37175" 
+    .const 'Sub' $P133 = "36_1258923244.0326" 
     capture_lex $P133
-    .const 'Sub' $P114 = "31_1258904200.37175" 
+    .const 'Sub' $P114 = "31_1258923244.0326" 
     capture_lex $P114
-    .const 'Sub' $P101 = "28_1258904200.37175" 
+    .const 'Sub' $P101 = "28_1258923244.0326" 
     capture_lex $P101
-    .const 'Sub' $P94 = "26_1258904200.37175" 
+    .const 'Sub' $P94 = "26_1258923244.0326" 
     capture_lex $P94
-    .const 'Sub' $P82 = "24_1258904200.37175" 
+    .const 'Sub' $P82 = "24_1258923244.0326" 
     capture_lex $P82
-    .const 'Sub' $P75 = "22_1258904200.37175" 
+    .const 'Sub' $P75 = "22_1258923244.0326" 
     capture_lex $P75
-    .const 'Sub' $P63 = "20_1258904200.37175" 
+    .const 'Sub' $P63 = "20_1258923244.0326" 
     capture_lex $P63
-    .const 'Sub' $P56 = "18_1258904200.37175" 
+    .const 'Sub' $P56 = "18_1258923244.0326" 
     capture_lex $P56
-    .const 'Sub' $P46 = "15_1258904200.37175" 
+    .const 'Sub' $P46 = "15_1258923244.0326" 
     capture_lex $P46
-    .const 'Sub' $P38 = "13_1258904200.37175" 
+    .const 'Sub' $P38 = "13_1258923244.0326" 
     capture_lex $P38
-    .const 'Sub' $P15 = "12_1258904200.37175" 
+    .const 'Sub' $P15 = "12_1258923244.0326" 
     capture_lex $P15
-    .const 'Sub' $P571 = "156_1258904200.37175" 
+    .const 'Sub' $P571 = "156_1258923244.0326" 
     capture_lex $P571
     .return ($P571)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "obs"  :subid("12_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "obs"  :subid("12_1258923244.0326") :method :outer("11_1258923244.0326")
     .param pmc param_18
     .param pmc param_19
     .param pmc param_20 :optional
@@ -222,7 +222,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "ws"  :subid("13_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "ws"  :subid("13_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx39_tgt
     .local int rx39_pos
@@ -230,23 +230,26 @@
     .local int rx39_eos
     .local int rx39_rep
     .local pmc rx39_cur
-    (rx39_cur, rx39_pos, rx39_tgt, $I10) = self."!cursor_start"()
+    (rx39_cur, rx39_pos, rx39_tgt) = self."!cursor_start"()
     rx39_cur."!cursor_debug"("START ", "ws")
     .lex unicode:"$\x{a2}", rx39_cur
     .local pmc match
     .lex "$/", match
     length rx39_eos, rx39_tgt
     set rx39_off, 0
-    lt $I10, 2, rx39_start
-    sub rx39_off, $I10, 1
+    lt rx39_pos, 2, rx39_start
+    sub rx39_off, rx39_pos, 1
     substr rx39_tgt, rx39_tgt, rx39_off
   rx39_start:
-    ge rx39_pos, 0, rxscan42_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan42_done
+    goto rxscan42_scan
   rxscan42_loop:
     ($P10) = rx39_cur."from"()
     inc $P10
     set rx39_pos, $P10
     ge rx39_pos, rx39_eos, rxscan42_done
+  rxscan42_scan:
     set_addr $I10, rxscan42_loop
     rx39_cur."!mark_push"(0, rx39_pos, $I10)
   rxscan42_done:
@@ -301,7 +304,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__ws"  :subid("14_1258904200.37175") :method
+.sub "!PREFIX__ws"  :subid("14_1258923244.0326") :method
 .annotate "line", 3
     new $P41, "ResizablePMCArray"
     push $P41, ""
@@ -310,9 +313,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "normspace"  :subid("15_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "normspace"  :subid("15_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
-    .const 'Sub' $P52 = "17_1258904200.37175" 
+    .const 'Sub' $P52 = "17_1258923244.0326" 
     capture_lex $P52
     .local string rx47_tgt
     .local int rx47_pos
@@ -320,30 +323,33 @@
     .local int rx47_eos
     .local int rx47_rep
     .local pmc rx47_cur
-    (rx47_cur, rx47_pos, rx47_tgt, $I10) = self."!cursor_start"()
+    (rx47_cur, rx47_pos, rx47_tgt) = self."!cursor_start"()
     rx47_cur."!cursor_debug"("START ", "normspace")
     .lex unicode:"$\x{a2}", rx47_cur
     .local pmc match
     .lex "$/", match
     length rx47_eos, rx47_tgt
     set rx47_off, 0
-    lt $I10, 2, rx47_start
-    sub rx47_off, $I10, 1
+    lt rx47_pos, 2, rx47_start
+    sub rx47_off, rx47_pos, 1
     substr rx47_tgt, rx47_tgt, rx47_off
   rx47_start:
-    ge rx47_pos, 0, rxscan50_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan50_done
+    goto rxscan50_scan
   rxscan50_loop:
     ($P10) = rx47_cur."from"()
     inc $P10
     set rx47_pos, $P10
     ge rx47_pos, rx47_eos, rxscan50_done
+  rxscan50_scan:
     set_addr $I10, rxscan50_loop
     rx47_cur."!mark_push"(0, rx47_pos, $I10)
   rxscan50_done:
 .annotate "line", 10
   # rx subrule "before" subtype=zerowidth negate=
     rx47_cur."!cursor_pos"(rx47_pos)
-    .const 'Sub' $P52 = "17_1258904200.37175" 
+    .const 'Sub' $P52 = "17_1258923244.0326" 
     capture_lex $P52
     $P10 = rx47_cur."before"($P52)
     unless $P10, rx47_fail
@@ -371,7 +377,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__normspace"  :subid("16_1258904200.37175") :method
+.sub "!PREFIX__normspace"  :subid("16_1258923244.0326") :method
 .annotate "line", 3
     new $P49, "ResizablePMCArray"
     push $P49, ""
@@ -380,7 +386,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block51"  :anon :subid("17_1258904200.37175") :method :outer("15_1258904200.37175")
+.sub "_block51"  :anon :subid("17_1258923244.0326") :method :outer("15_1258923244.0326")
 .annotate "line", 10
     .local string rx53_tgt
     .local int rx53_pos
@@ -388,23 +394,26 @@
     .local int rx53_eos
     .local int rx53_rep
     .local pmc rx53_cur
-    (rx53_cur, rx53_pos, rx53_tgt, $I10) = self."!cursor_start"()
+    (rx53_cur, rx53_pos, rx53_tgt) = self."!cursor_start"()
     rx53_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx53_cur
     .local pmc match
     .lex "$/", match
     length rx53_eos, rx53_tgt
     set rx53_off, 0
-    lt $I10, 2, rx53_start
-    sub rx53_off, $I10, 1
+    lt rx53_pos, 2, rx53_start
+    sub rx53_off, rx53_pos, 1
     substr rx53_tgt, rx53_tgt, rx53_off
   rx53_start:
-    ge rx53_pos, 0, rxscan54_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan54_done
+    goto rxscan54_scan
   rxscan54_loop:
     ($P10) = rx53_cur."from"()
     inc $P10
     set rx53_pos, $P10
     ge rx53_pos, rx53_eos, rxscan54_done
+  rxscan54_scan:
     set_addr $I10, rxscan54_loop
     rx53_cur."!mark_push"(0, rx53_pos, $I10)
   rxscan54_done:
@@ -445,7 +454,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arg"  :subid("18_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "arg"  :subid("18_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx57_tgt
     .local int rx57_pos
@@ -453,23 +462,26 @@
     .local int rx57_eos
     .local int rx57_rep
     .local pmc rx57_cur
-    (rx57_cur, rx57_pos, rx57_tgt, $I10) = self."!cursor_start"()
+    (rx57_cur, rx57_pos, rx57_tgt) = self."!cursor_start"()
     rx57_cur."!cursor_debug"("START ", "arg")
     .lex unicode:"$\x{a2}", rx57_cur
     .local pmc match
     .lex "$/", match
     length rx57_eos, rx57_tgt
     set rx57_off, 0
-    lt $I10, 2, rx57_start
-    sub rx57_off, $I10, 1
+    lt rx57_pos, 2, rx57_start
+    sub rx57_off, rx57_pos, 1
     substr rx57_tgt, rx57_tgt, rx57_off
   rx57_start:
-    ge rx57_pos, 0, rxscan60_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan60_done
+    goto rxscan60_scan
   rxscan60_loop:
     ($P10) = rx57_cur."from"()
     inc $P10
     set rx57_pos, $P10
     ge rx57_pos, rx57_eos, rxscan60_done
+  rxscan60_scan:
     set_addr $I10, rxscan60_loop
     rx57_cur."!mark_push"(0, rx57_pos, $I10)
   rxscan60_done:
@@ -553,7 +565,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arg"  :subid("19_1258904200.37175") :method
+.sub "!PREFIX__arg"  :subid("19_1258923244.0326") :method
 .annotate "line", 3
     new $P59, "ResizablePMCArray"
     push $P59, ""
@@ -564,7 +576,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arglist"  :subid("20_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "arglist"  :subid("20_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx64_tgt
     .local int rx64_pos
@@ -572,7 +584,7 @@
     .local int rx64_eos
     .local int rx64_rep
     .local pmc rx64_cur
-    (rx64_cur, rx64_pos, rx64_tgt, $I10) = self."!cursor_start"()
+    (rx64_cur, rx64_pos, rx64_tgt) = self."!cursor_start"()
     rx64_cur."!cursor_debug"("START ", "arglist")
     rx64_cur."!cursor_caparray"("arg")
     .lex unicode:"$\x{a2}", rx64_cur
@@ -580,16 +592,19 @@
     .lex "$/", match
     length rx64_eos, rx64_tgt
     set rx64_off, 0
-    lt $I10, 2, rx64_start
-    sub rx64_off, $I10, 1
+    lt rx64_pos, 2, rx64_start
+    sub rx64_off, rx64_pos, 1
     substr rx64_tgt, rx64_tgt, rx64_off
   rx64_start:
-    ge rx64_pos, 0, rxscan67_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan67_done
+    goto rxscan67_scan
   rxscan67_loop:
     ($P10) = rx64_cur."from"()
     inc $P10
     set rx64_pos, $P10
     ge rx64_pos, rx64_eos, rxscan67_done
+  rxscan67_scan:
     set_addr $I10, rxscan67_loop
     rx64_cur."!mark_push"(0, rx64_pos, $I10)
   rxscan67_done:
@@ -667,7 +682,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("21_1258904200.37175") :method
+.sub "!PREFIX__arglist"  :subid("21_1258923244.0326") :method
 .annotate "line", 3
     new $P66, "ResizablePMCArray"
     push $P66, ""
@@ -676,7 +691,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "TOP"  :subid("22_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "TOP"  :subid("22_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx76_tgt
     .local int rx76_pos
@@ -684,23 +699,26 @@
     .local int rx76_eos
     .local int rx76_rep
     .local pmc rx76_cur
-    (rx76_cur, rx76_pos, rx76_tgt, $I10) = self."!cursor_start"()
+    (rx76_cur, rx76_pos, rx76_tgt) = self."!cursor_start"()
     rx76_cur."!cursor_debug"("START ", "TOP")
     .lex unicode:"$\x{a2}", rx76_cur
     .local pmc match
     .lex "$/", match
     length rx76_eos, rx76_tgt
     set rx76_off, 0
-    lt $I10, 2, rx76_start
-    sub rx76_off, $I10, 1
+    lt rx76_pos, 2, rx76_start
+    sub rx76_off, rx76_pos, 1
     substr rx76_tgt, rx76_tgt, rx76_off
   rx76_start:
-    ge rx76_pos, 0, rxscan80_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan80_done
+    goto rxscan80_scan
   rxscan80_loop:
     ($P10) = rx76_cur."from"()
     inc $P10
     set rx76_pos, $P10
     ge rx76_pos, rx76_eos, rxscan80_done
+  rxscan80_scan:
     set_addr $I10, rxscan80_loop
     rx76_cur."!mark_push"(0, rx76_pos, $I10)
   rxscan80_done:
@@ -746,7 +764,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__TOP"  :subid("23_1258904200.37175") :method
+.sub "!PREFIX__TOP"  :subid("23_1258923244.0326") :method
 .annotate "line", 3
     $P78 = self."!PREFIX__!subrule"("nibbler", "")
     new $P79, "ResizablePMCArray"
@@ -756,7 +774,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "nibbler"  :subid("24_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "nibbler"  :subid("24_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx83_tgt
     .local int rx83_pos
@@ -764,7 +782,7 @@
     .local int rx83_eos
     .local int rx83_rep
     .local pmc rx83_cur
-    (rx83_cur, rx83_pos, rx83_tgt, $I10) = self."!cursor_start"()
+    (rx83_cur, rx83_pos, rx83_tgt) = self."!cursor_start"()
     rx83_cur."!cursor_debug"("START ", "nibbler")
     rx83_cur."!cursor_caparray"("termish")
     .lex unicode:"$\x{a2}", rx83_cur
@@ -772,16 +790,19 @@
     .lex "$/", match
     length rx83_eos, rx83_tgt
     set rx83_off, 0
-    lt $I10, 2, rx83_start
-    sub rx83_off, $I10, 1
+    lt rx83_pos, 2, rx83_start
+    sub rx83_off, rx83_pos, 1
     substr rx83_tgt, rx83_tgt, rx83_off
   rx83_start:
-    ge rx83_pos, 0, rxscan86_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan86_done
+    goto rxscan86_scan
   rxscan86_loop:
     ($P10) = rx83_cur."from"()
     inc $P10
     set rx83_pos, $P10
     ge rx83_pos, rx83_eos, rxscan86_done
+  rxscan86_scan:
     set_addr $I10, rxscan86_loop
     rx83_cur."!mark_push"(0, rx83_pos, $I10)
   rxscan86_done:
@@ -921,7 +942,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__nibbler"  :subid("25_1258904200.37175") :method
+.sub "!PREFIX__nibbler"  :subid("25_1258923244.0326") :method
 .annotate "line", 3
     new $P85, "ResizablePMCArray"
     push $P85, ""
@@ -930,7 +951,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "termish"  :subid("26_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "termish"  :subid("26_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx95_tgt
     .local int rx95_pos
@@ -938,7 +959,7 @@
     .local int rx95_eos
     .local int rx95_rep
     .local pmc rx95_cur
-    (rx95_cur, rx95_pos, rx95_tgt, $I10) = self."!cursor_start"()
+    (rx95_cur, rx95_pos, rx95_tgt) = self."!cursor_start"()
     rx95_cur."!cursor_debug"("START ", "termish")
     rx95_cur."!cursor_caparray"("noun")
     .lex unicode:"$\x{a2}", rx95_cur
@@ -946,16 +967,19 @@
     .lex "$/", match
     length rx95_eos, rx95_tgt
     set rx95_off, 0
-    lt $I10, 2, rx95_start
-    sub rx95_off, $I10, 1
+    lt rx95_pos, 2, rx95_start
+    sub rx95_off, rx95_pos, 1
     substr rx95_tgt, rx95_tgt, rx95_off
   rx95_start:
-    ge rx95_pos, 0, rxscan98_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan98_done
+    goto rxscan98_scan
   rxscan98_loop:
     ($P10) = rx95_cur."from"()
     inc $P10
     set rx95_pos, $P10
     ge rx95_pos, rx95_eos, rxscan98_done
+  rxscan98_scan:
     set_addr $I10, rxscan98_loop
     rx95_cur."!mark_push"(0, rx95_pos, $I10)
   rxscan98_done:
@@ -995,7 +1019,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__termish"  :subid("27_1258904200.37175") :method
+.sub "!PREFIX__termish"  :subid("27_1258923244.0326") :method
 .annotate "line", 3
     new $P97, "ResizablePMCArray"
     push $P97, ""
@@ -1004,9 +1028,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantified_atom"  :subid("28_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "quantified_atom"  :subid("28_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
-    .const 'Sub' $P110 = "30_1258904200.37175" 
+    .const 'Sub' $P110 = "30_1258923244.0326" 
     capture_lex $P110
     .local string rx102_tgt
     .local int rx102_pos
@@ -1014,7 +1038,7 @@
     .local int rx102_eos
     .local int rx102_rep
     .local pmc rx102_cur
-    (rx102_cur, rx102_pos, rx102_tgt, $I10) = self."!cursor_start"()
+    (rx102_cur, rx102_pos, rx102_tgt) = self."!cursor_start"()
     rx102_cur."!cursor_debug"("START ", "quantified_atom")
     rx102_cur."!cursor_caparray"("quantifier", "backmod")
     .lex unicode:"$\x{a2}", rx102_cur
@@ -1022,16 +1046,19 @@
     .lex "$/", match
     length rx102_eos, rx102_tgt
     set rx102_off, 0
-    lt $I10, 2, rx102_start
-    sub rx102_off, $I10, 1
+    lt rx102_pos, 2, rx102_start
+    sub rx102_off, rx102_pos, 1
     substr rx102_tgt, rx102_tgt, rx102_off
   rx102_start:
-    ge rx102_pos, 0, rxscan106_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan106_done
+    goto rxscan106_scan
   rxscan106_loop:
     ($P10) = rx102_cur."from"()
     inc $P10
     set rx102_pos, $P10
     ge rx102_pos, rx102_eos, rxscan106_done
+  rxscan106_scan:
     set_addr $I10, rxscan106_loop
     rx102_cur."!mark_push"(0, rx102_pos, $I10)
   rxscan106_done:
@@ -1066,7 +1093,7 @@
   alt108_1:
   # rx subrule "before" subtype=zerowidth negate=
     rx102_cur."!cursor_pos"(rx102_pos)
-    .const 'Sub' $P110 = "30_1258904200.37175" 
+    .const 'Sub' $P110 = "30_1258923244.0326" 
     capture_lex $P110
     $P10 = rx102_cur."before"($P110)
     unless $P10, rx102_fail
@@ -1104,7 +1131,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantified_atom"  :subid("29_1258904200.37175") :method
+.sub "!PREFIX__quantified_atom"  :subid("29_1258923244.0326") :method
 .annotate "line", 3
     $P104 = self."!PREFIX__!subrule"("atom", "")
     new $P105, "ResizablePMCArray"
@@ -1114,7 +1141,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block109"  :anon :subid("30_1258904200.37175") :method :outer("28_1258904200.37175")
+.sub "_block109"  :anon :subid("30_1258923244.0326") :method :outer("28_1258923244.0326")
 .annotate "line", 41
     .local string rx111_tgt
     .local int rx111_pos
@@ -1122,23 +1149,26 @@
     .local int rx111_eos
     .local int rx111_rep
     .local pmc rx111_cur
-    (rx111_cur, rx111_pos, rx111_tgt, $I10) = self."!cursor_start"()
+    (rx111_cur, rx111_pos, rx111_tgt) = self."!cursor_start"()
     rx111_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx111_cur
     .local pmc match
     .lex "$/", match
     length rx111_eos, rx111_tgt
     set rx111_off, 0
-    lt $I10, 2, rx111_start
-    sub rx111_off, $I10, 1
+    lt rx111_pos, 2, rx111_start
+    sub rx111_off, rx111_pos, 1
     substr rx111_tgt, rx111_tgt, rx111_off
   rx111_start:
-    ge rx111_pos, 0, rxscan112_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan112_done
+    goto rxscan112_scan
   rxscan112_loop:
     ($P10) = rx111_cur."from"()
     inc $P10
     set rx111_pos, $P10
     ge rx111_pos, rx111_eos, rxscan112_done
+  rxscan112_scan:
     set_addr $I10, rxscan112_loop
     rx111_cur."!mark_push"(0, rx111_pos, $I10)
   rxscan112_done:
@@ -1167,9 +1197,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "atom"  :subid("31_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "atom"  :subid("31_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
-    .const 'Sub' $P125 = "33_1258904200.37175" 
+    .const 'Sub' $P125 = "33_1258923244.0326" 
     capture_lex $P125
     .local string rx115_tgt
     .local int rx115_pos
@@ -1177,23 +1207,26 @@
     .local int rx115_eos
     .local int rx115_rep
     .local pmc rx115_cur
-    (rx115_cur, rx115_pos, rx115_tgt, $I10) = self."!cursor_start"()
+    (rx115_cur, rx115_pos, rx115_tgt) = self."!cursor_start"()
     rx115_cur."!cursor_debug"("START ", "atom")
     .lex unicode:"$\x{a2}", rx115_cur
     .local pmc match
     .lex "$/", match
     length rx115_eos, rx115_tgt
     set rx115_off, 0
-    lt $I10, 2, rx115_start
-    sub rx115_off, $I10, 1
+    lt rx115_pos, 2, rx115_start
+    sub rx115_off, rx115_pos, 1
     substr rx115_tgt, rx115_tgt, rx115_off
   rx115_start:
-    ge rx115_pos, 0, rxscan119_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan119_done
+    goto rxscan119_scan
   rxscan119_loop:
     ($P10) = rx115_cur."from"()
     inc $P10
     set rx115_pos, $P10
     ge rx115_pos, rx115_eos, rxscan119_done
+  rxscan119_scan:
     set_addr $I10, rxscan119_loop
     rx115_cur."!mark_push"(0, rx115_pos, $I10)
   rxscan119_done:
@@ -1226,7 +1259,7 @@
   rxquantg122_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx115_cur."!cursor_pos"(rx115_pos)
-    .const 'Sub' $P125 = "33_1258904200.37175" 
+    .const 'Sub' $P125 = "33_1258923244.0326" 
     capture_lex $P125
     $P10 = rx115_cur."before"($P125)
     unless $P10, rx115_fail
@@ -1263,7 +1296,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__atom"  :subid("32_1258904200.37175") :method
+.sub "!PREFIX__atom"  :subid("32_1258923244.0326") :method
 .annotate "line", 3
     $P117 = self."!PREFIX__!subrule"("metachar", "")
     new $P118, "ResizablePMCArray"
@@ -1274,7 +1307,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block124"  :anon :subid("33_1258904200.37175") :method :outer("31_1258904200.37175")
+.sub "_block124"  :anon :subid("33_1258923244.0326") :method :outer("31_1258923244.0326")
 .annotate "line", 47
     .local string rx126_tgt
     .local int rx126_pos
@@ -1282,23 +1315,26 @@
     .local int rx126_eos
     .local int rx126_rep
     .local pmc rx126_cur
-    (rx126_cur, rx126_pos, rx126_tgt, $I10) = self."!cursor_start"()
+    (rx126_cur, rx126_pos, rx126_tgt) = self."!cursor_start"()
     rx126_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx126_cur
     .local pmc match
     .lex "$/", match
     length rx126_eos, rx126_tgt
     set rx126_off, 0
-    lt $I10, 2, rx126_start
-    sub rx126_off, $I10, 1
+    lt rx126_pos, 2, rx126_start
+    sub rx126_off, rx126_pos, 1
     substr rx126_tgt, rx126_tgt, rx126_off
   rx126_start:
-    ge rx126_pos, 0, rxscan127_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan127_done
+    goto rxscan127_scan
   rxscan127_loop:
     ($P10) = rx126_cur."from"()
     inc $P10
     set rx126_pos, $P10
     ge rx126_pos, rx126_eos, rxscan127_done
+  rxscan127_scan:
     set_addr $I10, rxscan127_loop
     rx126_cur."!mark_push"(0, rx126_pos, $I10)
   rxscan127_done:
@@ -1326,7 +1362,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier"  :subid("34_1258904200.37175") :method
+.sub "quantifier"  :subid("34_1258923244.0326") :method
 .annotate "line", 52
     $P130 = self."!protoregex"("quantifier")
     .return ($P130)
@@ -1334,7 +1370,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier"  :subid("35_1258904200.37175") :method
+.sub "!PREFIX__quantifier"  :subid("35_1258923244.0326") :method
 .annotate "line", 52
     $P132 = self."!PREFIX__!protoregex"("quantifier")
     .return ($P132)
@@ -1342,7 +1378,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<*>"  :subid("36_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "quantifier:sym<*>"  :subid("36_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx134_tgt
     .local int rx134_pos
@@ -1350,23 +1386,26 @@
     .local int rx134_eos
     .local int rx134_rep
     .local pmc rx134_cur
-    (rx134_cur, rx134_pos, rx134_tgt, $I10) = self."!cursor_start"()
+    (rx134_cur, rx134_pos, rx134_tgt) = self."!cursor_start"()
     rx134_cur."!cursor_debug"("START ", "quantifier:sym<*>")
     .lex unicode:"$\x{a2}", rx134_cur
     .local pmc match
     .lex "$/", match
     length rx134_eos, rx134_tgt
     set rx134_off, 0
-    lt $I10, 2, rx134_start
-    sub rx134_off, $I10, 1
+    lt rx134_pos, 2, rx134_start
+    sub rx134_off, rx134_pos, 1
     substr rx134_tgt, rx134_tgt, rx134_off
   rx134_start:
-    ge rx134_pos, 0, rxscan138_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan138_done
+    goto rxscan138_scan
   rxscan138_loop:
     ($P10) = rx134_cur."from"()
     inc $P10
     set rx134_pos, $P10
     ge rx134_pos, rx134_eos, rxscan138_done
+  rxscan138_scan:
     set_addr $I10, rxscan138_loop
     rx134_cur."!mark_push"(0, rx134_pos, $I10)
   rxscan138_done:
@@ -1418,7 +1457,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<*>"  :subid("37_1258904200.37175") :method
+.sub "!PREFIX__quantifier:sym<*>"  :subid("37_1258923244.0326") :method
 .annotate "line", 3
     $P136 = self."!PREFIX__!subrule"("backmod", "*")
     new $P137, "ResizablePMCArray"
@@ -1428,7 +1467,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<+>"  :subid("38_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "quantifier:sym<+>"  :subid("38_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx141_tgt
     .local int rx141_pos
@@ -1436,23 +1475,26 @@
     .local int rx141_eos
     .local int rx141_rep
     .local pmc rx141_cur
-    (rx141_cur, rx141_pos, rx141_tgt, $I10) = self."!cursor_start"()
+    (rx141_cur, rx141_pos, rx141_tgt) = self."!cursor_start"()
     rx141_cur."!cursor_debug"("START ", "quantifier:sym<+>")
     .lex unicode:"$\x{a2}", rx141_cur
     .local pmc match
     .lex "$/", match
     length rx141_eos, rx141_tgt
     set rx141_off, 0
-    lt $I10, 2, rx141_start
-    sub rx141_off, $I10, 1
+    lt rx141_pos, 2, rx141_start
+    sub rx141_off, rx141_pos, 1
     substr rx141_tgt, rx141_tgt, rx141_off
   rx141_start:
-    ge rx141_pos, 0, rxscan145_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan145_done
+    goto rxscan145_scan
   rxscan145_loop:
     ($P10) = rx141_cur."from"()
     inc $P10
     set rx141_pos, $P10
     ge rx141_pos, rx141_eos, rxscan145_done
+  rxscan145_scan:
     set_addr $I10, rxscan145_loop
     rx141_cur."!mark_push"(0, rx141_pos, $I10)
   rxscan145_done:
@@ -1504,7 +1546,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<+>"  :subid("39_1258904200.37175") :method
+.sub "!PREFIX__quantifier:sym<+>"  :subid("39_1258923244.0326") :method
 .annotate "line", 3
     $P143 = self."!PREFIX__!subrule"("backmod", "+")
     new $P144, "ResizablePMCArray"
@@ -1514,7 +1556,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<?>"  :subid("40_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "quantifier:sym<?>"  :subid("40_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx148_tgt
     .local int rx148_pos
@@ -1522,23 +1564,26 @@
     .local int rx148_eos
     .local int rx148_rep
     .local pmc rx148_cur
-    (rx148_cur, rx148_pos, rx148_tgt, $I10) = self."!cursor_start"()
+    (rx148_cur, rx148_pos, rx148_tgt) = self."!cursor_start"()
     rx148_cur."!cursor_debug"("START ", "quantifier:sym<?>")
     .lex unicode:"$\x{a2}", rx148_cur
     .local pmc match
     .lex "$/", match
     length rx148_eos, rx148_tgt
     set rx148_off, 0
-    lt $I10, 2, rx148_start
-    sub rx148_off, $I10, 1
+    lt rx148_pos, 2, rx148_start
+    sub rx148_off, rx148_pos, 1
     substr rx148_tgt, rx148_tgt, rx148_off
   rx148_start:
-    ge rx148_pos, 0, rxscan152_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan152_done
+    goto rxscan152_scan
   rxscan152_loop:
     ($P10) = rx148_cur."from"()
     inc $P10
     set rx148_pos, $P10
     ge rx148_pos, rx148_eos, rxscan152_done
+  rxscan152_scan:
     set_addr $I10, rxscan152_loop
     rx148_cur."!mark_push"(0, rx148_pos, $I10)
   rxscan152_done:
@@ -1590,7 +1635,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<?>"  :subid("41_1258904200.37175") :method
+.sub "!PREFIX__quantifier:sym<?>"  :subid("41_1258923244.0326") :method
 .annotate "line", 3
     $P150 = self."!PREFIX__!subrule"("backmod", "?")
     new $P151, "ResizablePMCArray"
@@ -1600,7 +1645,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<**>"  :subid("42_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "quantifier:sym<**>"  :subid("42_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx155_tgt
     .local int rx155_pos
@@ -1608,7 +1653,7 @@
     .local int rx155_eos
     .local int rx155_rep
     .local pmc rx155_cur
-    (rx155_cur, rx155_pos, rx155_tgt, $I10) = self."!cursor_start"()
+    (rx155_cur, rx155_pos, rx155_tgt) = self."!cursor_start"()
     rx155_cur."!cursor_debug"("START ", "quantifier:sym<**>")
     rx155_cur."!cursor_caparray"("max")
     .lex unicode:"$\x{a2}", rx155_cur
@@ -1616,16 +1661,19 @@
     .lex "$/", match
     length rx155_eos, rx155_tgt
     set rx155_off, 0
-    lt $I10, 2, rx155_start
-    sub rx155_off, $I10, 1
+    lt rx155_pos, 2, rx155_start
+    sub rx155_off, rx155_pos, 1
     substr rx155_tgt, rx155_tgt, rx155_off
   rx155_start:
-    ge rx155_pos, 0, rxscan158_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan158_done
+    goto rxscan158_scan
   rxscan158_loop:
     ($P10) = rx155_cur."from"()
     inc $P10
     set rx155_pos, $P10
     ge rx155_pos, rx155_eos, rxscan158_done
+  rxscan158_scan:
     set_addr $I10, rxscan158_loop
     rx155_cur."!mark_push"(0, rx155_pos, $I10)
   rxscan158_done:
@@ -1768,7 +1816,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<**>"  :subid("43_1258904200.37175") :method
+.sub "!PREFIX__quantifier:sym<**>"  :subid("43_1258923244.0326") :method
 .annotate "line", 3
     new $P157, "ResizablePMCArray"
     push $P157, "**"
@@ -1777,9 +1825,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backmod"  :subid("44_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backmod"  :subid("44_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
-    .const 'Sub' $P175 = "46_1258904200.37175" 
+    .const 'Sub' $P175 = "46_1258923244.0326" 
     capture_lex $P175
     .local string rx167_tgt
     .local int rx167_pos
@@ -1787,23 +1835,26 @@
     .local int rx167_eos
     .local int rx167_rep
     .local pmc rx167_cur
-    (rx167_cur, rx167_pos, rx167_tgt, $I10) = self."!cursor_start"()
+    (rx167_cur, rx167_pos, rx167_tgt) = self."!cursor_start"()
     rx167_cur."!cursor_debug"("START ", "backmod")
     .lex unicode:"$\x{a2}", rx167_cur
     .local pmc match
     .lex "$/", match
     length rx167_eos, rx167_tgt
     set rx167_off, 0
-    lt $I10, 2, rx167_start
-    sub rx167_off, $I10, 1
+    lt rx167_pos, 2, rx167_start
+    sub rx167_off, rx167_pos, 1
     substr rx167_tgt, rx167_tgt, rx167_off
   rx167_start:
-    ge rx167_pos, 0, rxscan170_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan170_done
+    goto rxscan170_scan
   rxscan170_loop:
     ($P10) = rx167_cur."from"()
     inc $P10
     set rx167_pos, $P10
     ge rx167_pos, rx167_eos, rxscan170_done
+  rxscan170_scan:
     set_addr $I10, rxscan170_loop
     rx167_cur."!mark_push"(0, rx167_pos, $I10)
   rxscan170_done:
@@ -1846,7 +1897,7 @@
   alt173_2:
   # rx subrule "before" subtype=zerowidth negate=1
     rx167_cur."!cursor_pos"(rx167_pos)
-    .const 'Sub' $P175 = "46_1258904200.37175" 
+    .const 'Sub' $P175 = "46_1258923244.0326" 
     capture_lex $P175
     $P10 = rx167_cur."before"($P175)
     if $P10, rx167_fail
@@ -1870,7 +1921,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backmod"  :subid("45_1258904200.37175") :method
+.sub "!PREFIX__backmod"  :subid("45_1258923244.0326") :method
 .annotate "line", 3
     new $P169, "ResizablePMCArray"
     push $P169, ""
@@ -1879,7 +1930,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block174"  :anon :subid("46_1258904200.37175") :method :outer("44_1258904200.37175")
+.sub "_block174"  :anon :subid("46_1258923244.0326") :method :outer("44_1258923244.0326")
 .annotate "line", 64
     .local string rx176_tgt
     .local int rx176_pos
@@ -1887,23 +1938,26 @@
     .local int rx176_eos
     .local int rx176_rep
     .local pmc rx176_cur
-    (rx176_cur, rx176_pos, rx176_tgt, $I10) = self."!cursor_start"()
+    (rx176_cur, rx176_pos, rx176_tgt) = self."!cursor_start"()
     rx176_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx176_cur
     .local pmc match
     .lex "$/", match
     length rx176_eos, rx176_tgt
     set rx176_off, 0
-    lt $I10, 2, rx176_start
-    sub rx176_off, $I10, 1
+    lt rx176_pos, 2, rx176_start
+    sub rx176_off, rx176_pos, 1
     substr rx176_tgt, rx176_tgt, rx176_off
   rx176_start:
-    ge rx176_pos, 0, rxscan177_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan177_done
+    goto rxscan177_scan
   rxscan177_loop:
     ($P10) = rx176_cur."from"()
     inc $P10
     set rx176_pos, $P10
     ge rx176_pos, rx176_eos, rxscan177_done
+  rxscan177_scan:
     set_addr $I10, rxscan177_loop
     rx176_cur."!mark_push"(0, rx176_pos, $I10)
   rxscan177_done:
@@ -1932,7 +1986,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar"  :subid("47_1258904200.37175") :method
+.sub "metachar"  :subid("47_1258923244.0326") :method
 .annotate "line", 66
     $P179 = self."!protoregex"("metachar")
     .return ($P179)
@@ -1940,7 +1994,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar"  :subid("48_1258904200.37175") :method
+.sub "!PREFIX__metachar"  :subid("48_1258923244.0326") :method
 .annotate "line", 66
     $P181 = self."!PREFIX__!protoregex"("metachar")
     .return ($P181)
@@ -1948,7 +2002,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<ws>"  :subid("49_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<ws>"  :subid("49_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx183_tgt
     .local int rx183_pos
@@ -1956,23 +2010,26 @@
     .local int rx183_eos
     .local int rx183_rep
     .local pmc rx183_cur
-    (rx183_cur, rx183_pos, rx183_tgt, $I10) = self."!cursor_start"()
+    (rx183_cur, rx183_pos, rx183_tgt) = self."!cursor_start"()
     rx183_cur."!cursor_debug"("START ", "metachar:sym<ws>")
     .lex unicode:"$\x{a2}", rx183_cur
     .local pmc match
     .lex "$/", match
     length rx183_eos, rx183_tgt
     set rx183_off, 0
-    lt $I10, 2, rx183_start
-    sub rx183_off, $I10, 1
+    lt rx183_pos, 2, rx183_start
+    sub rx183_off, rx183_pos, 1
     substr rx183_tgt, rx183_tgt, rx183_off
   rx183_start:
-    ge rx183_pos, 0, rxscan187_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan187_done
+    goto rxscan187_scan
   rxscan187_loop:
     ($P10) = rx183_cur."from"()
     inc $P10
     set rx183_pos, $P10
     ge rx183_pos, rx183_eos, rxscan187_done
+  rxscan187_scan:
     set_addr $I10, rxscan187_loop
     rx183_cur."!mark_push"(0, rx183_pos, $I10)
   rxscan187_done:
@@ -2001,7 +2058,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<ws>"  :subid("50_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<ws>"  :subid("50_1258923244.0326") :method
 .annotate "line", 3
     $P185 = self."!PREFIX__!subrule"("", "")
     new $P186, "ResizablePMCArray"
@@ -2011,7 +2068,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<[ ]>"  :subid("51_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<[ ]>"  :subid("51_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx189_tgt
     .local int rx189_pos
@@ -2019,23 +2076,26 @@
     .local int rx189_eos
     .local int rx189_rep
     .local pmc rx189_cur
-    (rx189_cur, rx189_pos, rx189_tgt, $I10) = self."!cursor_start"()
+    (rx189_cur, rx189_pos, rx189_tgt) = self."!cursor_start"()
     rx189_cur."!cursor_debug"("START ", "metachar:sym<[ ]>")
     .lex unicode:"$\x{a2}", rx189_cur
     .local pmc match
     .lex "$/", match
     length rx189_eos, rx189_tgt
     set rx189_off, 0
-    lt $I10, 2, rx189_start
-    sub rx189_off, $I10, 1
+    lt rx189_pos, 2, rx189_start
+    sub rx189_off, rx189_pos, 1
     substr rx189_tgt, rx189_tgt, rx189_off
   rx189_start:
-    ge rx189_pos, 0, rxscan193_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan193_done
+    goto rxscan193_scan
   rxscan193_loop:
     ($P10) = rx189_cur."from"()
     inc $P10
     set rx189_pos, $P10
     ge rx189_pos, rx189_eos, rxscan193_done
+  rxscan193_scan:
     set_addr $I10, rxscan193_loop
     rx189_cur."!mark_push"(0, rx189_pos, $I10)
   rxscan193_done:
@@ -2080,7 +2140,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<[ ]>"  :subid("52_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<[ ]>"  :subid("52_1258923244.0326") :method
 .annotate "line", 3
     $P191 = self."!PREFIX__!subrule"("nibbler", "[")
     new $P192, "ResizablePMCArray"
@@ -2090,7 +2150,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<( )>"  :subid("53_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<( )>"  :subid("53_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx195_tgt
     .local int rx195_pos
@@ -2098,23 +2158,26 @@
     .local int rx195_eos
     .local int rx195_rep
     .local pmc rx195_cur
-    (rx195_cur, rx195_pos, rx195_tgt, $I10) = self."!cursor_start"()
+    (rx195_cur, rx195_pos, rx195_tgt) = self."!cursor_start"()
     rx195_cur."!cursor_debug"("START ", "metachar:sym<( )>")
     .lex unicode:"$\x{a2}", rx195_cur
     .local pmc match
     .lex "$/", match
     length rx195_eos, rx195_tgt
     set rx195_off, 0
-    lt $I10, 2, rx195_start
-    sub rx195_off, $I10, 1
+    lt rx195_pos, 2, rx195_start
+    sub rx195_off, rx195_pos, 1
     substr rx195_tgt, rx195_tgt, rx195_off
   rx195_start:
-    ge rx195_pos, 0, rxscan199_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan199_done
+    goto rxscan199_scan
   rxscan199_loop:
     ($P10) = rx195_cur."from"()
     inc $P10
     set rx195_pos, $P10
     ge rx195_pos, rx195_eos, rxscan199_done
+  rxscan199_scan:
     set_addr $I10, rxscan199_loop
     rx195_cur."!mark_push"(0, rx195_pos, $I10)
   rxscan199_done:
@@ -2159,7 +2222,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<( )>"  :subid("54_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<( )>"  :subid("54_1258923244.0326") :method
 .annotate "line", 3
     $P197 = self."!PREFIX__!subrule"("nibbler", "(")
     new $P198, "ResizablePMCArray"
@@ -2169,7 +2232,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<'>"  :subid("55_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<'>"  :subid("55_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx201_tgt
     .local int rx201_pos
@@ -2177,23 +2240,26 @@
     .local int rx201_eos
     .local int rx201_rep
     .local pmc rx201_cur
-    (rx201_cur, rx201_pos, rx201_tgt, $I10) = self."!cursor_start"()
+    (rx201_cur, rx201_pos, rx201_tgt) = self."!cursor_start"()
     rx201_cur."!cursor_debug"("START ", "metachar:sym<'>")
     .lex unicode:"$\x{a2}", rx201_cur
     .local pmc match
     .lex "$/", match
     length rx201_eos, rx201_tgt
     set rx201_off, 0
-    lt $I10, 2, rx201_start
-    sub rx201_off, $I10, 1
+    lt rx201_pos, 2, rx201_start
+    sub rx201_off, rx201_pos, 1
     substr rx201_tgt, rx201_tgt, rx201_off
   rx201_start:
-    ge rx201_pos, 0, rxscan204_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan204_done
+    goto rxscan204_scan
   rxscan204_loop:
     ($P10) = rx201_cur."from"()
     inc $P10
     set rx201_pos, $P10
     ge rx201_pos, rx201_eos, rxscan204_done
+  rxscan204_scan:
     set_addr $I10, rxscan204_loop
     rx201_cur."!mark_push"(0, rx201_pos, $I10)
   rxscan204_done:
@@ -2230,7 +2296,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<'>"  :subid("56_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<'>"  :subid("56_1258923244.0326") :method
 .annotate "line", 3
     new $P203, "ResizablePMCArray"
     push $P203, "'"
@@ -2239,7 +2305,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<\">"  :subid("57_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<\">"  :subid("57_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx206_tgt
     .local int rx206_pos
@@ -2247,23 +2313,26 @@
     .local int rx206_eos
     .local int rx206_rep
     .local pmc rx206_cur
-    (rx206_cur, rx206_pos, rx206_tgt, $I10) = self."!cursor_start"()
+    (rx206_cur, rx206_pos, rx206_tgt) = self."!cursor_start"()
     rx206_cur."!cursor_debug"("START ", "metachar:sym<\">")
     .lex unicode:"$\x{a2}", rx206_cur
     .local pmc match
     .lex "$/", match
     length rx206_eos, rx206_tgt
     set rx206_off, 0
-    lt $I10, 2, rx206_start
-    sub rx206_off, $I10, 1
+    lt rx206_pos, 2, rx206_start
+    sub rx206_off, rx206_pos, 1
     substr rx206_tgt, rx206_tgt, rx206_off
   rx206_start:
-    ge rx206_pos, 0, rxscan209_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan209_done
+    goto rxscan209_scan
   rxscan209_loop:
     ($P10) = rx206_cur."from"()
     inc $P10
     set rx206_pos, $P10
     ge rx206_pos, rx206_eos, rxscan209_done
+  rxscan209_scan:
     set_addr $I10, rxscan209_loop
     rx206_cur."!mark_push"(0, rx206_pos, $I10)
   rxscan209_done:
@@ -2300,7 +2369,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<\">"  :subid("58_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<\">"  :subid("58_1258923244.0326") :method
 .annotate "line", 3
     new $P208, "ResizablePMCArray"
     push $P208, "\""
@@ -2309,7 +2378,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<.>"  :subid("59_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<.>"  :subid("59_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx211_tgt
     .local int rx211_pos
@@ -2317,23 +2386,26 @@
     .local int rx211_eos
     .local int rx211_rep
     .local pmc rx211_cur
-    (rx211_cur, rx211_pos, rx211_tgt, $I10) = self."!cursor_start"()
+    (rx211_cur, rx211_pos, rx211_tgt) = self."!cursor_start"()
     rx211_cur."!cursor_debug"("START ", "metachar:sym<.>")
     .lex unicode:"$\x{a2}", rx211_cur
     .local pmc match
     .lex "$/", match
     length rx211_eos, rx211_tgt
     set rx211_off, 0
-    lt $I10, 2, rx211_start
-    sub rx211_off, $I10, 1
+    lt rx211_pos, 2, rx211_start
+    sub rx211_off, rx211_pos, 1
     substr rx211_tgt, rx211_tgt, rx211_off
   rx211_start:
-    ge rx211_pos, 0, rxscan214_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan214_done
+    goto rxscan214_scan
   rxscan214_loop:
     ($P10) = rx211_cur."from"()
     inc $P10
     set rx211_pos, $P10
     ge rx211_pos, rx211_eos, rxscan214_done
+  rxscan214_scan:
     set_addr $I10, rxscan214_loop
     rx211_cur."!mark_push"(0, rx211_pos, $I10)
   rxscan214_done:
@@ -2378,7 +2450,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<.>"  :subid("60_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<.>"  :subid("60_1258923244.0326") :method
 .annotate "line", 3
     new $P213, "ResizablePMCArray"
     push $P213, "."
@@ -2387,7 +2459,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^>"  :subid("61_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<^>"  :subid("61_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx217_tgt
     .local int rx217_pos
@@ -2395,23 +2467,26 @@
     .local int rx217_eos
     .local int rx217_rep
     .local pmc rx217_cur
-    (rx217_cur, rx217_pos, rx217_tgt, $I10) = self."!cursor_start"()
+    (rx217_cur, rx217_pos, rx217_tgt) = self."!cursor_start"()
     rx217_cur."!cursor_debug"("START ", "metachar:sym<^>")
     .lex unicode:"$\x{a2}", rx217_cur
     .local pmc match
     .lex "$/", match
     length rx217_eos, rx217_tgt
     set rx217_off, 0
-    lt $I10, 2, rx217_start
-    sub rx217_off, $I10, 1
+    lt rx217_pos, 2, rx217_start
+    sub rx217_off, rx217_pos, 1
     substr rx217_tgt, rx217_tgt, rx217_off
   rx217_start:
-    ge rx217_pos, 0, rxscan220_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan220_done
+    goto rxscan220_scan
   rxscan220_loop:
     ($P10) = rx217_cur."from"()
     inc $P10
     set rx217_pos, $P10
     ge rx217_pos, rx217_eos, rxscan220_done
+  rxscan220_scan:
     set_addr $I10, rxscan220_loop
     rx217_cur."!mark_push"(0, rx217_pos, $I10)
   rxscan220_done:
@@ -2456,7 +2531,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^>"  :subid("62_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<^>"  :subid("62_1258923244.0326") :method
 .annotate "line", 3
     new $P219, "ResizablePMCArray"
     push $P219, "^"
@@ -2465,7 +2540,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^^>"  :subid("63_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<^^>"  :subid("63_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx223_tgt
     .local int rx223_pos
@@ -2473,23 +2548,26 @@
     .local int rx223_eos
     .local int rx223_rep
     .local pmc rx223_cur
-    (rx223_cur, rx223_pos, rx223_tgt, $I10) = self."!cursor_start"()
+    (rx223_cur, rx223_pos, rx223_tgt) = self."!cursor_start"()
     rx223_cur."!cursor_debug"("START ", "metachar:sym<^^>")
     .lex unicode:"$\x{a2}", rx223_cur
     .local pmc match
     .lex "$/", match
     length rx223_eos, rx223_tgt
     set rx223_off, 0
-    lt $I10, 2, rx223_start
-    sub rx223_off, $I10, 1
+    lt rx223_pos, 2, rx223_start
+    sub rx223_off, rx223_pos, 1
     substr rx223_tgt, rx223_tgt, rx223_off
   rx223_start:
-    ge rx223_pos, 0, rxscan226_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan226_done
+    goto rxscan226_scan
   rxscan226_loop:
     ($P10) = rx223_cur."from"()
     inc $P10
     set rx223_pos, $P10
     ge rx223_pos, rx223_eos, rxscan226_done
+  rxscan226_scan:
     set_addr $I10, rxscan226_loop
     rx223_cur."!mark_push"(0, rx223_pos, $I10)
   rxscan226_done:
@@ -2534,7 +2612,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^^>"  :subid("64_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<^^>"  :subid("64_1258923244.0326") :method
 .annotate "line", 3
     new $P225, "ResizablePMCArray"
     push $P225, "^^"
@@ -2543,7 +2621,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$>"  :subid("65_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<$>"  :subid("65_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx229_tgt
     .local int rx229_pos
@@ -2551,23 +2629,26 @@
     .local int rx229_eos
     .local int rx229_rep
     .local pmc rx229_cur
-    (rx229_cur, rx229_pos, rx229_tgt, $I10) = self."!cursor_start"()
+    (rx229_cur, rx229_pos, rx229_tgt) = self."!cursor_start"()
     rx229_cur."!cursor_debug"("START ", "metachar:sym<$>")
     .lex unicode:"$\x{a2}", rx229_cur
     .local pmc match
     .lex "$/", match
     length rx229_eos, rx229_tgt
     set rx229_off, 0
-    lt $I10, 2, rx229_start
-    sub rx229_off, $I10, 1
+    lt rx229_pos, 2, rx229_start
+    sub rx229_off, rx229_pos, 1
     substr rx229_tgt, rx229_tgt, rx229_off
   rx229_start:
-    ge rx229_pos, 0, rxscan232_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan232_done
+    goto rxscan232_scan
   rxscan232_loop:
     ($P10) = rx229_cur."from"()
     inc $P10
     set rx229_pos, $P10
     ge rx229_pos, rx229_eos, rxscan232_done
+  rxscan232_scan:
     set_addr $I10, rxscan232_loop
     rx229_cur."!mark_push"(0, rx229_pos, $I10)
   rxscan232_done:
@@ -2612,7 +2693,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$>"  :subid("66_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<$>"  :subid("66_1258923244.0326") :method
 .annotate "line", 3
     new $P231, "ResizablePMCArray"
     push $P231, "$"
@@ -2621,7 +2702,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$$>"  :subid("67_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<$$>"  :subid("67_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx235_tgt
     .local int rx235_pos
@@ -2629,23 +2710,26 @@
     .local int rx235_eos
     .local int rx235_rep
     .local pmc rx235_cur
-    (rx235_cur, rx235_pos, rx235_tgt, $I10) = self."!cursor_start"()
+    (rx235_cur, rx235_pos, rx235_tgt) = self."!cursor_start"()
     rx235_cur."!cursor_debug"("START ", "metachar:sym<$$>")
     .lex unicode:"$\x{a2}", rx235_cur
     .local pmc match
     .lex "$/", match
     length rx235_eos, rx235_tgt
     set rx235_off, 0
-    lt $I10, 2, rx235_start
-    sub rx235_off, $I10, 1
+    lt rx235_pos, 2, rx235_start
+    sub rx235_off, rx235_pos, 1
     substr rx235_tgt, rx235_tgt, rx235_off
   rx235_start:
-    ge rx235_pos, 0, rxscan238_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan238_done
+    goto rxscan238_scan
   rxscan238_loop:
     ($P10) = rx235_cur."from"()
     inc $P10
     set rx235_pos, $P10
     ge rx235_pos, rx235_eos, rxscan238_done
+  rxscan238_scan:
     set_addr $I10, rxscan238_loop
     rx235_cur."!mark_push"(0, rx235_pos, $I10)
   rxscan238_done:
@@ -2690,7 +2774,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$$>"  :subid("68_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<$$>"  :subid("68_1258923244.0326") :method
 .annotate "line", 3
     new $P237, "ResizablePMCArray"
     push $P237, "$$"
@@ -2699,7 +2783,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<:::>"  :subid("69_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<:::>"  :subid("69_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx241_tgt
     .local int rx241_pos
@@ -2707,23 +2791,26 @@
     .local int rx241_eos
     .local int rx241_rep
     .local pmc rx241_cur
-    (rx241_cur, rx241_pos, rx241_tgt, $I10) = self."!cursor_start"()
+    (rx241_cur, rx241_pos, rx241_tgt) = self."!cursor_start"()
     rx241_cur."!cursor_debug"("START ", "metachar:sym<:::>")
     .lex unicode:"$\x{a2}", rx241_cur
     .local pmc match
     .lex "$/", match
     length rx241_eos, rx241_tgt
     set rx241_off, 0
-    lt $I10, 2, rx241_start
-    sub rx241_off, $I10, 1
+    lt rx241_pos, 2, rx241_start
+    sub rx241_off, rx241_pos, 1
     substr rx241_tgt, rx241_tgt, rx241_off
   rx241_start:
-    ge rx241_pos, 0, rxscan245_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan245_done
+    goto rxscan245_scan
   rxscan245_loop:
     ($P10) = rx241_cur."from"()
     inc $P10
     set rx241_pos, $P10
     ge rx241_pos, rx241_eos, rxscan245_done
+  rxscan245_scan:
     set_addr $I10, rxscan245_loop
     rx241_cur."!mark_push"(0, rx241_pos, $I10)
   rxscan245_done:
@@ -2773,7 +2860,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<:::>"  :subid("70_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<:::>"  :subid("70_1258923244.0326") :method
 .annotate "line", 3
     $P243 = self."!PREFIX__!subrule"("", ":::")
     new $P244, "ResizablePMCArray"
@@ -2783,7 +2870,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<::>"  :subid("71_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<::>"  :subid("71_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx248_tgt
     .local int rx248_pos
@@ -2791,23 +2878,26 @@
     .local int rx248_eos
     .local int rx248_rep
     .local pmc rx248_cur
-    (rx248_cur, rx248_pos, rx248_tgt, $I10) = self."!cursor_start"()
+    (rx248_cur, rx248_pos, rx248_tgt) = self."!cursor_start"()
     rx248_cur."!cursor_debug"("START ", "metachar:sym<::>")
     .lex unicode:"$\x{a2}", rx248_cur
     .local pmc match
     .lex "$/", match
     length rx248_eos, rx248_tgt
     set rx248_off, 0
-    lt $I10, 2, rx248_start
-    sub rx248_off, $I10, 1
+    lt rx248_pos, 2, rx248_start
+    sub rx248_off, rx248_pos, 1
     substr rx248_tgt, rx248_tgt, rx248_off
   rx248_start:
-    ge rx248_pos, 0, rxscan252_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan252_done
+    goto rxscan252_scan
   rxscan252_loop:
     ($P10) = rx248_cur."from"()
     inc $P10
     set rx248_pos, $P10
     ge rx248_pos, rx248_eos, rxscan252_done
+  rxscan252_scan:
     set_addr $I10, rxscan252_loop
     rx248_cur."!mark_push"(0, rx248_pos, $I10)
   rxscan252_done:
@@ -2857,7 +2947,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<::>"  :subid("72_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<::>"  :subid("72_1258923244.0326") :method
 .annotate "line", 3
     $P250 = self."!PREFIX__!subrule"("", "::")
     new $P251, "ResizablePMCArray"
@@ -2867,7 +2957,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<lwb>"  :subid("73_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<lwb>"  :subid("73_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx255_tgt
     .local int rx255_pos
@@ -2875,23 +2965,26 @@
     .local int rx255_eos
     .local int rx255_rep
     .local pmc rx255_cur
-    (rx255_cur, rx255_pos, rx255_tgt, $I10) = self."!cursor_start"()
+    (rx255_cur, rx255_pos, rx255_tgt) = self."!cursor_start"()
     rx255_cur."!cursor_debug"("START ", "metachar:sym<lwb>")
     .lex unicode:"$\x{a2}", rx255_cur
     .local pmc match
     .lex "$/", match
     length rx255_eos, rx255_tgt
     set rx255_off, 0
-    lt $I10, 2, rx255_start
-    sub rx255_off, $I10, 1
+    lt rx255_pos, 2, rx255_start
+    sub rx255_off, rx255_pos, 1
     substr rx255_tgt, rx255_tgt, rx255_off
   rx255_start:
-    ge rx255_pos, 0, rxscan258_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan258_done
+    goto rxscan258_scan
   rxscan258_loop:
     ($P10) = rx255_cur."from"()
     inc $P10
     set rx255_pos, $P10
     ge rx255_pos, rx255_eos, rxscan258_done
+  rxscan258_scan:
     set_addr $I10, rxscan258_loop
     rx255_cur."!mark_push"(0, rx255_pos, $I10)
   rxscan258_done:
@@ -2949,7 +3042,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<lwb>"  :subid("74_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<lwb>"  :subid("74_1258923244.0326") :method
 .annotate "line", 3
     new $P257, "ResizablePMCArray"
     push $P257, unicode:"\x{ab}"
@@ -2959,7 +3052,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<rwb>"  :subid("75_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<rwb>"  :subid("75_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx262_tgt
     .local int rx262_pos
@@ -2967,23 +3060,26 @@
     .local int rx262_eos
     .local int rx262_rep
     .local pmc rx262_cur
-    (rx262_cur, rx262_pos, rx262_tgt, $I10) = self."!cursor_start"()
+    (rx262_cur, rx262_pos, rx262_tgt) = self."!cursor_start"()
     rx262_cur."!cursor_debug"("START ", "metachar:sym<rwb>")
     .lex unicode:"$\x{a2}", rx262_cur
     .local pmc match
     .lex "$/", match
     length rx262_eos, rx262_tgt
     set rx262_off, 0
-    lt $I10, 2, rx262_start
-    sub rx262_off, $I10, 1
+    lt rx262_pos, 2, rx262_start
+    sub rx262_off, rx262_pos, 1
     substr rx262_tgt, rx262_tgt, rx262_off
   rx262_start:
-    ge rx262_pos, 0, rxscan265_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan265_done
+    goto rxscan265_scan
   rxscan265_loop:
     ($P10) = rx262_cur."from"()
     inc $P10
     set rx262_pos, $P10
     ge rx262_pos, rx262_eos, rxscan265_done
+  rxscan265_scan:
     set_addr $I10, rxscan265_loop
     rx262_cur."!mark_push"(0, rx262_pos, $I10)
   rxscan265_done:
@@ -3041,7 +3137,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<rwb>"  :subid("76_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<rwb>"  :subid("76_1258923244.0326") :method
 .annotate "line", 3
     new $P264, "ResizablePMCArray"
     push $P264, unicode:"\x{bb}"
@@ -3051,7 +3147,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<bs>"  :subid("77_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<bs>"  :subid("77_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx269_tgt
     .local int rx269_pos
@@ -3059,23 +3155,26 @@
     .local int rx269_eos
     .local int rx269_rep
     .local pmc rx269_cur
-    (rx269_cur, rx269_pos, rx269_tgt, $I10) = self."!cursor_start"()
+    (rx269_cur, rx269_pos, rx269_tgt) = self."!cursor_start"()
     rx269_cur."!cursor_debug"("START ", "metachar:sym<bs>")
     .lex unicode:"$\x{a2}", rx269_cur
     .local pmc match
     .lex "$/", match
     length rx269_eos, rx269_tgt
     set rx269_off, 0
-    lt $I10, 2, rx269_start
-    sub rx269_off, $I10, 1
+    lt rx269_pos, 2, rx269_start
+    sub rx269_off, rx269_pos, 1
     substr rx269_tgt, rx269_tgt, rx269_off
   rx269_start:
-    ge rx269_pos, 0, rxscan273_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan273_done
+    goto rxscan273_scan
   rxscan273_loop:
     ($P10) = rx269_cur."from"()
     inc $P10
     set rx269_pos, $P10
     ge rx269_pos, rx269_eos, rxscan273_done
+  rxscan273_scan:
     set_addr $I10, rxscan273_loop
     rx269_cur."!mark_push"(0, rx269_pos, $I10)
   rxscan273_done:
@@ -3113,7 +3212,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<bs>"  :subid("78_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<bs>"  :subid("78_1258923244.0326") :method
 .annotate "line", 3
     $P271 = self."!PREFIX__!subrule"("backslash", "\\")
     new $P272, "ResizablePMCArray"
@@ -3123,7 +3222,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<mod>"  :subid("79_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<mod>"  :subid("79_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx275_tgt
     .local int rx275_pos
@@ -3131,23 +3230,26 @@
     .local int rx275_eos
     .local int rx275_rep
     .local pmc rx275_cur
-    (rx275_cur, rx275_pos, rx275_tgt, $I10) = self."!cursor_start"()
+    (rx275_cur, rx275_pos, rx275_tgt) = self."!cursor_start"()
     rx275_cur."!cursor_debug"("START ", "metachar:sym<mod>")
     .lex unicode:"$\x{a2}", rx275_cur
     .local pmc match
     .lex "$/", match
     length rx275_eos, rx275_tgt
     set rx275_off, 0
-    lt $I10, 2, rx275_start
-    sub rx275_off, $I10, 1
+    lt rx275_pos, 2, rx275_start
+    sub rx275_off, rx275_pos, 1
     substr rx275_tgt, rx275_tgt, rx275_off
   rx275_start:
-    ge rx275_pos, 0, rxscan279_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan279_done
+    goto rxscan279_scan
   rxscan279_loop:
     ($P10) = rx275_cur."from"()
     inc $P10
     set rx275_pos, $P10
     ge rx275_pos, rx275_eos, rxscan279_done
+  rxscan279_scan:
     set_addr $I10, rxscan279_loop
     rx275_cur."!mark_push"(0, rx275_pos, $I10)
   rxscan279_done:
@@ -3178,7 +3280,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<mod>"  :subid("80_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<mod>"  :subid("80_1258923244.0326") :method
 .annotate "line", 3
     $P277 = self."!PREFIX__!subrule"("mod_internal", "")
     new $P278, "ResizablePMCArray"
@@ -3188,7 +3290,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<~>"  :subid("81_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<~>"  :subid("81_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx281_tgt
     .local int rx281_pos
@@ -3196,23 +3298,26 @@
     .local int rx281_eos
     .local int rx281_rep
     .local pmc rx281_cur
-    (rx281_cur, rx281_pos, rx281_tgt, $I10) = self."!cursor_start"()
+    (rx281_cur, rx281_pos, rx281_tgt) = self."!cursor_start"()
     rx281_cur."!cursor_debug"("START ", "metachar:sym<~>")
     .lex unicode:"$\x{a2}", rx281_cur
     .local pmc match
     .lex "$/", match
     length rx281_eos, rx281_tgt
     set rx281_off, 0
-    lt $I10, 2, rx281_start
-    sub rx281_off, $I10, 1
+    lt rx281_pos, 2, rx281_start
+    sub rx281_off, rx281_pos, 1
     substr rx281_tgt, rx281_tgt, rx281_off
   rx281_start:
-    ge rx281_pos, 0, rxscan285_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan285_done
+    goto rxscan285_scan
   rxscan285_loop:
     ($P10) = rx281_cur."from"()
     inc $P10
     set rx281_pos, $P10
     ge rx281_pos, rx281_eos, rxscan285_done
+  rxscan285_scan:
     set_addr $I10, rxscan285_loop
     rx281_cur."!mark_push"(0, rx281_pos, $I10)
   rxscan285_done:
@@ -3284,7 +3389,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<~>"  :subid("82_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<~>"  :subid("82_1258923244.0326") :method
 .annotate "line", 3
     $P283 = self."!PREFIX__!subrule"("", "~")
     new $P284, "ResizablePMCArray"
@@ -3294,7 +3399,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<{*}>"  :subid("83_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<{*}>"  :subid("83_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx288_tgt
     .local int rx288_pos
@@ -3302,7 +3407,7 @@
     .local int rx288_eos
     .local int rx288_rep
     .local pmc rx288_cur
-    (rx288_cur, rx288_pos, rx288_tgt, $I10) = self."!cursor_start"()
+    (rx288_cur, rx288_pos, rx288_tgt) = self."!cursor_start"()
     rx288_cur."!cursor_debug"("START ", "metachar:sym<{*}>")
     rx288_cur."!cursor_caparray"("key")
     .lex unicode:"$\x{a2}", rx288_cur
@@ -3310,16 +3415,19 @@
     .lex "$/", match
     length rx288_eos, rx288_tgt
     set rx288_off, 0
-    lt $I10, 2, rx288_start
-    sub rx288_off, $I10, 1
+    lt rx288_pos, 2, rx288_start
+    sub rx288_off, rx288_pos, 1
     substr rx288_tgt, rx288_tgt, rx288_off
   rx288_start:
-    ge rx288_pos, 0, rxscan291_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan291_done
+    goto rxscan291_scan
   rxscan291_loop:
     ($P10) = rx288_cur."from"()
     inc $P10
     set rx288_pos, $P10
     ge rx288_pos, rx288_eos, rxscan291_done
+  rxscan291_scan:
     set_addr $I10, rxscan291_loop
     rx288_cur."!mark_push"(0, rx288_pos, $I10)
   rxscan291_done:
@@ -3458,7 +3566,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<{*}>"  :subid("84_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<{*}>"  :subid("84_1258923244.0326") :method
 .annotate "line", 3
     new $P290, "ResizablePMCArray"
     push $P290, "{*}"
@@ -3467,7 +3575,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<assert>"  :subid("85_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<assert>"  :subid("85_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx305_tgt
     .local int rx305_pos
@@ -3475,23 +3583,26 @@
     .local int rx305_eos
     .local int rx305_rep
     .local pmc rx305_cur
-    (rx305_cur, rx305_pos, rx305_tgt, $I10) = self."!cursor_start"()
+    (rx305_cur, rx305_pos, rx305_tgt) = self."!cursor_start"()
     rx305_cur."!cursor_debug"("START ", "metachar:sym<assert>")
     .lex unicode:"$\x{a2}", rx305_cur
     .local pmc match
     .lex "$/", match
     length rx305_eos, rx305_tgt
     set rx305_off, 0
-    lt $I10, 2, rx305_start
-    sub rx305_off, $I10, 1
+    lt rx305_pos, 2, rx305_start
+    sub rx305_off, rx305_pos, 1
     substr rx305_tgt, rx305_tgt, rx305_off
   rx305_start:
-    ge rx305_pos, 0, rxscan309_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan309_done
+    goto rxscan309_scan
   rxscan309_loop:
     ($P10) = rx305_cur."from"()
     inc $P10
     set rx305_pos, $P10
     ge rx305_pos, rx305_eos, rxscan309_done
+  rxscan309_scan:
     set_addr $I10, rxscan309_loop
     rx305_cur."!mark_push"(0, rx305_pos, $I10)
   rxscan309_done:
@@ -3549,7 +3660,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<assert>"  :subid("86_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<assert>"  :subid("86_1258923244.0326") :method
 .annotate "line", 3
     $P307 = self."!PREFIX__!subrule"("assertion", "<")
     new $P308, "ResizablePMCArray"
@@ -3559,7 +3670,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<var>"  :subid("87_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<var>"  :subid("87_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx312_tgt
     .local int rx312_pos
@@ -3567,7 +3678,7 @@
     .local int rx312_eos
     .local int rx312_rep
     .local pmc rx312_cur
-    (rx312_cur, rx312_pos, rx312_tgt, $I10) = self."!cursor_start"()
+    (rx312_cur, rx312_pos, rx312_tgt) = self."!cursor_start"()
     rx312_cur."!cursor_debug"("START ", "metachar:sym<var>")
     rx312_cur."!cursor_caparray"("quantified_atom")
     .lex unicode:"$\x{a2}", rx312_cur
@@ -3575,16 +3686,19 @@
     .lex "$/", match
     length rx312_eos, rx312_tgt
     set rx312_off, 0
-    lt $I10, 2, rx312_start
-    sub rx312_off, $I10, 1
+    lt rx312_pos, 2, rx312_start
+    sub rx312_off, rx312_pos, 1
     substr rx312_tgt, rx312_tgt, rx312_off
   rx312_start:
-    ge rx312_pos, 0, rxscan315_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan315_done
+    goto rxscan315_scan
   rxscan315_loop:
     ($P10) = rx312_cur."from"()
     inc $P10
     set rx312_pos, $P10
     ge rx312_pos, rx312_eos, rxscan315_done
+  rxscan315_scan:
     set_addr $I10, rxscan315_loop
     rx312_cur."!mark_push"(0, rx312_pos, $I10)
   rxscan315_done:
@@ -3718,7 +3832,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<var>"  :subid("88_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<var>"  :subid("88_1258923244.0326") :method
 .annotate "line", 3
     new $P314, "ResizablePMCArray"
     push $P314, "$"
@@ -3728,7 +3842,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<PIR>"  :subid("89_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "metachar:sym<PIR>"  :subid("89_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx324_tgt
     .local int rx324_pos
@@ -3736,23 +3850,26 @@
     .local int rx324_eos
     .local int rx324_rep
     .local pmc rx324_cur
-    (rx324_cur, rx324_pos, rx324_tgt, $I10) = self."!cursor_start"()
+    (rx324_cur, rx324_pos, rx324_tgt) = self."!cursor_start"()
     rx324_cur."!cursor_debug"("START ", "metachar:sym<PIR>")
     .lex unicode:"$\x{a2}", rx324_cur
     .local pmc match
     .lex "$/", match
     length rx324_eos, rx324_tgt
     set rx324_off, 0
-    lt $I10, 2, rx324_start
-    sub rx324_off, $I10, 1
+    lt rx324_pos, 2, rx324_start
+    sub rx324_off, rx324_pos, 1
     substr rx324_tgt, rx324_tgt, rx324_off
   rx324_start:
-    ge rx324_pos, 0, rxscan327_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan327_done
+    goto rxscan327_scan
   rxscan327_loop:
     ($P10) = rx324_cur."from"()
     inc $P10
     set rx324_pos, $P10
     ge rx324_pos, rx324_eos, rxscan327_done
+  rxscan327_scan:
     set_addr $I10, rxscan327_loop
     rx324_cur."!mark_push"(0, rx324_pos, $I10)
   rxscan327_done:
@@ -3816,7 +3933,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<PIR>"  :subid("90_1258904200.37175") :method
+.sub "!PREFIX__metachar:sym<PIR>"  :subid("90_1258923244.0326") :method
 .annotate "line", 3
     new $P326, "ResizablePMCArray"
     push $P326, ":PIR{{"
@@ -3825,7 +3942,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash"  :subid("91_1258904200.37175") :method
+.sub "backslash"  :subid("91_1258923244.0326") :method
 .annotate "line", 113
     $P332 = self."!protoregex"("backslash")
     .return ($P332)
@@ -3833,7 +3950,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash"  :subid("92_1258904200.37175") :method
+.sub "!PREFIX__backslash"  :subid("92_1258923244.0326") :method
 .annotate "line", 113
     $P334 = self."!PREFIX__!protoregex"("backslash")
     .return ($P334)
@@ -3841,7 +3958,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<w>"  :subid("93_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<w>"  :subid("93_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx336_tgt
     .local int rx336_pos
@@ -3849,23 +3966,26 @@
     .local int rx336_eos
     .local int rx336_rep
     .local pmc rx336_cur
-    (rx336_cur, rx336_pos, rx336_tgt, $I10) = self."!cursor_start"()
+    (rx336_cur, rx336_pos, rx336_tgt) = self."!cursor_start"()
     rx336_cur."!cursor_debug"("START ", "backslash:sym<w>")
     .lex unicode:"$\x{a2}", rx336_cur
     .local pmc match
     .lex "$/", match
     length rx336_eos, rx336_tgt
     set rx336_off, 0
-    lt $I10, 2, rx336_start
-    sub rx336_off, $I10, 1
+    lt rx336_pos, 2, rx336_start
+    sub rx336_off, rx336_pos, 1
     substr rx336_tgt, rx336_tgt, rx336_off
   rx336_start:
-    ge rx336_pos, 0, rxscan339_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan339_done
+    goto rxscan339_scan
   rxscan339_loop:
     ($P10) = rx336_cur."from"()
     inc $P10
     set rx336_pos, $P10
     ge rx336_pos, rx336_eos, rxscan339_done
+  rxscan339_scan:
     set_addr $I10, rxscan339_loop
     rx336_cur."!mark_push"(0, rx336_pos, $I10)
   rxscan339_done:
@@ -3910,7 +4030,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<w>"  :subid("94_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<w>"  :subid("94_1258923244.0326") :method
 .annotate "line", 3
     new $P338, "ResizablePMCArray"
     push $P338, "N"
@@ -3926,7 +4046,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<b>"  :subid("95_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<b>"  :subid("95_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx342_tgt
     .local int rx342_pos
@@ -3934,23 +4054,26 @@
     .local int rx342_eos
     .local int rx342_rep
     .local pmc rx342_cur
-    (rx342_cur, rx342_pos, rx342_tgt, $I10) = self."!cursor_start"()
+    (rx342_cur, rx342_pos, rx342_tgt) = self."!cursor_start"()
     rx342_cur."!cursor_debug"("START ", "backslash:sym<b>")
     .lex unicode:"$\x{a2}", rx342_cur
     .local pmc match
     .lex "$/", match
     length rx342_eos, rx342_tgt
     set rx342_off, 0
-    lt $I10, 2, rx342_start
-    sub rx342_off, $I10, 1
+    lt rx342_pos, 2, rx342_start
+    sub rx342_off, rx342_pos, 1
     substr rx342_tgt, rx342_tgt, rx342_off
   rx342_start:
-    ge rx342_pos, 0, rxscan345_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan345_done
+    goto rxscan345_scan
   rxscan345_loop:
     ($P10) = rx342_cur."from"()
     inc $P10
     set rx342_pos, $P10
     ge rx342_pos, rx342_eos, rxscan345_done
+  rxscan345_scan:
     set_addr $I10, rxscan345_loop
     rx342_cur."!mark_push"(0, rx342_pos, $I10)
   rxscan345_done:
@@ -3995,7 +4118,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<b>"  :subid("96_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<b>"  :subid("96_1258923244.0326") :method
 .annotate "line", 3
     new $P344, "ResizablePMCArray"
     push $P344, "B"
@@ -4005,7 +4128,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<e>"  :subid("97_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<e>"  :subid("97_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx348_tgt
     .local int rx348_pos
@@ -4013,23 +4136,26 @@
     .local int rx348_eos
     .local int rx348_rep
     .local pmc rx348_cur
-    (rx348_cur, rx348_pos, rx348_tgt, $I10) = self."!cursor_start"()
+    (rx348_cur, rx348_pos, rx348_tgt) = self."!cursor_start"()
     rx348_cur."!cursor_debug"("START ", "backslash:sym<e>")
     .lex unicode:"$\x{a2}", rx348_cur
     .local pmc match
     .lex "$/", match
     length rx348_eos, rx348_tgt
     set rx348_off, 0
-    lt $I10, 2, rx348_start
-    sub rx348_off, $I10, 1
+    lt rx348_pos, 2, rx348_start
+    sub rx348_off, rx348_pos, 1
     substr rx348_tgt, rx348_tgt, rx348_off
   rx348_start:
-    ge rx348_pos, 0, rxscan351_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan351_done
+    goto rxscan351_scan
   rxscan351_loop:
     ($P10) = rx348_cur."from"()
     inc $P10
     set rx348_pos, $P10
     ge rx348_pos, rx348_eos, rxscan351_done
+  rxscan351_scan:
     set_addr $I10, rxscan351_loop
     rx348_cur."!mark_push"(0, rx348_pos, $I10)
   rxscan351_done:
@@ -4074,7 +4200,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<e>"  :subid("98_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<e>"  :subid("98_1258923244.0326") :method
 .annotate "line", 3
     new $P350, "ResizablePMCArray"
     push $P350, "E"
@@ -4084,7 +4210,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<f>"  :subid("99_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<f>"  :subid("99_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx354_tgt
     .local int rx354_pos
@@ -4092,23 +4218,26 @@
     .local int rx354_eos
     .local int rx354_rep
     .local pmc rx354_cur
-    (rx354_cur, rx354_pos, rx354_tgt, $I10) = self."!cursor_start"()
+    (rx354_cur, rx354_pos, rx354_tgt) = self."!cursor_start"()
     rx354_cur."!cursor_debug"("START ", "backslash:sym<f>")
     .lex unicode:"$\x{a2}", rx354_cur
     .local pmc match
     .lex "$/", match
     length rx354_eos, rx354_tgt
     set rx354_off, 0
-    lt $I10, 2, rx354_start
-    sub rx354_off, $I10, 1
+    lt rx354_pos, 2, rx354_start
+    sub rx354_off, rx354_pos, 1
     substr rx354_tgt, rx354_tgt, rx354_off
   rx354_start:
-    ge rx354_pos, 0, rxscan357_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan357_done
+    goto rxscan357_scan
   rxscan357_loop:
     ($P10) = rx354_cur."from"()
     inc $P10
     set rx354_pos, $P10
     ge rx354_pos, rx354_eos, rxscan357_done
+  rxscan357_scan:
     set_addr $I10, rxscan357_loop
     rx354_cur."!mark_push"(0, rx354_pos, $I10)
   rxscan357_done:
@@ -4153,7 +4282,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<f>"  :subid("100_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<f>"  :subid("100_1258923244.0326") :method
 .annotate "line", 3
     new $P356, "ResizablePMCArray"
     push $P356, "F"
@@ -4163,7 +4292,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<h>"  :subid("101_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<h>"  :subid("101_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx360_tgt
     .local int rx360_pos
@@ -4171,23 +4300,26 @@
     .local int rx360_eos
     .local int rx360_rep
     .local pmc rx360_cur
-    (rx360_cur, rx360_pos, rx360_tgt, $I10) = self."!cursor_start"()
+    (rx360_cur, rx360_pos, rx360_tgt) = self."!cursor_start"()
     rx360_cur."!cursor_debug"("START ", "backslash:sym<h>")
     .lex unicode:"$\x{a2}", rx360_cur
     .local pmc match
     .lex "$/", match
     length rx360_eos, rx360_tgt
     set rx360_off, 0
-    lt $I10, 2, rx360_start
-    sub rx360_off, $I10, 1
+    lt rx360_pos, 2, rx360_start
+    sub rx360_off, rx360_pos, 1
     substr rx360_tgt, rx360_tgt, rx360_off
   rx360_start:
-    ge rx360_pos, 0, rxscan363_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan363_done
+    goto rxscan363_scan
   rxscan363_loop:
     ($P10) = rx360_cur."from"()
     inc $P10
     set rx360_pos, $P10
     ge rx360_pos, rx360_eos, rxscan363_done
+  rxscan363_scan:
     set_addr $I10, rxscan363_loop
     rx360_cur."!mark_push"(0, rx360_pos, $I10)
   rxscan363_done:
@@ -4232,7 +4364,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<h>"  :subid("102_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<h>"  :subid("102_1258923244.0326") :method
 .annotate "line", 3
     new $P362, "ResizablePMCArray"
     push $P362, "H"
@@ -4242,7 +4374,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<r>"  :subid("103_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<r>"  :subid("103_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx366_tgt
     .local int rx366_pos
@@ -4250,23 +4382,26 @@
     .local int rx366_eos
     .local int rx366_rep
     .local pmc rx366_cur
-    (rx366_cur, rx366_pos, rx366_tgt, $I10) = self."!cursor_start"()
+    (rx366_cur, rx366_pos, rx366_tgt) = self."!cursor_start"()
     rx366_cur."!cursor_debug"("START ", "backslash:sym<r>")
     .lex unicode:"$\x{a2}", rx366_cur
     .local pmc match
     .lex "$/", match
     length rx366_eos, rx366_tgt
     set rx366_off, 0
-    lt $I10, 2, rx366_start
-    sub rx366_off, $I10, 1
+    lt rx366_pos, 2, rx366_start
+    sub rx366_off, rx366_pos, 1
     substr rx366_tgt, rx366_tgt, rx366_off
   rx366_start:
-    ge rx366_pos, 0, rxscan369_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan369_done
+    goto rxscan369_scan
   rxscan369_loop:
     ($P10) = rx366_cur."from"()
     inc $P10
     set rx366_pos, $P10
     ge rx366_pos, rx366_eos, rxscan369_done
+  rxscan369_scan:
     set_addr $I10, rxscan369_loop
     rx366_cur."!mark_push"(0, rx366_pos, $I10)
   rxscan369_done:
@@ -4311,7 +4446,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<r>"  :subid("104_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<r>"  :subid("104_1258923244.0326") :method
 .annotate "line", 3
     new $P368, "ResizablePMCArray"
     push $P368, "R"
@@ -4321,7 +4456,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<t>"  :subid("105_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<t>"  :subid("105_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx372_tgt
     .local int rx372_pos
@@ -4329,23 +4464,26 @@
     .local int rx372_eos
     .local int rx372_rep
     .local pmc rx372_cur
-    (rx372_cur, rx372_pos, rx372_tgt, $I10) = self."!cursor_start"()
+    (rx372_cur, rx372_pos, rx372_tgt) = self."!cursor_start"()
     rx372_cur."!cursor_debug"("START ", "backslash:sym<t>")
     .lex unicode:"$\x{a2}", rx372_cur
     .local pmc match
     .lex "$/", match
     length rx372_eos, rx372_tgt
     set rx372_off, 0
-    lt $I10, 2, rx372_start
-    sub rx372_off, $I10, 1
+    lt rx372_pos, 2, rx372_start
+    sub rx372_off, rx372_pos, 1
     substr rx372_tgt, rx372_tgt, rx372_off
   rx372_start:
-    ge rx372_pos, 0, rxscan375_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan375_done
+    goto rxscan375_scan
   rxscan375_loop:
     ($P10) = rx372_cur."from"()
     inc $P10
     set rx372_pos, $P10
     ge rx372_pos, rx372_eos, rxscan375_done
+  rxscan375_scan:
     set_addr $I10, rxscan375_loop
     rx372_cur."!mark_push"(0, rx372_pos, $I10)
   rxscan375_done:
@@ -4390,7 +4528,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<t>"  :subid("106_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<t>"  :subid("106_1258923244.0326") :method
 .annotate "line", 3
     new $P374, "ResizablePMCArray"
     push $P374, "T"
@@ -4400,7 +4538,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<v>"  :subid("107_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<v>"  :subid("107_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx378_tgt
     .local int rx378_pos
@@ -4408,23 +4546,26 @@
     .local int rx378_eos
     .local int rx378_rep
     .local pmc rx378_cur
-    (rx378_cur, rx378_pos, rx378_tgt, $I10) = self."!cursor_start"()
+    (rx378_cur, rx378_pos, rx378_tgt) = self."!cursor_start"()
     rx378_cur."!cursor_debug"("START ", "backslash:sym<v>")
     .lex unicode:"$\x{a2}", rx378_cur
     .local pmc match
     .lex "$/", match
     length rx378_eos, rx378_tgt
     set rx378_off, 0
-    lt $I10, 2, rx378_start
-    sub rx378_off, $I10, 1
+    lt rx378_pos, 2, rx378_start
+    sub rx378_off, rx378_pos, 1
     substr rx378_tgt, rx378_tgt, rx378_off
   rx378_start:
-    ge rx378_pos, 0, rxscan381_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan381_done
+    goto rxscan381_scan
   rxscan381_loop:
     ($P10) = rx378_cur."from"()
     inc $P10
     set rx378_pos, $P10
     ge rx378_pos, rx378_eos, rxscan381_done
+  rxscan381_scan:
     set_addr $I10, rxscan381_loop
     rx378_cur."!mark_push"(0, rx378_pos, $I10)
   rxscan381_done:
@@ -4469,7 +4610,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<v>"  :subid("108_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<v>"  :subid("108_1258923244.0326") :method
 .annotate "line", 3
     new $P380, "ResizablePMCArray"
     push $P380, "V"
@@ -4479,7 +4620,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<c>"  :subid("109_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<c>"  :subid("109_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx384_tgt
     .local int rx384_pos
@@ -4487,23 +4628,26 @@
     .local int rx384_eos
     .local int rx384_rep
     .local pmc rx384_cur
-    (rx384_cur, rx384_pos, rx384_tgt, $I10) = self."!cursor_start"()
+    (rx384_cur, rx384_pos, rx384_tgt) = self."!cursor_start"()
     rx384_cur."!cursor_debug"("START ", "backslash:sym<c>")
     .lex unicode:"$\x{a2}", rx384_cur
     .local pmc match
     .lex "$/", match
     length rx384_eos, rx384_tgt
     set rx384_off, 0
-    lt $I10, 2, rx384_start
-    sub rx384_off, $I10, 1
+    lt rx384_pos, 2, rx384_start
+    sub rx384_off, rx384_pos, 1
     substr rx384_tgt, rx384_tgt, rx384_off
   rx384_start:
-    ge rx384_pos, 0, rxscan389_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan389_done
+    goto rxscan389_scan
   rxscan389_loop:
     ($P10) = rx384_cur."from"()
     inc $P10
     set rx384_pos, $P10
     ge rx384_pos, rx384_eos, rxscan389_done
+  rxscan389_scan:
     set_addr $I10, rxscan389_loop
     rx384_cur."!mark_push"(0, rx384_pos, $I10)
   rxscan389_done:
@@ -4555,7 +4699,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<c>"  :subid("110_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<c>"  :subid("110_1258923244.0326") :method
 .annotate "line", 3
     $P386 = self."!PREFIX__!subrule"("charspec", "C")
     $P387 = self."!PREFIX__!subrule"("charspec", "c")
@@ -4567,7 +4711,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<o>"  :subid("111_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<o>"  :subid("111_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx392_tgt
     .local int rx392_pos
@@ -4575,23 +4719,26 @@
     .local int rx392_eos
     .local int rx392_rep
     .local pmc rx392_cur
-    (rx392_cur, rx392_pos, rx392_tgt, $I10) = self."!cursor_start"()
+    (rx392_cur, rx392_pos, rx392_tgt) = self."!cursor_start"()
     rx392_cur."!cursor_debug"("START ", "backslash:sym<o>")
     .lex unicode:"$\x{a2}", rx392_cur
     .local pmc match
     .lex "$/", match
     length rx392_eos, rx392_tgt
     set rx392_off, 0
-    lt $I10, 2, rx392_start
-    sub rx392_off, $I10, 1
+    lt rx392_pos, 2, rx392_start
+    sub rx392_off, rx392_pos, 1
     substr rx392_tgt, rx392_tgt, rx392_off
   rx392_start:
-    ge rx392_pos, 0, rxscan399_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan399_done
+    goto rxscan399_scan
   rxscan399_loop:
     ($P10) = rx392_cur."from"()
     inc $P10
     set rx392_pos, $P10
     ge rx392_pos, rx392_eos, rxscan399_done
+  rxscan399_scan:
     set_addr $I10, rxscan399_loop
     rx392_cur."!mark_push"(0, rx392_pos, $I10)
   rxscan399_done:
@@ -4670,7 +4817,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<o>"  :subid("112_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<o>"  :subid("112_1258923244.0326") :method
 .annotate "line", 3
     $P394 = self."!PREFIX__!subrule"("octints", "O[")
     $P395 = self."!PREFIX__!subrule"("octint", "O")
@@ -4686,7 +4833,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<x>"  :subid("113_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<x>"  :subid("113_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx403_tgt
     .local int rx403_pos
@@ -4694,23 +4841,26 @@
     .local int rx403_eos
     .local int rx403_rep
     .local pmc rx403_cur
-    (rx403_cur, rx403_pos, rx403_tgt, $I10) = self."!cursor_start"()
+    (rx403_cur, rx403_pos, rx403_tgt) = self."!cursor_start"()
     rx403_cur."!cursor_debug"("START ", "backslash:sym<x>")
     .lex unicode:"$\x{a2}", rx403_cur
     .local pmc match
     .lex "$/", match
     length rx403_eos, rx403_tgt
     set rx403_off, 0
-    lt $I10, 2, rx403_start
-    sub rx403_off, $I10, 1
+    lt rx403_pos, 2, rx403_start
+    sub rx403_off, rx403_pos, 1
     substr rx403_tgt, rx403_tgt, rx403_off
   rx403_start:
-    ge rx403_pos, 0, rxscan410_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan410_done
+    goto rxscan410_scan
   rxscan410_loop:
     ($P10) = rx403_cur."from"()
     inc $P10
     set rx403_pos, $P10
     ge rx403_pos, rx403_eos, rxscan410_done
+  rxscan410_scan:
     set_addr $I10, rxscan410_loop
     rx403_cur."!mark_push"(0, rx403_pos, $I10)
   rxscan410_done:
@@ -4789,7 +4939,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<x>"  :subid("114_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<x>"  :subid("114_1258923244.0326") :method
 .annotate "line", 3
     $P405 = self."!PREFIX__!subrule"("hexints", "X[")
     $P406 = self."!PREFIX__!subrule"("hexint", "X")
@@ -4805,7 +4955,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<A>"  :subid("115_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<A>"  :subid("115_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx414_tgt
     .local int rx414_pos
@@ -4813,23 +4963,26 @@
     .local int rx414_eos
     .local int rx414_rep
     .local pmc rx414_cur
-    (rx414_cur, rx414_pos, rx414_tgt, $I10) = self."!cursor_start"()
+    (rx414_cur, rx414_pos, rx414_tgt) = self."!cursor_start"()
     rx414_cur."!cursor_debug"("START ", "backslash:sym<A>")
     .lex unicode:"$\x{a2}", rx414_cur
     .local pmc match
     .lex "$/", match
     length rx414_eos, rx414_tgt
     set rx414_off, 0
-    lt $I10, 2, rx414_start
-    sub rx414_off, $I10, 1
+    lt rx414_pos, 2, rx414_start
+    sub rx414_off, rx414_pos, 1
     substr rx414_tgt, rx414_tgt, rx414_off
   rx414_start:
-    ge rx414_pos, 0, rxscan418_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan418_done
+    goto rxscan418_scan
   rxscan418_loop:
     ($P10) = rx414_cur."from"()
     inc $P10
     set rx414_pos, $P10
     ge rx414_pos, rx414_eos, rxscan418_done
+  rxscan418_scan:
     set_addr $I10, rxscan418_loop
     rx414_cur."!mark_push"(0, rx414_pos, $I10)
   rxscan418_done:
@@ -4865,7 +5018,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<A>"  :subid("116_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<A>"  :subid("116_1258923244.0326") :method
 .annotate "line", 3
     $P416 = self."!PREFIX__!subrule"("", "A")
     new $P417, "ResizablePMCArray"
@@ -4875,7 +5028,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<z>"  :subid("117_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<z>"  :subid("117_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx420_tgt
     .local int rx420_pos
@@ -4883,23 +5036,26 @@
     .local int rx420_eos
     .local int rx420_rep
     .local pmc rx420_cur
-    (rx420_cur, rx420_pos, rx420_tgt, $I10) = self."!cursor_start"()
+    (rx420_cur, rx420_pos, rx420_tgt) = self."!cursor_start"()
     rx420_cur."!cursor_debug"("START ", "backslash:sym<z>")
     .lex unicode:"$\x{a2}", rx420_cur
     .local pmc match
     .lex "$/", match
     length rx420_eos, rx420_tgt
     set rx420_off, 0
-    lt $I10, 2, rx420_start
-    sub rx420_off, $I10, 1
+    lt rx420_pos, 2, rx420_start
+    sub rx420_off, rx420_pos, 1
     substr rx420_tgt, rx420_tgt, rx420_off
   rx420_start:
-    ge rx420_pos, 0, rxscan424_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan424_done
+    goto rxscan424_scan
   rxscan424_loop:
     ($P10) = rx420_cur."from"()
     inc $P10
     set rx420_pos, $P10
     ge rx420_pos, rx420_eos, rxscan424_done
+  rxscan424_scan:
     set_addr $I10, rxscan424_loop
     rx420_cur."!mark_push"(0, rx420_pos, $I10)
   rxscan424_done:
@@ -4935,7 +5091,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<z>"  :subid("118_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<z>"  :subid("118_1258923244.0326") :method
 .annotate "line", 3
     $P422 = self."!PREFIX__!subrule"("", "z")
     new $P423, "ResizablePMCArray"
@@ -4945,7 +5101,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Z>"  :subid("119_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<Z>"  :subid("119_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx426_tgt
     .local int rx426_pos
@@ -4953,23 +5109,26 @@
     .local int rx426_eos
     .local int rx426_rep
     .local pmc rx426_cur
-    (rx426_cur, rx426_pos, rx426_tgt, $I10) = self."!cursor_start"()
+    (rx426_cur, rx426_pos, rx426_tgt) = self."!cursor_start"()
     rx426_cur."!cursor_debug"("START ", "backslash:sym<Z>")
     .lex unicode:"$\x{a2}", rx426_cur
     .local pmc match
     .lex "$/", match
     length rx426_eos, rx426_tgt
     set rx426_off, 0
-    lt $I10, 2, rx426_start
-    sub rx426_off, $I10, 1
+    lt rx426_pos, 2, rx426_start
+    sub rx426_off, rx426_pos, 1
     substr rx426_tgt, rx426_tgt, rx426_off
   rx426_start:
-    ge rx426_pos, 0, rxscan430_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan430_done
+    goto rxscan430_scan
   rxscan430_loop:
     ($P10) = rx426_cur."from"()
     inc $P10
     set rx426_pos, $P10
     ge rx426_pos, rx426_eos, rxscan430_done
+  rxscan430_scan:
     set_addr $I10, rxscan430_loop
     rx426_cur."!mark_push"(0, rx426_pos, $I10)
   rxscan430_done:
@@ -5005,7 +5164,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Z>"  :subid("120_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<Z>"  :subid("120_1258923244.0326") :method
 .annotate "line", 3
     $P428 = self."!PREFIX__!subrule"("", "Z")
     new $P429, "ResizablePMCArray"
@@ -5015,7 +5174,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Q>"  :subid("121_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<Q>"  :subid("121_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx432_tgt
     .local int rx432_pos
@@ -5023,23 +5182,26 @@
     .local int rx432_eos
     .local int rx432_rep
     .local pmc rx432_cur
-    (rx432_cur, rx432_pos, rx432_tgt, $I10) = self."!cursor_start"()
+    (rx432_cur, rx432_pos, rx432_tgt) = self."!cursor_start"()
     rx432_cur."!cursor_debug"("START ", "backslash:sym<Q>")
     .lex unicode:"$\x{a2}", rx432_cur
     .local pmc match
     .lex "$/", match
     length rx432_eos, rx432_tgt
     set rx432_off, 0
-    lt $I10, 2, rx432_start
-    sub rx432_off, $I10, 1
+    lt rx432_pos, 2, rx432_start
+    sub rx432_off, rx432_pos, 1
     substr rx432_tgt, rx432_tgt, rx432_off
   rx432_start:
-    ge rx432_pos, 0, rxscan436_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan436_done
+    goto rxscan436_scan
   rxscan436_loop:
     ($P10) = rx432_cur."from"()
     inc $P10
     set rx432_pos, $P10
     ge rx432_pos, rx432_eos, rxscan436_done
+  rxscan436_scan:
     set_addr $I10, rxscan436_loop
     rx432_cur."!mark_push"(0, rx432_pos, $I10)
   rxscan436_done:
@@ -5075,7 +5237,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Q>"  :subid("122_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<Q>"  :subid("122_1258923244.0326") :method
 .annotate "line", 3
     $P434 = self."!PREFIX__!subrule"("", "Q")
     new $P435, "ResizablePMCArray"
@@ -5085,7 +5247,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<misc>"  :subid("123_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "backslash:sym<misc>"  :subid("123_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx438_tgt
     .local int rx438_pos
@@ -5093,23 +5255,26 @@
     .local int rx438_eos
     .local int rx438_rep
     .local pmc rx438_cur
-    (rx438_cur, rx438_pos, rx438_tgt, $I10) = self."!cursor_start"()
+    (rx438_cur, rx438_pos, rx438_tgt) = self."!cursor_start"()
     rx438_cur."!cursor_debug"("START ", "backslash:sym<misc>")
     .lex unicode:"$\x{a2}", rx438_cur
     .local pmc match
     .lex "$/", match
     length rx438_eos, rx438_tgt
     set rx438_off, 0
-    lt $I10, 2, rx438_start
-    sub rx438_off, $I10, 1
+    lt rx438_pos, 2, rx438_start
+    sub rx438_off, rx438_pos, 1
     substr rx438_tgt, rx438_tgt, rx438_off
   rx438_start:
-    ge rx438_pos, 0, rxscan441_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan441_done
+    goto rxscan441_scan
   rxscan441_loop:
     ($P10) = rx438_cur."from"()
     inc $P10
     set rx438_pos, $P10
     ge rx438_pos, rx438_eos, rxscan441_done
+  rxscan441_scan:
     set_addr $I10, rxscan441_loop
     rx438_cur."!mark_push"(0, rx438_pos, $I10)
   rxscan441_done:
@@ -5139,7 +5304,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<misc>"  :subid("124_1258904200.37175") :method
+.sub "!PREFIX__backslash:sym<misc>"  :subid("124_1258923244.0326") :method
 .annotate "line", 3
     new $P440, "ResizablePMCArray"
     push $P440, ""
@@ -5148,7 +5313,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion"  :subid("125_1258904200.37175") :method
+.sub "assertion"  :subid("125_1258923244.0326") :method
 .annotate "line", 131
     $P443 = self."!protoregex"("assertion")
     .return ($P443)
@@ -5156,7 +5321,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion"  :subid("126_1258904200.37175") :method
+.sub "!PREFIX__assertion"  :subid("126_1258923244.0326") :method
 .annotate "line", 131
     $P445 = self."!PREFIX__!protoregex"("assertion")
     .return ($P445)
@@ -5164,9 +5329,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<?>"  :subid("127_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "assertion:sym<?>"  :subid("127_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
-    .const 'Sub' $P454 = "129_1258904200.37175" 
+    .const 'Sub' $P454 = "129_1258923244.0326" 
     capture_lex $P454
     .local string rx447_tgt
     .local int rx447_pos
@@ -5174,23 +5339,26 @@
     .local int rx447_eos
     .local int rx447_rep
     .local pmc rx447_cur
-    (rx447_cur, rx447_pos, rx447_tgt, $I10) = self."!cursor_start"()
+    (rx447_cur, rx447_pos, rx447_tgt) = self."!cursor_start"()
     rx447_cur."!cursor_debug"("START ", "assertion:sym<?>")
     .lex unicode:"$\x{a2}", rx447_cur
     .local pmc match
     .lex "$/", match
     length rx447_eos, rx447_tgt
     set rx447_off, 0
-    lt $I10, 2, rx447_start
-    sub rx447_off, $I10, 1
+    lt rx447_pos, 2, rx447_start
+    sub rx447_off, rx447_pos, 1
     substr rx447_tgt, rx447_tgt, rx447_off
   rx447_start:
-    ge rx447_pos, 0, rxscan451_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan451_done
+    goto rxscan451_scan
   rxscan451_loop:
     ($P10) = rx447_cur."from"()
     inc $P10
     set rx447_pos, $P10
     ge rx447_pos, rx447_eos, rxscan451_done
+  rxscan451_scan:
     set_addr $I10, rxscan451_loop
     rx447_cur."!mark_push"(0, rx447_pos, $I10)
   rxscan451_done:
@@ -5207,7 +5375,7 @@
     rx447_cur."!mark_push"(0, rx447_pos, $I10)
   # rx subrule "before" subtype=zerowidth negate=
     rx447_cur."!cursor_pos"(rx447_pos)
-    .const 'Sub' $P454 = "129_1258904200.37175" 
+    .const 'Sub' $P454 = "129_1258923244.0326" 
     capture_lex $P454
     $P10 = rx447_cur."before"($P454)
     unless $P10, rx447_fail
@@ -5240,7 +5408,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<?>"  :subid("128_1258904200.37175") :method
+.sub "!PREFIX__assertion:sym<?>"  :subid("128_1258923244.0326") :method
 .annotate "line", 3
     $P449 = self."!PREFIX__!subrule"("assertion", "?")
     new $P450, "ResizablePMCArray"
@@ -5251,7 +5419,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block453"  :anon :subid("129_1258904200.37175") :method :outer("127_1258904200.37175")
+.sub "_block453"  :anon :subid("129_1258923244.0326") :method :outer("127_1258923244.0326")
 .annotate "line", 133
     .local string rx455_tgt
     .local int rx455_pos
@@ -5259,23 +5427,26 @@
     .local int rx455_eos
     .local int rx455_rep
     .local pmc rx455_cur
-    (rx455_cur, rx455_pos, rx455_tgt, $I10) = self."!cursor_start"()
+    (rx455_cur, rx455_pos, rx455_tgt) = self."!cursor_start"()
     rx455_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx455_cur
     .local pmc match
     .lex "$/", match
     length rx455_eos, rx455_tgt
     set rx455_off, 0
-    lt $I10, 2, rx455_start
-    sub rx455_off, $I10, 1
+    lt rx455_pos, 2, rx455_start
+    sub rx455_off, rx455_pos, 1
     substr rx455_tgt, rx455_tgt, rx455_off
   rx455_start:
-    ge rx455_pos, 0, rxscan456_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan456_done
+    goto rxscan456_scan
   rxscan456_loop:
     ($P10) = rx455_cur."from"()
     inc $P10
     set rx455_pos, $P10
     ge rx455_pos, rx455_eos, rxscan456_done
+  rxscan456_scan:
     set_addr $I10, rxscan456_loop
     rx455_cur."!mark_push"(0, rx455_pos, $I10)
   rxscan456_done:
@@ -5304,9 +5475,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<!>"  :subid("130_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "assertion:sym<!>"  :subid("130_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
-    .const 'Sub' $P465 = "132_1258904200.37175" 
+    .const 'Sub' $P465 = "132_1258923244.0326" 
     capture_lex $P465
     .local string rx458_tgt
     .local int rx458_pos
@@ -5314,23 +5485,26 @@
     .local int rx458_eos
     .local int rx458_rep
     .local pmc rx458_cur
-    (rx458_cur, rx458_pos, rx458_tgt, $I10) = self."!cursor_start"()
+    (rx458_cur, rx458_pos, rx458_tgt) = self."!cursor_start"()
     rx458_cur."!cursor_debug"("START ", "assertion:sym<!>")
     .lex unicode:"$\x{a2}", rx458_cur
     .local pmc match
     .lex "$/", match
     length rx458_eos, rx458_tgt
     set rx458_off, 0
-    lt $I10, 2, rx458_start
-    sub rx458_off, $I10, 1
+    lt rx458_pos, 2, rx458_start
+    sub rx458_off, rx458_pos, 1
     substr rx458_tgt, rx458_tgt, rx458_off
   rx458_start:
-    ge rx458_pos, 0, rxscan462_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan462_done
+    goto rxscan462_scan
   rxscan462_loop:
     ($P10) = rx458_cur."from"()
     inc $P10
     set rx458_pos, $P10
     ge rx458_pos, rx458_eos, rxscan462_done
+  rxscan462_scan:
     set_addr $I10, rxscan462_loop
     rx458_cur."!mark_push"(0, rx458_pos, $I10)
   rxscan462_done:
@@ -5347,7 +5521,7 @@
     rx458_cur."!mark_push"(0, rx458_pos, $I10)
   # rx subrule "before" subtype=zerowidth negate=
     rx458_cur."!cursor_pos"(rx458_pos)
-    .const 'Sub' $P465 = "132_1258904200.37175" 
+    .const 'Sub' $P465 = "132_1258923244.0326" 
     capture_lex $P465
     $P10 = rx458_cur."before"($P465)
     unless $P10, rx458_fail
@@ -5380,7 +5554,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<!>"  :subid("131_1258904200.37175") :method
+.sub "!PREFIX__assertion:sym<!>"  :subid("131_1258923244.0326") :method
 .annotate "line", 3
     $P460 = self."!PREFIX__!subrule"("assertion", "!")
     new $P461, "ResizablePMCArray"
@@ -5391,7 +5565,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block464"  :anon :subid("132_1258904200.37175") :method :outer("130_1258904200.37175")
+.sub "_block464"  :anon :subid("132_1258923244.0326") :method :outer("130_1258923244.0326")
 .annotate "line", 134
     .local string rx466_tgt
     .local int rx466_pos
@@ -5399,23 +5573,26 @@
     .local int rx466_eos
     .local int rx466_rep
     .local pmc rx466_cur
-    (rx466_cur, rx466_pos, rx466_tgt, $I10) = self."!cursor_start"()
+    (rx466_cur, rx466_pos, rx466_tgt) = self."!cursor_start"()
     rx466_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx466_cur
     .local pmc match
     .lex "$/", match
     length rx466_eos, rx466_tgt
     set rx466_off, 0
-    lt $I10, 2, rx466_start
-    sub rx466_off, $I10, 1
+    lt rx466_pos, 2, rx466_start
+    sub rx466_off, rx466_pos, 1
     substr rx466_tgt, rx466_tgt, rx466_off
   rx466_start:
-    ge rx466_pos, 0, rxscan467_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan467_done
+    goto rxscan467_scan
   rxscan467_loop:
     ($P10) = rx466_cur."from"()
     inc $P10
     set rx466_pos, $P10
     ge rx466_pos, rx466_eos, rxscan467_done
+  rxscan467_scan:
     set_addr $I10, rxscan467_loop
     rx466_cur."!mark_push"(0, rx466_pos, $I10)
   rxscan467_done:
@@ -5444,7 +5621,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<method>"  :subid("133_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "assertion:sym<method>"  :subid("133_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx469_tgt
     .local int rx469_pos
@@ -5452,23 +5629,26 @@
     .local int rx469_eos
     .local int rx469_rep
     .local pmc rx469_cur
-    (rx469_cur, rx469_pos, rx469_tgt, $I10) = self."!cursor_start"()
+    (rx469_cur, rx469_pos, rx469_tgt) = self."!cursor_start"()
     rx469_cur."!cursor_debug"("START ", "assertion:sym<method>")
     .lex unicode:"$\x{a2}", rx469_cur
     .local pmc match
     .lex "$/", match
     length rx469_eos, rx469_tgt
     set rx469_off, 0
-    lt $I10, 2, rx469_start
-    sub rx469_off, $I10, 1
+    lt rx469_pos, 2, rx469_start
+    sub rx469_off, rx469_pos, 1
     substr rx469_tgt, rx469_tgt, rx469_off
   rx469_start:
-    ge rx469_pos, 0, rxscan473_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan473_done
+    goto rxscan473_scan
   rxscan473_loop:
     ($P10) = rx469_cur."from"()
     inc $P10
     set rx469_pos, $P10
     ge rx469_pos, rx469_eos, rxscan473_done
+  rxscan473_scan:
     set_addr $I10, rxscan473_loop
     rx469_cur."!mark_push"(0, rx469_pos, $I10)
   rxscan473_done:
@@ -5507,7 +5687,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<method>"  :subid("134_1258904200.37175") :method
+.sub "!PREFIX__assertion:sym<method>"  :subid("134_1258923244.0326") :method
 .annotate "line", 3
     $P471 = self."!PREFIX__!subrule"("assertion", ".")
     new $P472, "ResizablePMCArray"
@@ -5517,9 +5697,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<name>"  :subid("135_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "assertion:sym<name>"  :subid("135_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
-    .const 'Sub' $P483 = "137_1258904200.37175" 
+    .const 'Sub' $P483 = "137_1258923244.0326" 
     capture_lex $P483
     .local string rx475_tgt
     .local int rx475_pos
@@ -5527,24 +5707,27 @@
     .local int rx475_eos
     .local int rx475_rep
     .local pmc rx475_cur
-    (rx475_cur, rx475_pos, rx475_tgt, $I10) = self."!cursor_start"()
+    (rx475_cur, rx475_pos, rx475_tgt) = self."!cursor_start"()
     rx475_cur."!cursor_debug"("START ", "assertion:sym<name>")
-    rx475_cur."!cursor_caparray"("nibbler", "arglist", "assertion")
+    rx475_cur."!cursor_caparray"("assertion", "nibbler", "arglist")
     .lex unicode:"$\x{a2}", rx475_cur
     .local pmc match
     .lex "$/", match
     length rx475_eos, rx475_tgt
     set rx475_off, 0
-    lt $I10, 2, rx475_start
-    sub rx475_off, $I10, 1
+    lt rx475_pos, 2, rx475_start
+    sub rx475_off, rx475_pos, 1
     substr rx475_tgt, rx475_tgt, rx475_off
   rx475_start:
-    ge rx475_pos, 0, rxscan478_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan478_done
+    goto rxscan478_scan
   rxscan478_loop:
     ($P10) = rx475_cur."from"()
     inc $P10
     set rx475_pos, $P10
     ge rx475_pos, rx475_eos, rxscan478_done
+  rxscan478_scan:
     set_addr $I10, rxscan478_loop
     rx475_cur."!mark_push"(0, rx475_pos, $I10)
   rxscan478_done:
@@ -5581,7 +5764,7 @@
 .annotate "line", 143
   # rx subrule "before" subtype=zerowidth negate=
     rx475_cur."!cursor_pos"(rx475_pos)
-    .const 'Sub' $P483 = "137_1258904200.37175" 
+    .const 'Sub' $P483 = "137_1258923244.0326" 
     capture_lex $P483
     $P10 = rx475_cur."before"($P483)
     unless $P10, rx475_fail
@@ -5688,7 +5871,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<name>"  :subid("136_1258904200.37175") :method
+.sub "!PREFIX__assertion:sym<name>"  :subid("136_1258923244.0326") :method
 .annotate "line", 3
     new $P477, "ResizablePMCArray"
     push $P477, ""
@@ -5697,7 +5880,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block482"  :anon :subid("137_1258904200.37175") :method :outer("135_1258904200.37175")
+.sub "_block482"  :anon :subid("137_1258923244.0326") :method :outer("135_1258923244.0326")
 .annotate "line", 143
     .local string rx484_tgt
     .local int rx484_pos
@@ -5705,23 +5888,26 @@
     .local int rx484_eos
     .local int rx484_rep
     .local pmc rx484_cur
-    (rx484_cur, rx484_pos, rx484_tgt, $I10) = self."!cursor_start"()
+    (rx484_cur, rx484_pos, rx484_tgt) = self."!cursor_start"()
     rx484_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx484_cur
     .local pmc match
     .lex "$/", match
     length rx484_eos, rx484_tgt
     set rx484_off, 0
-    lt $I10, 2, rx484_start
-    sub rx484_off, $I10, 1
+    lt rx484_pos, 2, rx484_start
+    sub rx484_off, rx484_pos, 1
     substr rx484_tgt, rx484_tgt, rx484_off
   rx484_start:
-    ge rx484_pos, 0, rxscan485_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan485_done
+    goto rxscan485_scan
   rxscan485_loop:
     ($P10) = rx484_cur."from"()
     inc $P10
     set rx484_pos, $P10
     ge rx484_pos, rx484_eos, rxscan485_done
+  rxscan485_scan:
     set_addr $I10, rxscan485_loop
     rx484_cur."!mark_push"(0, rx484_pos, $I10)
   rxscan485_done:
@@ -5750,9 +5936,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<[>"  :subid("138_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "assertion:sym<[>"  :subid("138_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
-    .const 'Sub' $P493 = "140_1258904200.37175" 
+    .const 'Sub' $P493 = "140_1258923244.0326" 
     capture_lex $P493
     .local string rx488_tgt
     .local int rx488_pos
@@ -5760,7 +5946,7 @@
     .local int rx488_eos
     .local int rx488_rep
     .local pmc rx488_cur
-    (rx488_cur, rx488_pos, rx488_tgt, $I10) = self."!cursor_start"()
+    (rx488_cur, rx488_pos, rx488_tgt) = self."!cursor_start"()
     rx488_cur."!cursor_debug"("START ", "assertion:sym<[>")
     rx488_cur."!cursor_caparray"("cclass_elem")
     .lex unicode:"$\x{a2}", rx488_cur
@@ -5768,23 +5954,26 @@
     .lex "$/", match
     length rx488_eos, rx488_tgt
     set rx488_off, 0
-    lt $I10, 2, rx488_start
-    sub rx488_off, $I10, 1
+    lt rx488_pos, 2, rx488_start
+    sub rx488_off, rx488_pos, 1
     substr rx488_tgt, rx488_tgt, rx488_off
   rx488_start:
-    ge rx488_pos, 0, rxscan491_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan491_done
+    goto rxscan491_scan
   rxscan491_loop:
     ($P10) = rx488_cur."from"()
     inc $P10
     set rx488_pos, $P10
     ge rx488_pos, rx488_eos, rxscan491_done
+  rxscan491_scan:
     set_addr $I10, rxscan491_loop
     rx488_cur."!mark_push"(0, rx488_pos, $I10)
   rxscan491_done:
 .annotate "line", 151
   # rx subrule "before" subtype=zerowidth negate=
     rx488_cur."!cursor_pos"(rx488_pos)
-    .const 'Sub' $P493 = "140_1258904200.37175" 
+    .const 'Sub' $P493 = "140_1258923244.0326" 
     capture_lex $P493
     $P10 = rx488_cur."before"($P493)
     unless $P10, rx488_fail
@@ -5822,7 +6011,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<[>"  :subid("139_1258904200.37175") :method
+.sub "!PREFIX__assertion:sym<[>"  :subid("139_1258923244.0326") :method
 .annotate "line", 3
     new $P490, "ResizablePMCArray"
     push $P490, ""
@@ -5831,7 +6020,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block492"  :anon :subid("140_1258904200.37175") :method :outer("138_1258904200.37175")
+.sub "_block492"  :anon :subid("140_1258923244.0326") :method :outer("138_1258923244.0326")
 .annotate "line", 151
     .local string rx494_tgt
     .local int rx494_pos
@@ -5839,23 +6028,26 @@
     .local int rx494_eos
     .local int rx494_rep
     .local pmc rx494_cur
-    (rx494_cur, rx494_pos, rx494_tgt, $I10) = self."!cursor_start"()
+    (rx494_cur, rx494_pos, rx494_tgt) = self."!cursor_start"()
     rx494_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx494_cur
     .local pmc match
     .lex "$/", match
     length rx494_eos, rx494_tgt
     set rx494_off, 0
-    lt $I10, 2, rx494_start
-    sub rx494_off, $I10, 1
+    lt rx494_pos, 2, rx494_start
+    sub rx494_off, rx494_pos, 1
     substr rx494_tgt, rx494_tgt, rx494_off
   rx494_start:
-    ge rx494_pos, 0, rxscan495_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan495_done
+    goto rxscan495_scan
   rxscan495_loop:
     ($P10) = rx494_cur."from"()
     inc $P10
     set rx494_pos, $P10
     ge rx494_pos, rx494_eos, rxscan495_done
+  rxscan495_scan:
     set_addr $I10, rxscan495_loop
     rx494_cur."!mark_push"(0, rx494_pos, $I10)
   rxscan495_done:
@@ -5908,9 +6100,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "cclass_elem"  :subid("141_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "cclass_elem"  :subid("141_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
-    .const 'Sub' $P511 = "143_1258904200.37175" 
+    .const 'Sub' $P511 = "143_1258923244.0326" 
     capture_lex $P511
     .local string rx500_tgt
     .local int rx500_pos
@@ -5918,7 +6110,7 @@
     .local int rx500_eos
     .local int rx500_rep
     .local pmc rx500_cur
-    (rx500_cur, rx500_pos, rx500_tgt, $I10) = self."!cursor_start"()
+    (rx500_cur, rx500_pos, rx500_tgt) = self."!cursor_start"()
     rx500_cur."!cursor_debug"("START ", "cclass_elem")
     rx500_cur."!cursor_caparray"("charspec")
     .lex unicode:"$\x{a2}", rx500_cur
@@ -5926,16 +6118,19 @@
     .lex "$/", match
     length rx500_eos, rx500_tgt
     set rx500_off, 0
-    lt $I10, 2, rx500_start
-    sub rx500_off, $I10, 1
+    lt rx500_pos, 2, rx500_start
+    sub rx500_off, rx500_pos, 1
     substr rx500_tgt, rx500_tgt, rx500_off
   rx500_start:
-    ge rx500_pos, 0, rxscan503_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan503_done
+    goto rxscan503_scan
   rxscan503_loop:
     ($P10) = rx500_cur."from"()
     inc $P10
     set rx500_pos, $P10
     ge rx500_pos, rx500_eos, rxscan503_done
+  rxscan503_scan:
     set_addr $I10, rxscan503_loop
     rx500_cur."!mark_push"(0, rx500_pos, $I10)
   rxscan503_done:
@@ -6010,7 +6205,7 @@
 .annotate "line", 157
   # rx subrule $P511 subtype=capture negate=
     rx500_cur."!cursor_pos"(rx500_pos)
-    .const 'Sub' $P511 = "143_1258904200.37175" 
+    .const 'Sub' $P511 = "143_1258923244.0326" 
     capture_lex $P511
     $P10 = rx500_cur.$P511()
     unless $P10, rx500_fail
@@ -6091,7 +6286,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__cclass_elem"  :subid("142_1258904200.37175") :method
+.sub "!PREFIX__cclass_elem"  :subid("142_1258923244.0326") :method
 .annotate "line", 3
     new $P502, "ResizablePMCArray"
     push $P502, ""
@@ -6102,13 +6297,13 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block510"  :anon :subid("143_1258904200.37175") :method :outer("141_1258904200.37175")
+.sub "_block510"  :anon :subid("143_1258923244.0326") :method :outer("141_1258923244.0326")
 .annotate "line", 157
-    .const 'Sub' $P526 = "146_1258904200.37175" 
+    .const 'Sub' $P526 = "146_1258923244.0326" 
     capture_lex $P526
-    .const 'Sub' $P521 = "145_1258904200.37175" 
+    .const 'Sub' $P521 = "145_1258923244.0326" 
     capture_lex $P521
-    .const 'Sub' $P517 = "144_1258904200.37175" 
+    .const 'Sub' $P517 = "144_1258923244.0326" 
     capture_lex $P517
     .local string rx512_tgt
     .local int rx512_pos
@@ -6116,7 +6311,7 @@
     .local int rx512_eos
     .local int rx512_rep
     .local pmc rx512_cur
-    (rx512_cur, rx512_pos, rx512_tgt, $I10) = self."!cursor_start"()
+    (rx512_cur, rx512_pos, rx512_tgt) = self."!cursor_start"()
     rx512_cur."!cursor_debug"("START ", "")
     rx512_cur."!cursor_caparray"("1")
     .lex unicode:"$\x{a2}", rx512_cur
@@ -6124,16 +6319,19 @@
     .lex "$/", match
     length rx512_eos, rx512_tgt
     set rx512_off, 0
-    lt $I10, 2, rx512_start
-    sub rx512_off, $I10, 1
+    lt rx512_pos, 2, rx512_start
+    sub rx512_off, rx512_pos, 1
     substr rx512_tgt, rx512_tgt, rx512_off
   rx512_start:
-    ge rx512_pos, 0, rxscan513_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan513_done
+    goto rxscan513_scan
   rxscan513_loop:
     ($P10) = rx512_cur."from"()
     inc $P10
     set rx512_pos, $P10
     ge rx512_pos, rx512_eos, rxscan513_done
+  rxscan513_scan:
     set_addr $I10, rxscan513_loop
     rx512_cur."!mark_push"(0, rx512_pos, $I10)
   rxscan513_done:
@@ -6176,7 +6374,7 @@
     add rx512_pos, 1
   # rx subrule $P517 subtype=capture negate=
     rx512_cur."!cursor_pos"(rx512_pos)
-    .const 'Sub' $P517 = "144_1258904200.37175" 
+    .const 'Sub' $P517 = "144_1258923244.0326" 
     capture_lex $P517
     $P10 = rx512_cur.$P517()
     unless $P10, rx512_fail
@@ -6187,7 +6385,7 @@
   alt515_1:
   # rx subrule $P521 subtype=capture negate=
     rx512_cur."!cursor_pos"(rx512_pos)
-    .const 'Sub' $P521 = "145_1258904200.37175" 
+    .const 'Sub' $P521 = "145_1258923244.0326" 
     capture_lex $P521
     $P10 = rx512_cur.$P521()
     unless $P10, rx512_fail
@@ -6216,7 +6414,7 @@
     add rx512_pos, rx512_off, $I11
   # rx subrule $P526 subtype=capture negate=
     rx512_cur."!cursor_pos"(rx512_pos)
-    .const 'Sub' $P526 = "146_1258904200.37175" 
+    .const 'Sub' $P526 = "146_1258923244.0326" 
     capture_lex $P526
     $P10 = rx512_cur.$P526()
     unless $P10, rx512_fail
@@ -6245,7 +6443,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block516"  :anon :subid("144_1258904200.37175") :method :outer("143_1258904200.37175")
+.sub "_block516"  :anon :subid("144_1258923244.0326") :method :outer("143_1258923244.0326")
 .annotate "line", 159
     .local string rx518_tgt
     .local int rx518_pos
@@ -6253,23 +6451,26 @@
     .local int rx518_eos
     .local int rx518_rep
     .local pmc rx518_cur
-    (rx518_cur, rx518_pos, rx518_tgt, $I10) = self."!cursor_start"()
+    (rx518_cur, rx518_pos, rx518_tgt) = self."!cursor_start"()
     rx518_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx518_cur
     .local pmc match
     .lex "$/", match
     length rx518_eos, rx518_tgt
     set rx518_off, 0
-    lt $I10, 2, rx518_start
-    sub rx518_off, $I10, 1
+    lt rx518_pos, 2, rx518_start
+    sub rx518_off, rx518_pos, 1
     substr rx518_tgt, rx518_tgt, rx518_off
   rx518_start:
-    ge rx518_pos, 0, rxscan519_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan519_done
+    goto rxscan519_scan
   rxscan519_loop:
     ($P10) = rx518_cur."from"()
     inc $P10
     set rx518_pos, $P10
     ge rx518_pos, rx518_eos, rxscan519_done
+  rxscan519_scan:
     set_addr $I10, rxscan519_loop
     rx518_cur."!mark_push"(0, rx518_pos, $I10)
   rxscan519_done:
@@ -6294,7 +6495,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block520"  :anon :subid("145_1258904200.37175") :method :outer("143_1258904200.37175")
+.sub "_block520"  :anon :subid("145_1258923244.0326") :method :outer("143_1258923244.0326")
 .annotate "line", 159
     .local string rx522_tgt
     .local int rx522_pos
@@ -6302,23 +6503,26 @@
     .local int rx522_eos
     .local int rx522_rep
     .local pmc rx522_cur
-    (rx522_cur, rx522_pos, rx522_tgt, $I10) = self."!cursor_start"()
+    (rx522_cur, rx522_pos, rx522_tgt) = self."!cursor_start"()
     rx522_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx522_cur
     .local pmc match
     .lex "$/", match
     length rx522_eos, rx522_tgt
     set rx522_off, 0
-    lt $I10, 2, rx522_start
-    sub rx522_off, $I10, 1
+    lt rx522_pos, 2, rx522_start
+    sub rx522_off, rx522_pos, 1
     substr rx522_tgt, rx522_tgt, rx522_off
   rx522_start:
-    ge rx522_pos, 0, rxscan523_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan523_done
+    goto rxscan523_scan
   rxscan523_loop:
     ($P10) = rx522_cur."from"()
     inc $P10
     set rx522_pos, $P10
     ge rx522_pos, rx522_eos, rxscan523_done
+  rxscan523_scan:
     set_addr $I10, rxscan523_loop
     rx522_cur."!mark_push"(0, rx522_pos, $I10)
   rxscan523_done:
@@ -6347,7 +6551,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block525"  :anon :subid("146_1258904200.37175") :method :outer("143_1258904200.37175")
+.sub "_block525"  :anon :subid("146_1258923244.0326") :method :outer("143_1258923244.0326")
 .annotate "line", 159
     .local string rx527_tgt
     .local int rx527_pos
@@ -6355,23 +6559,26 @@
     .local int rx527_eos
     .local int rx527_rep
     .local pmc rx527_cur
-    (rx527_cur, rx527_pos, rx527_tgt, $I10) = self."!cursor_start"()
+    (rx527_cur, rx527_pos, rx527_tgt) = self."!cursor_start"()
     rx527_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx527_cur
     .local pmc match
     .lex "$/", match
     length rx527_eos, rx527_tgt
     set rx527_off, 0
-    lt $I10, 2, rx527_start
-    sub rx527_off, $I10, 1
+    lt rx527_pos, 2, rx527_start
+    sub rx527_off, rx527_pos, 1
     substr rx527_tgt, rx527_tgt, rx527_off
   rx527_start:
-    ge rx527_pos, 0, rxscan528_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan528_done
+    goto rxscan528_scan
   rxscan528_loop:
     ($P10) = rx527_cur."from"()
     inc $P10
     set rx527_pos, $P10
     ge rx527_pos, rx527_eos, rxscan528_done
+  rxscan528_scan:
     set_addr $I10, rxscan528_loop
     rx527_cur."!mark_push"(0, rx527_pos, $I10)
   rxscan528_done:
@@ -6396,9 +6603,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_internal"  :subid("147_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "mod_internal"  :subid("147_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
-    .const 'Sub' $P543 = "149_1258904200.37175" 
+    .const 'Sub' $P543 = "149_1258923244.0326" 
     capture_lex $P543
     .local string rx535_tgt
     .local int rx535_pos
@@ -6406,7 +6613,7 @@
     .local int rx535_eos
     .local int rx535_rep
     .local pmc rx535_cur
-    (rx535_cur, rx535_pos, rx535_tgt, $I10) = self."!cursor_start"()
+    (rx535_cur, rx535_pos, rx535_tgt) = self."!cursor_start"()
     rx535_cur."!cursor_debug"("START ", "mod_internal")
     rx535_cur."!cursor_caparray"("n")
     .lex unicode:"$\x{a2}", rx535_cur
@@ -6414,16 +6621,19 @@
     .lex "$/", match
     length rx535_eos, rx535_tgt
     set rx535_off, 0
-    lt $I10, 2, rx535_start
-    sub rx535_off, $I10, 1
+    lt rx535_pos, 2, rx535_start
+    sub rx535_off, rx535_pos, 1
     substr rx535_tgt, rx535_tgt, rx535_off
   rx535_start:
-    ge rx535_pos, 0, rxscan539_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan539_done
+    goto rxscan539_scan
   rxscan539_loop:
     ($P10) = rx535_cur."from"()
     inc $P10
     set rx535_pos, $P10
     ge rx535_pos, rx535_eos, rxscan539_done
+  rxscan539_scan:
     set_addr $I10, rxscan539_loop
     rx535_cur."!mark_push"(0, rx535_pos, $I10)
   rxscan539_done:
@@ -6445,7 +6655,7 @@
   rxquantr541_loop:
   # rx subrule $P543 subtype=capture negate=
     rx535_cur."!cursor_pos"(rx535_pos)
-    .const 'Sub' $P543 = "149_1258904200.37175" 
+    .const 'Sub' $P543 = "149_1258923244.0326" 
     capture_lex $P543
     $P10 = rx535_cur.$P543()
     unless $P10, rx535_fail
@@ -6547,7 +6757,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_internal"  :subid("148_1258904200.37175") :method
+.sub "!PREFIX__mod_internal"  :subid("148_1258923244.0326") :method
 .annotate "line", 3
     $P537 = self."!PREFIX__!subrule"("mod_ident", ":")
     new $P538, "ResizablePMCArray"
@@ -6558,7 +6768,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block542"  :anon :subid("149_1258904200.37175") :method :outer("147_1258904200.37175")
+.sub "_block542"  :anon :subid("149_1258923244.0326") :method :outer("147_1258923244.0326")
 .annotate "line", 169
     .local string rx544_tgt
     .local int rx544_pos
@@ -6566,23 +6776,26 @@
     .local int rx544_eos
     .local int rx544_rep
     .local pmc rx544_cur
-    (rx544_cur, rx544_pos, rx544_tgt, $I10) = self."!cursor_start"()
+    (rx544_cur, rx544_pos, rx544_tgt) = self."!cursor_start"()
     rx544_cur."!cursor_debug"("START ", "")
     .lex unicode:"$\x{a2}", rx544_cur
     .local pmc match
     .lex "$/", match
     length rx544_eos, rx544_tgt
     set rx544_off, 0
-    lt $I10, 2, rx544_start
-    sub rx544_off, $I10, 1
+    lt rx544_pos, 2, rx544_start
+    sub rx544_off, rx544_pos, 1
     substr rx544_tgt, rx544_tgt, rx544_off
   rx544_start:
-    ge rx544_pos, 0, rxscan545_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan545_done
+    goto rxscan545_scan
   rxscan545_loop:
     ($P10) = rx544_cur."from"()
     inc $P10
     set rx544_pos, $P10
     ge rx544_pos, rx544_eos, rxscan545_done
+  rxscan545_scan:
     set_addr $I10, rxscan545_loop
     rx544_cur."!mark_push"(0, rx544_pos, $I10)
   rxscan545_done:
@@ -6623,7 +6836,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident"  :subid("150_1258904200.37175") :method
+.sub "mod_ident"  :subid("150_1258923244.0326") :method
 .annotate "line", 174
     $P552 = self."!protoregex"("mod_ident")
     .return ($P552)
@@ -6631,7 +6844,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident"  :subid("151_1258904200.37175") :method
+.sub "!PREFIX__mod_ident"  :subid("151_1258923244.0326") :method
 .annotate "line", 174
     $P554 = self."!PREFIX__!protoregex"("mod_ident")
     .return ($P554)
@@ -6639,7 +6852,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ignorecase>"  :subid("152_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "mod_ident:sym<ignorecase>"  :subid("152_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx556_tgt
     .local int rx556_pos
@@ -6647,23 +6860,26 @@
     .local int rx556_eos
     .local int rx556_rep
     .local pmc rx556_cur
-    (rx556_cur, rx556_pos, rx556_tgt, $I10) = self."!cursor_start"()
+    (rx556_cur, rx556_pos, rx556_tgt) = self."!cursor_start"()
     rx556_cur."!cursor_debug"("START ", "mod_ident:sym<ignorecase>")
     .lex unicode:"$\x{a2}", rx556_cur
     .local pmc match
     .lex "$/", match
     length rx556_eos, rx556_tgt
     set rx556_off, 0
-    lt $I10, 2, rx556_start
-    sub rx556_off, $I10, 1
+    lt rx556_pos, 2, rx556_start
+    sub rx556_off, rx556_pos, 1
     substr rx556_tgt, rx556_tgt, rx556_off
   rx556_start:
-    ge rx556_pos, 0, rxscan559_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan559_done
+    goto rxscan559_scan
   rxscan559_loop:
     ($P10) = rx556_cur."from"()
     inc $P10
     set rx556_pos, $P10
     ge rx556_pos, rx556_eos, rxscan559_done
+  rxscan559_scan:
     set_addr $I10, rxscan559_loop
     rx556_cur."!mark_push"(0, rx556_pos, $I10)
   rxscan559_done:
@@ -6721,7 +6937,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ignorecase>"  :subid("153_1258904200.37175") :method
+.sub "!PREFIX__mod_ident:sym<ignorecase>"  :subid("153_1258923244.0326") :method
 .annotate "line", 3
     new $P558, "ResizablePMCArray"
     push $P558, "i"
@@ -6730,7 +6946,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ratchet>"  :subid("154_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "mod_ident:sym<ratchet>"  :subid("154_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx564_tgt
     .local int rx564_pos
@@ -6738,23 +6954,26 @@
     .local int rx564_eos
     .local int rx564_rep
     .local pmc rx564_cur
-    (rx564_cur, rx564_pos, rx564_tgt, $I10) = self."!cursor_start"()
+    (rx564_cur, rx564_pos, rx564_tgt) = self."!cursor_start"()
     rx564_cur."!cursor_debug"("START ", "mod_ident:sym<ratchet>")
     .lex unicode:"$\x{a2}", rx564_cur
     .local pmc match
     .lex "$/", match
     length rx564_eos, rx564_tgt
     set rx564_off, 0
-    lt $I10, 2, rx564_start
-    sub rx564_off, $I10, 1
+    lt rx564_pos, 2, rx564_start
+    sub rx564_off, rx564_pos, 1
     substr rx564_tgt, rx564_tgt, rx564_off
   rx564_start:
-    ge rx564_pos, 0, rxscan567_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan567_done
+    goto rxscan567_scan
   rxscan567_loop:
     ($P10) = rx564_cur."from"()
     inc $P10
     set rx564_pos, $P10
     ge rx564_pos, rx564_eos, rxscan567_done
+  rxscan567_scan:
     set_addr $I10, rxscan567_loop
     rx564_cur."!mark_push"(0, rx564_pos, $I10)
   rxscan567_done:
@@ -6812,7 +7031,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ratchet>"  :subid("155_1258904200.37175") :method
+.sub "!PREFIX__mod_ident:sym<ratchet>"  :subid("155_1258923244.0326") :method
 .annotate "line", 3
     new $P566, "ResizablePMCArray"
     push $P566, "r"
@@ -6821,7 +7040,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<sigspace>"  :subid("156_1258904200.37175") :method :outer("11_1258904200.37175")
+.sub "mod_ident:sym<sigspace>"  :subid("156_1258923244.0326") :method :outer("11_1258923244.0326")
 .annotate "line", 3
     .local string rx572_tgt
     .local int rx572_pos
@@ -6829,23 +7048,26 @@
     .local int rx572_eos
     .local int rx572_rep
     .local pmc rx572_cur
-    (rx572_cur, rx572_pos, rx572_tgt, $I10) = self."!cursor_start"()
+    (rx572_cur, rx572_pos, rx572_tgt) = self."!cursor_start"()
     rx572_cur."!cursor_debug"("START ", "mod_ident:sym<sigspace>")
     .lex unicode:"$\x{a2}", rx572_cur
     .local pmc match
     .lex "$/", match
     length rx572_eos, rx572_tgt
     set rx572_off, 0
-    lt $I10, 2, rx572_start
-    sub rx572_off, $I10, 1
+    lt rx572_pos, 2, rx572_start
+    sub rx572_off, rx572_pos, 1
     substr rx572_tgt, rx572_tgt, rx572_off
   rx572_start:
-    ge rx572_pos, 0, rxscan575_done
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan575_done
+    goto rxscan575_scan
   rxscan575_loop:
     ($P10) = rx572_cur."from"()
     inc $P10
     set rx572_pos, $P10
     ge rx572_pos, rx572_eos, rxscan575_done
+  rxscan575_scan:
     set_addr $I10, rxscan575_loop
     rx572_cur."!mark_push"(0, rx572_pos, $I10)
   rxscan575_done:
@@ -6903,7 +7125,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<sigspace>"  :subid("157_1258904200.37175") :method
+.sub "!PREFIX__mod_ident:sym<sigspace>"  :subid("157_1258923244.0326") :method
 .annotate "line", 3
     new $P574, "ResizablePMCArray"
     push $P574, "s"
@@ -6913,7 +7135,7 @@
 ### .include 'gen/p6regex-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1258904207.27113")
+.sub "_block11"  :anon :subid("10_1258923250.96098")
 .annotate "line", 0
     get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13" 
     capture_lex $P14
@@ -6927,9 +7149,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post89") :outer("10_1258904207.27113")
+.sub "" :load :init :subid("post89") :outer("10_1258923250.96098")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1258904207.27113" 
+    .const 'Sub' $P12 = "10_1258923250.96098" 
     .local pmc block
     set block, $P12
     $P1559 = get_root_global ["parrot"], "P6metaclass"
@@ -6938,115 +7160,115 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block13"  :subid("11_1258904207.27113") :outer("10_1258904207.27113")
+.sub "_block13"  :subid("11_1258923250.96098") :outer("10_1258923250.96098")
 .annotate "line", 4
-    .const 'Sub' $P1525 = "88_1258904207.27113" 
+    .const 'Sub' $P1525 = "88_1258923250.96098" 
     capture_lex $P1525
-    .const 'Sub' $P1456 = "84_1258904207.27113" 
+    .const 'Sub' $P1456 = "84_1258923250.96098" 
     capture_lex $P1456
-    .const 'Sub' $P1388 = "82_1258904207.27113" 
+    .const 'Sub' $P1388 = "82_1258923250.96098" 
     capture_lex $P1388
-    .const 'Sub' $P1315 = "79_1258904207.27113" 
+    .const 'Sub' $P1315 = "79_1258923250.96098" 
     capture_lex $P1315
-    .const 'Sub' $P1301 = "78_1258904207.27113" 
+    .const 'Sub' $P1301 = "78_1258923250.96098" 
     capture_lex $P1301
-    .const 'Sub' $P1277 = "77_1258904207.27113" 
+    .const 'Sub' $P1277 = "77_1258923250.96098" 
     capture_lex $P1277
-    .const 'Sub' $P1259 = "76_1258904207.27113" 
+    .const 'Sub' $P1259 = "76_1258923250.96098" 
     capture_lex $P1259
-    .const 'Sub' $P1245 = "75_1258904207.27113" 
+    .const 'Sub' $P1245 = "75_1258923250.96098" 
     capture_lex $P1245
-    .const 'Sub' $P1214 = "74_1258904207.27113" 
+    .const 'Sub' $P1214 = "74_1258923250.96098" 
     capture_lex $P1214
-    .const 'Sub' $P1183 = "73_1258904207.27113" 
+    .const 'Sub' $P1183 = "73_1258923250.96098" 
     capture_lex $P1183
-    .const 'Sub' $P1167 = "72_1258904207.27113" 
+    .const 'Sub' $P1167 = "72_1258923250.96098" 
     capture_lex $P1167
-    .const 'Sub' $P1151 = "71_1258904207.27113" 
+    .const 'Sub' $P1151 = "71_1258923250.96098" 
     capture_lex $P1151
-    .const 'Sub' $P1135 = "70_1258904207.27113" 
+    .const 'Sub' $P1135 = "70_1258923250.96098" 
     capture_lex $P1135
-    .const 'Sub' $P1119 = "69_1258904207.27113" 
+    .const 'Sub' $P1119 = "69_1258923250.96098" 
     capture_lex $P1119
-    .const 'Sub' $P1103 = "68_1258904207.27113" 
+    .const 'Sub' $P1103 = "68_1258923250.96098" 
     capture_lex $P1103
-    .const 'Sub' $P1087 = "67_1258904207.27113" 
+    .const 'Sub' $P1087 = "67_1258923250.96098" 
     capture_lex $P1087
-    .const 'Sub' $P1071 = "66_1258904207.27113" 
+    .const 'Sub' $P1071 = "66_1258923250.96098" 
     capture_lex $P1071
-    .const 'Sub' $P1047 = "65_1258904207.27113" 
+    .const 'Sub' $P1047 = "65_1258923250.96098" 
     capture_lex $P1047
-    .const 'Sub' $P1032 = "64_1258904207.27113" 
+    .const 'Sub' $P1032 = "64_1258923250.96098" 
     capture_lex $P1032
-    .const 'Sub' $P976 = "63_1258904207.27113" 
+    .const 'Sub' $P976 = "63_1258923250.96098" 
     capture_lex $P976
-    .const 'Sub' $P955 = "62_1258904207.27113" 
+    .const 'Sub' $P955 = "62_1258923250.96098" 
     capture_lex $P955
-    .const 'Sub' $P933 = "61_1258904207.27113" 
+    .const 'Sub' $P933 = "61_1258923250.96098" 
     capture_lex $P933
-    .const 'Sub' $P923 = "60_1258904207.27113" 
+    .const 'Sub' $P923 = "60_1258923250.96098" 
     capture_lex $P923
-    .const 'Sub' $P913 = "59_1258904207.27113" 
+    .const 'Sub' $P913 = "59_1258923250.96098" 
     capture_lex $P913
-    .const 'Sub' $P903 = "58_1258904207.27113" 
+    .const 'Sub' $P903 = "58_1258923250.96098" 
     capture_lex $P903
-    .const 'Sub' $P891 = "57_1258904207.27113" 
+    .const 'Sub' $P891 = "57_1258923250.96098" 
     capture_lex $P891
-    .const 'Sub' $P879 = "56_1258904207.27113" 
+    .const 'Sub' $P879 = "56_1258923250.96098" 
     capture_lex $P879
-    .const 'Sub' $P867 = "55_1258904207.27113" 
+    .const 'Sub' $P867 = "55_1258923250.96098" 
     capture_lex $P867
-    .const 'Sub' $P855 = "54_1258904207.27113" 
+    .const 'Sub' $P855 = "54_1258923250.96098" 
     capture_lex $P855
-    .const 'Sub' $P843 = "53_1258904207.27113" 
+    .const 'Sub' $P843 = "53_1258923250.96098" 
     capture_lex $P843
-    .const 'Sub' $P831 = "52_1258904207.27113" 
+    .const 'Sub' $P831 = "52_1258923250.96098" 
     capture_lex $P831
-    .const 'Sub' $P819 = "51_1258904207.27113" 
+    .const 'Sub' $P819 = "51_1258923250.96098" 
     capture_lex $P819
-    .const 'Sub' $P807 = "50_1258904207.27113" 
+    .const 'Sub' $P807 = "50_1258923250.96098" 
     capture_lex $P807
-    .const 'Sub' $P784 = "49_1258904207.27113" 
+    .const 'Sub' $P784 = "49_1258923250.96098" 
     capture_lex $P784
-    .const 'Sub' $P761 = "48_1258904207.27113" 
+    .const 'Sub' $P761 = "48_1258923250.96098" 
     capture_lex $P761
-    .const 'Sub' $P743 = "47_1258904207.27113" 
+    .const 'Sub' $P743 = "47_1258923250.96098" 
     capture_lex $P743
-    .const 'Sub' $P733 = "46_1258904207.27113" 
+    .const 'Sub' $P733 = "46_1258923250.96098" 
     capture_lex $P733
-    .const 'Sub' $P715 = "45_1258904207.27113" 
+    .const 'Sub' $P715 = "45_1258923250.96098" 
     capture_lex $P715
-    .const 'Sub' $P668 = "44_1258904207.27113" 
+    .const 'Sub' $P668 = "44_1258923250.96098" 
     capture_lex $P668
-    .const 'Sub' $P651 = "43_1258904207.27113" 
+    .const 'Sub' $P651 = "43_1258923250.96098" 
     capture_lex $P651
-    .const 'Sub' $P636 = "42_1258904207.27113" 
+    .const 'Sub' $P636 = "42_1258923250.96098" 
     capture_lex $P636
-    .const 'Sub' $P621 = "41_1258904207.27113" 
+    .const 'Sub' $P621 = "41_1258923250.96098" 
     capture_lex $P621
-    .const 'Sub' $P595 = "40_1258904207.27113" 
+    .const 'Sub' $P595 = "40_1258923250.96098" 
     capture_lex $P595
-    .const 'Sub' $P545 = "38_1258904207.27113" 
+    .const 'Sub' $P545 = "38_1258923250.96098" 
     capture_lex $P545
-    .const 'Sub' $P477 = "36_1258904207.27113" 
+    .const 'Sub' $P477 = "36_1258923250.96098" 
     capture_lex $P477
-    .const 'Sub' $P420 = "33_1258904207.27113" 
+    .const 'Sub' $P420 = "33_1258923250.96098" 
     capture_lex $P420
-    .const 'Sub' $P405 = "32_1258904207.27113" 
+    .const 'Sub' $P405 = "32_1258923250.96098" 
     capture_lex $P405
-    .const 'Sub' $P379 = "30_1258904207.27113" 
+    .const 'Sub' $P379 = "30_1258923250.96098" 
     capture_lex $P379
-    .const 'Sub' $P362 = "29_1258904207.27113" 
+    .const 'Sub' $P362 = "29_1258923250.96098" 
     capture_lex $P362
-    .const 'Sub' $P340 = "28_1258904207.27113" 
+    .const 'Sub' $P340 = "28_1258923250.96098" 
     capture_lex $P340
-    .const 'Sub' $P308 = "27_1258904207.27113" 
+    .const 'Sub' $P308 = "27_1258923250.96098" 
     capture_lex $P308
-    .const 'Sub' $P46 = "14_1258904207.27113" 
+    .const 'Sub' $P46 = "14_1258923250.96098" 
     capture_lex $P46
-    .const 'Sub' $P21 = "13_1258904207.27113" 
+    .const 'Sub' $P21 = "13_1258923250.96098" 
     capture_lex $P21
-    .const 'Sub' $P16 = "12_1258904207.27113" 
+    .const 'Sub' $P16 = "12_1258923250.96098" 
     capture_lex $P16
     get_global $P15, "@MODIFIERS"
     unless_null $P15, vivify_90
@@ -7054,23 +7276,23 @@
     set_global "@MODIFIERS", $P15
   vivify_90:
 .annotate "line", 6
-    .const 'Sub' $P16 = "12_1258904207.27113" 
+    .const 'Sub' $P16 = "12_1258923250.96098" 
     capture_lex $P16
     .lex "INIT", $P16
 .annotate "line", 475
-    .const 'Sub' $P21 = "13_1258904207.27113" 
+    .const 'Sub' $P21 = "13_1258923250.96098" 
     capture_lex $P21
     .lex "buildsub", $P21
 .annotate "line", 490
-    .const 'Sub' $P46 = "14_1258904207.27113" 
+    .const 'Sub' $P46 = "14_1258923250.96098" 
     capture_lex $P46
     .lex "capnames", $P46
 .annotate "line", 556
-    .const 'Sub' $P308 = "27_1258904207.27113" 
+    .const 'Sub' $P308 = "27_1258923250.96098" 
     capture_lex $P308
     .lex "backmod", $P308
 .annotate "line", 563
-    .const 'Sub' $P340 = "28_1258904207.27113" 
+    .const 'Sub' $P340 = "28_1258923250.96098" 
     capture_lex $P340
     .lex "subrule_alias", $P340
 .annotate "line", 4
@@ -7087,7 +7309,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "INIT"  :subid("12_1258904207.27113") :outer("11_1258904207.27113")
+.sub "INIT"  :subid("12_1258923250.96098") :outer("11_1258923250.96098")
 .annotate "line", 6
     new $P18, 'ExceptionHandler'
     set_addr $P18, control_17
@@ -7111,7 +7333,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "buildsub"  :subid("13_1258904207.27113") :outer("11_1258904207.27113")
+.sub "buildsub"  :subid("13_1258923250.96098") :outer("11_1258923250.96098")
     .param pmc param_24
     .param pmc param_25 :optional
     .param int has_param_25 :opt_flag
@@ -7174,19 +7396,19 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "capnames"  :subid("14_1258904207.27113") :outer("11_1258904207.27113")
+.sub "capnames"  :subid("14_1258923250.96098") :outer("11_1258923250.96098")
     .param pmc param_49
     .param pmc param_50
 .annotate "line", 490
-    .const 'Sub' $P283 = "25_1258904207.27113" 
+    .const 'Sub' $P283 = "25_1258923250.96098" 
     capture_lex $P283
-    .const 'Sub' $P218 = "22_1258904207.27113" 
+    .const 'Sub' $P218 = "22_1258923250.96098" 
     capture_lex $P218
-    .const 'Sub' $P174 = "20_1258904207.27113" 
+    .const 'Sub' $P174 = "20_1258923250.96098" 
     capture_lex $P174
-    .const 'Sub' $P132 = "18_1258904207.27113" 
+    .const 'Sub' $P132 = "18_1258923250.96098" 
     capture_lex $P132
-    .const 'Sub' $P61 = "15_1258904207.27113" 
+    .const 'Sub' $P61 = "15_1258923250.96098" 
     capture_lex $P61
     new $P48, 'ExceptionHandler'
     set_addr $P48, control_47
@@ -7242,21 +7464,21 @@
     set $S280, $P279
     iseq $I281, $S280, "quant"
     unless $I281, if_278_end
-    .const 'Sub' $P283 = "25_1258904207.27113" 
+    .const 'Sub' $P283 = "25_1258923250.96098" 
     capture_lex $P283
     $P283()
   if_278_end:
     goto if_213_end
   if_213:
 .annotate "line", 528
-    .const 'Sub' $P218 = "22_1258904207.27113" 
+    .const 'Sub' $P218 = "22_1258923250.96098" 
     capture_lex $P218
     $P218()
   if_213_end:
     goto if_164_end
   if_164:
 .annotate "line", 515
-    .const 'Sub' $P174 = "20_1258904207.27113" 
+    .const 'Sub' $P174 = "20_1258923250.96098" 
     capture_lex $P174
     $P174()
   if_164_end:
@@ -7276,7 +7498,7 @@
     unless $P126, loop161_done
     shift $P130, $P126
   loop161_redo:
-    .const 'Sub' $P132 = "18_1258904207.27113" 
+    .const 'Sub' $P132 = "18_1258923250.96098" 
     capture_lex $P132
     $P132($P130)
   loop161_next:
@@ -7295,7 +7517,7 @@
     goto if_56_end
   if_56:
 .annotate "line", 493
-    .const 'Sub' $P61 = "15_1258904207.27113" 
+    .const 'Sub' $P61 = "15_1258923250.96098" 
     capture_lex $P61
     $P61()
   if_56_end:
@@ -7319,9 +7541,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block282"  :anon :subid("25_1258904207.27113") :outer("14_1258904207.27113")
+.sub "_block282"  :anon :subid("25_1258923250.96098") :outer("14_1258923250.96098")
 .annotate "line", 545
-    .const 'Sub' $P294 = "26_1258904207.27113" 
+    .const 'Sub' $P294 = "26_1258923250.96098" 
     capture_lex $P294
 .annotate "line", 546
     new $P284, "Hash"
@@ -7350,7 +7572,7 @@
     unless $P289, loop299_done
     shift $P292, $P289
   loop299_redo:
-    .const 'Sub' $P294 = "26_1258904207.27113" 
+    .const 'Sub' $P294 = "26_1258923250.96098" 
     capture_lex $P294
     $P294($P292)
   loop299_next:
@@ -7380,7 +7602,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block293"  :anon :subid("26_1258904207.27113") :outer("25_1258904207.27113")
+.sub "_block293"  :anon :subid("26_1258923250.96098") :outer("25_1258923250.96098")
     .param pmc param_295
 .annotate "line", 547
     .lex "$_", param_295
@@ -7400,11 +7622,11 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block217"  :anon :subid("22_1258904207.27113") :outer("14_1258904207.27113")
+.sub "_block217"  :anon :subid("22_1258923250.96098") :outer("14_1258923250.96098")
 .annotate "line", 528
-    .const 'Sub' $P260 = "24_1258904207.27113" 
+    .const 'Sub' $P260 = "24_1258923250.96098" 
     capture_lex $P260
-    .const 'Sub' $P230 = "23_1258904207.27113" 
+    .const 'Sub' $P230 = "23_1258923250.96098" 
     capture_lex $P230
 .annotate "line", 529
     new $P219, "Undef"
@@ -7439,7 +7661,7 @@
     unless $P225, loop248_done
     shift $P228, $P225
   loop248_redo:
-    .const 'Sub' $P230 = "23_1258904207.27113" 
+    .const 'Sub' $P230 = "23_1258923250.96098" 
     capture_lex $P230
     $P230($P228)
   loop248_next:
@@ -7478,7 +7700,7 @@
     unless $P255, loop273_done
     shift $P258, $P255
   loop273_redo:
-    .const 'Sub' $P260 = "24_1258904207.27113" 
+    .const 'Sub' $P260 = "24_1258923250.96098" 
     capture_lex $P260
     $P260($P258)
   loop273_next:
@@ -7508,7 +7730,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block229"  :anon :subid("23_1258904207.27113") :outer("22_1258904207.27113")
+.sub "_block229"  :anon :subid("23_1258923250.96098") :outer("22_1258923250.96098")
     .param pmc param_231
 .annotate "line", 535
     .lex "$_", param_231
@@ -7551,7 +7773,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block259"  :anon :subid("24_1258904207.27113") :outer("22_1258904207.27113")
+.sub "_block259"  :anon :subid("24_1258923250.96098") :outer("22_1258923250.96098")
     .param pmc param_261
 .annotate "line", 540
     .lex "$_", param_261
@@ -7591,9 +7813,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block173"  :anon :subid("20_1258904207.27113") :outer("14_1258904207.27113")
+.sub "_block173"  :anon :subid("20_1258923250.96098") :outer("14_1258923250.96098")
 .annotate "line", 515
-    .const 'Sub' $P192 = "21_1258904207.27113" 
+    .const 'Sub' $P192 = "21_1258923250.96098" 
     capture_lex $P192
 .annotate "line", 516
     new $P175, "Undef"
@@ -7636,7 +7858,7 @@
     unless $P187, loop210_done
     shift $P190, $P187
   loop210_redo:
-    .const 'Sub' $P192 = "21_1258904207.27113" 
+    .const 'Sub' $P192 = "21_1258923250.96098" 
     capture_lex $P192
     $P192($P190)
   loop210_next:
@@ -7656,7 +7878,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block191"  :anon :subid("21_1258904207.27113") :outer("20_1258904207.27113")
+.sub "_block191"  :anon :subid("21_1258923250.96098") :outer("20_1258923250.96098")
     .param pmc param_193
 .annotate "line", 523
     .lex "$_", param_193
@@ -7699,10 +7921,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block131"  :anon :subid("18_1258904207.27113") :outer("14_1258904207.27113")
+.sub "_block131"  :anon :subid("18_1258923250.96098") :outer("14_1258923250.96098")
     .param pmc param_134
 .annotate "line", 507
-    .const 'Sub' $P143 = "19_1258904207.27113" 
+    .const 'Sub' $P143 = "19_1258923250.96098" 
     capture_lex $P143
 .annotate "line", 508
     new $P133, "Hash"
@@ -7725,7 +7947,7 @@
     unless $P138, loop156_done
     shift $P141, $P138
   loop156_redo:
-    .const 'Sub' $P143 = "19_1258904207.27113" 
+    .const 'Sub' $P143 = "19_1258923250.96098" 
     capture_lex $P143
     $P143($P141)
   loop156_next:
@@ -7755,7 +7977,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block142"  :anon :subid("19_1258904207.27113") :outer("18_1258904207.27113")
+.sub "_block142"  :anon :subid("19_1258923250.96098") :outer("18_1258923250.96098")
     .param pmc param_144
 .annotate "line", 509
     .lex "$_", param_144
@@ -7795,9 +8017,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block60"  :anon :subid("15_1258904207.27113") :outer("14_1258904207.27113")
+.sub "_block60"  :anon :subid("15_1258923250.96098") :outer("14_1258923250.96098")
 .annotate "line", 493
-    .const 'Sub' $P70 = "16_1258904207.27113" 
+    .const 'Sub' $P70 = "16_1258923250.96098" 
     capture_lex $P70
 .annotate "line", 494
     new $P62, "Undef"
@@ -7818,7 +8040,7 @@
     unless $P64, loop118_done
     shift $P68, $P64
   loop118_redo:
-    .const 'Sub' $P70 = "16_1258904207.27113" 
+    .const 'Sub' $P70 = "16_1258923250.96098" 
     capture_lex $P70
     $P70($P68)
   loop118_next:
@@ -7841,10 +8063,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block69"  :anon :subid("16_1258904207.27113") :outer("15_1258904207.27113")
+.sub "_block69"  :anon :subid("16_1258923250.96098") :outer("15_1258923250.96098")
     .param pmc param_72
 .annotate "line", 495
-    .const 'Sub' $P81 = "17_1258904207.27113" 
+    .const 'Sub' $P81 = "17_1258923250.96098" 
     capture_lex $P81
 .annotate "line", 496
     new $P71, "Hash"
@@ -7867,7 +8089,7 @@
     unless $P76, loop105_done
     shift $P79, $P76
   loop105_redo:
-    .const 'Sub' $P81 = "17_1258904207.27113" 
+    .const 'Sub' $P81 = "17_1258923250.96098" 
     capture_lex $P81
     $P81($P79)
   loop105_next:
@@ -7916,7 +8138,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block80"  :anon :subid("17_1258904207.27113") :outer("16_1258904207.27113")
+.sub "_block80"  :anon :subid("17_1258923250.96098") :outer("16_1258923250.96098")
     .param pmc param_82
 .annotate "line", 497
     .lex "$_", param_82
@@ -7981,7 +8203,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backmod"  :subid("27_1258904207.27113") :outer("11_1258904207.27113")
+.sub "backmod"  :subid("27_1258923250.96098") :outer("11_1258923250.96098")
     .param pmc param_311
     .param pmc param_312
 .annotate "line", 556
@@ -8055,7 +8277,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "subrule_alias"  :subid("28_1258904207.27113") :outer("11_1258904207.27113")
+.sub "subrule_alias"  :subid("28_1258923250.96098") :outer("11_1258923250.96098")
     .param pmc param_343
     .param pmc param_344
 .annotate "line", 563
@@ -8099,7 +8321,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "arg"  :subid("29_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "arg"  :subid("29_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_365
 .annotate "line", 14
     new $P364, 'ExceptionHandler'
@@ -8155,10 +8377,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "arglist"  :subid("30_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "arglist"  :subid("30_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_382
 .annotate "line", 18
-    .const 'Sub' $P392 = "31_1258904207.27113" 
+    .const 'Sub' $P392 = "31_1258923250.96098" 
     capture_lex $P392
     new $P381, 'ExceptionHandler'
     set_addr $P381, control_380
@@ -8192,7 +8414,7 @@
     unless $P386, loop398_done
     shift $P390, $P386
   loop398_redo:
-    .const 'Sub' $P392 = "31_1258904207.27113" 
+    .const 'Sub' $P392 = "31_1258923250.96098" 
     capture_lex $P392
     $P392($P390)
   loop398_next:
@@ -8221,7 +8443,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block391"  :anon :subid("31_1258904207.27113") :outer("30_1258904207.27113")
+.sub "_block391"  :anon :subid("31_1258923250.96098") :outer("30_1258923250.96098")
     .param pmc param_393
 .annotate "line", 20
     .lex "$_", param_393
@@ -8234,7 +8456,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "TOP"  :subid("32_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "TOP"  :subid("32_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_408
 .annotate "line", 24
     new $P407, 'ExceptionHandler'
@@ -8276,14 +8498,14 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "nibbler"  :subid("33_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "nibbler"  :subid("33_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_423
     .param pmc param_424 :optional
     .param int has_param_424 :opt_flag
 .annotate "line", 30
-    .const 'Sub' $P460 = "35_1258904207.27113" 
+    .const 'Sub' $P460 = "35_1258923250.96098" 
     capture_lex $P460
-    .const 'Sub' $P432 = "34_1258904207.27113" 
+    .const 'Sub' $P432 = "34_1258923250.96098" 
     capture_lex $P432
     new $P422, 'ExceptionHandler'
     set_addr $P422, control_421
@@ -8304,7 +8526,7 @@
     set $S429, $P428
     iseq $I430, $S429, "open"
     unless $I430, if_427_end
-    .const 'Sub' $P432 = "34_1258904207.27113" 
+    .const 'Sub' $P432 = "34_1258923250.96098" 
     capture_lex $P432
     $P432()
   if_427_end:
@@ -8370,7 +8592,7 @@
     unless $P454, loop466_done
     shift $P458, $P454
   loop466_redo:
-    .const 'Sub' $P460 = "35_1258904207.27113" 
+    .const 'Sub' $P460 = "35_1258923250.96098" 
     capture_lex $P460
     $P460($P458)
   loop466_next:
@@ -8400,7 +8622,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block431"  :anon :subid("34_1258904207.27113") :outer("33_1258904207.27113")
+.sub "_block431"  :anon :subid("34_1258923250.96098") :outer("33_1258923250.96098")
 .annotate "line", 32
     new $P433, "Hash"
     .lex "%old", $P433
@@ -8440,7 +8662,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block459"  :anon :subid("35_1258904207.27113") :outer("33_1258904207.27113")
+.sub "_block459"  :anon :subid("35_1258923250.96098") :outer("33_1258923250.96098")
     .param pmc param_461
 .annotate "line", 45
     .lex "$_", param_461
@@ -8455,10 +8677,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "termish"  :subid("36_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "termish"  :subid("36_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_480
 .annotate "line", 55
-    .const 'Sub' $P493 = "37_1258904207.27113" 
+    .const 'Sub' $P493 = "37_1258923250.96098" 
     capture_lex $P493
     new $P479, 'ExceptionHandler'
     set_addr $P479, control_478
@@ -8501,7 +8723,7 @@
     unless $P487, loop538_done
     shift $P491, $P487
   loop538_redo:
-    .const 'Sub' $P493 = "37_1258904207.27113" 
+    .const 'Sub' $P493 = "37_1258923250.96098" 
     capture_lex $P493
     $P493($P491)
   loop538_next:
@@ -8530,7 +8752,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block492"  :anon :subid("37_1258904207.27113") :outer("36_1258904207.27113")
+.sub "_block492"  :anon :subid("37_1258923250.96098") :outer("36_1258923250.96098")
     .param pmc param_495
 .annotate "line", 59
     new $P494, "Undef"
@@ -8657,10 +8879,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantified_atom"  :subid("38_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "quantified_atom"  :subid("38_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_548
 .annotate "line", 76
-    .const 'Sub' $P557 = "39_1258904207.27113" 
+    .const 'Sub' $P557 = "39_1258923250.96098" 
     capture_lex $P557
     new $P547, 'ExceptionHandler'
     set_addr $P547, control_546
@@ -8723,7 +8945,7 @@
     goto if_553_end
   if_553:
 .annotate "line", 78
-    .const 'Sub' $P557 = "39_1258904207.27113" 
+    .const 'Sub' $P557 = "39_1258923250.96098" 
     capture_lex $P557
     $P557()
   if_553_end:
@@ -8777,7 +8999,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block556"  :anon :subid("39_1258904207.27113") :outer("38_1258904207.27113")
+.sub "_block556"  :anon :subid("39_1258923250.96098") :outer("38_1258923250.96098")
 .annotate "line", 80
     new $P558, "Undef"
     .lex "$qast", $P558
@@ -8816,7 +9038,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "atom"  :subid("40_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "atom"  :subid("40_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_598
 .annotate "line", 91
     new $P597, 'ExceptionHandler'
@@ -8894,7 +9116,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<*>"  :subid("41_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "quantifier:sym<*>"  :subid("41_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_624
 .annotate "line", 101
     new $P623, 'ExceptionHandler'
@@ -8934,7 +9156,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<+>"  :subid("42_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "quantifier:sym<+>"  :subid("42_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_639
 .annotate "line", 106
     new $P638, 'ExceptionHandler'
@@ -8974,7 +9196,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<?>"  :subid("43_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "quantifier:sym<?>"  :subid("43_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_654
 .annotate "line", 111
     new $P653, 'ExceptionHandler'
@@ -9018,7 +9240,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<**>"  :subid("44_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "quantifier:sym<**>"  :subid("44_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_671
 .annotate "line", 117
     new $P670, 'ExceptionHandler'
@@ -9158,7 +9380,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<ws>"  :subid("45_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<ws>"  :subid("45_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_718
 .annotate "line", 131
     new $P717, 'ExceptionHandler'
@@ -9210,7 +9432,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<[ ]>"  :subid("46_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<[ ]>"  :subid("46_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_736
 .annotate "line", 140
     new $P735, 'ExceptionHandler'
@@ -9242,7 +9464,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<( )>"  :subid("47_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<( )>"  :subid("47_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_746
 .annotate "line", 144
     new $P745, 'ExceptionHandler'
@@ -9290,7 +9512,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<'>"  :subid("48_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<'>"  :subid("48_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_764
 .annotate "line", 151
     new $P763, 'ExceptionHandler'
@@ -9346,7 +9568,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<\">"  :subid("49_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<\">"  :subid("49_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_787
 .annotate "line", 158
     new $P786, 'ExceptionHandler'
@@ -9402,7 +9624,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<.>"  :subid("50_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<.>"  :subid("50_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_810
 .annotate "line", 165
     new $P809, 'ExceptionHandler'
@@ -9433,7 +9655,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^>"  :subid("51_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<^>"  :subid("51_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_822
 .annotate "line", 170
     new $P821, 'ExceptionHandler'
@@ -9464,7 +9686,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^^>"  :subid("52_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<^^>"  :subid("52_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_834
 .annotate "line", 175
     new $P833, 'ExceptionHandler'
@@ -9495,7 +9717,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$>"  :subid("53_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<$>"  :subid("53_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_846
 .annotate "line", 180
     new $P845, 'ExceptionHandler'
@@ -9526,7 +9748,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$$>"  :subid("54_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<$$>"  :subid("54_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_858
 .annotate "line", 185
     new $P857, 'ExceptionHandler'
@@ -9557,7 +9779,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<:::>"  :subid("55_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<:::>"  :subid("55_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_870
 .annotate "line", 190
     new $P869, 'ExceptionHandler'
@@ -9588,7 +9810,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<lwb>"  :subid("56_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<lwb>"  :subid("56_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_882
 .annotate "line", 195
     new $P881, 'ExceptionHandler'
@@ -9619,7 +9841,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<rwb>"  :subid("57_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<rwb>"  :subid("57_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_894
 .annotate "line", 200
     new $P893, 'ExceptionHandler'
@@ -9650,7 +9872,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<bs>"  :subid("58_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<bs>"  :subid("58_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_906
 .annotate "line", 205
     new $P905, 'ExceptionHandler'
@@ -9682,7 +9904,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<mod>"  :subid("59_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<mod>"  :subid("59_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_916
 .annotate "line", 209
     new $P915, 'ExceptionHandler'
@@ -9714,7 +9936,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<assert>"  :subid("60_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<assert>"  :subid("60_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_926
 .annotate "line", 213
     new $P925, 'ExceptionHandler'
@@ -9746,7 +9968,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<~>"  :subid("61_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<~>"  :subid("61_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_936
 .annotate "line", 217
     new $P935, 'ExceptionHandler'
@@ -9808,7 +10030,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<{*}>"  :subid("62_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<{*}>"  :subid("62_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_958
 .annotate "line", 230
     new $P957, 'ExceptionHandler'
@@ -9869,7 +10091,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<var>"  :subid("63_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<var>"  :subid("63_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_979
 .annotate "line", 237
     new $P978, 'ExceptionHandler'
@@ -10029,7 +10251,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<PIR>"  :subid("64_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "metachar:sym<PIR>"  :subid("64_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1035
 .annotate "line", 257
     new $P1034, 'ExceptionHandler'
@@ -10068,7 +10290,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<w>"  :subid("65_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "backslash:sym<w>"  :subid("65_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1050
 .annotate "line", 265
     new $P1049, 'ExceptionHandler'
@@ -10134,7 +10356,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<b>"  :subid("66_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "backslash:sym<b>"  :subid("66_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1074
 .annotate "line", 271
     new $P1073, 'ExceptionHandler'
@@ -10177,7 +10399,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<e>"  :subid("67_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "backslash:sym<e>"  :subid("67_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1090
 .annotate "line", 277
     new $P1089, 'ExceptionHandler'
@@ -10220,7 +10442,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<f>"  :subid("68_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "backslash:sym<f>"  :subid("68_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1106
 .annotate "line", 283
     new $P1105, 'ExceptionHandler'
@@ -10263,7 +10485,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<h>"  :subid("69_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "backslash:sym<h>"  :subid("69_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1122
 .annotate "line", 289
     new $P1121, 'ExceptionHandler'
@@ -10306,7 +10528,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<r>"  :subid("70_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "backslash:sym<r>"  :subid("70_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1138
 .annotate "line", 295
     new $P1137, 'ExceptionHandler'
@@ -10349,7 +10571,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<t>"  :subid("71_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "backslash:sym<t>"  :subid("71_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1154
 .annotate "line", 301
     new $P1153, 'ExceptionHandler'
@@ -10392,7 +10614,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<v>"  :subid("72_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "backslash:sym<v>"  :subid("72_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1170
 .annotate "line", 307
     new $P1169, 'ExceptionHandler'
@@ -10435,7 +10657,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<o>"  :subid("73_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "backslash:sym<o>"  :subid("73_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1186
 .annotate "line", 314
     new $P1185, 'ExceptionHandler'
@@ -10518,7 +10740,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<x>"  :subid("74_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "backslash:sym<x>"  :subid("74_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1217
 .annotate "line", 323
     new $P1216, 'ExceptionHandler'
@@ -10601,7 +10823,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<misc>"  :subid("75_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "backslash:sym<misc>"  :subid("75_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1248
 .annotate "line", 332
     new $P1247, 'ExceptionHandler'
@@ -10634,7 +10856,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<?>"  :subid("76_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "assertion:sym<?>"  :subid("76_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1262
 .annotate "line", 338
     new $P1261, 'ExceptionHandler'
@@ -10694,7 +10916,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<!>"  :subid("77_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "assertion:sym<!>"  :subid("77_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1280
 .annotate "line", 348
     new $P1279, 'ExceptionHandler'
@@ -10762,7 +10984,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<method>"  :subid("78_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "assertion:sym<method>"  :subid("78_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1304
 .annotate "line", 361
     new $P1303, 'ExceptionHandler'
@@ -10805,12 +11027,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<name>"  :subid("79_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "assertion:sym<name>"  :subid("79_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1318
 .annotate "line", 368
-    .const 'Sub' $P1376 = "81_1258904207.27113" 
+    .const 'Sub' $P1376 = "81_1258923250.96098" 
     capture_lex $P1376
-    .const 'Sub' $P1340 = "80_1258904207.27113" 
+    .const 'Sub' $P1340 = "80_1258923250.96098" 
     capture_lex $P1340
     new $P1317, 'ExceptionHandler'
     set_addr $P1317, control_1316
@@ -10906,7 +11128,7 @@
     unless $P1367, loop1381_done
     shift $P1374, $P1367
   loop1381_redo:
-    .const 'Sub' $P1376 = "81_1258904207.27113" 
+    .const 'Sub' $P1376 = "81_1258923250.96098" 
     capture_lex $P1376
     $P1376($P1374)
   loop1381_next:
@@ -10946,7 +11168,7 @@
     goto if_1335_end
   if_1335:
 .annotate "line", 375
-    .const 'Sub' $P1340 = "80_1258904207.27113" 
+    .const 'Sub' $P1340 = "80_1258923250.96098" 
     capture_lex $P1340
     $P1340()
   if_1335_end:
@@ -10987,7 +11209,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1375"  :anon :subid("81_1258904207.27113") :outer("79_1258904207.27113")
+.sub "_block1375"  :anon :subid("81_1258923250.96098") :outer("79_1258923250.96098")
     .param pmc param_1377
 .annotate "line", 397
     .lex "$_", param_1377
@@ -10999,7 +11221,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1339"  :anon :subid("80_1258904207.27113") :outer("79_1258904207.27113")
+.sub "_block1339"  :anon :subid("80_1258923250.96098") :outer("79_1258923250.96098")
 .annotate "line", 376
     new $P1341, "Undef"
     .lex "$regexsym", $P1341
@@ -11030,10 +11252,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<[>"  :subid("82_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "assertion:sym<[>"  :subid("82_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1391
 .annotate "line", 403
-    .const 'Sub' $P1426 = "83_1258904207.27113" 
+    .const 'Sub' $P1426 = "83_1258923250.96098" 
     capture_lex $P1426
     new $P1390, 'ExceptionHandler'
     set_addr $P1390, control_1389
@@ -11125,7 +11347,7 @@
     islt $I1424, $N1421, $N1423
     unless $I1424, loop1449_done
   loop1449_redo:
-    .const 'Sub' $P1426 = "83_1258904207.27113" 
+    .const 'Sub' $P1426 = "83_1258923250.96098" 
     capture_lex $P1426
     $P1426()
   loop1449_next:
@@ -11153,7 +11375,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1425"  :anon :subid("83_1258904207.27113") :outer("82_1258904207.27113")
+.sub "_block1425"  :anon :subid("83_1258923250.96098") :outer("82_1258923250.96098")
 .annotate "line", 417
     new $P1427, "Undef"
     .lex "$ast", $P1427
@@ -11204,12 +11426,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "cclass_elem"  :subid("84_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "cclass_elem"  :subid("84_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1459
 .annotate "line", 430
-    .const 'Sub' $P1484 = "86_1258904207.27113" 
+    .const 'Sub' $P1484 = "86_1258923250.96098" 
     capture_lex $P1484
-    .const 'Sub' $P1468 = "85_1258904207.27113" 
+    .const 'Sub' $P1468 = "85_1258923250.96098" 
     capture_lex $P1468
     new $P1458, 'ExceptionHandler'
     set_addr $P1458, control_1457
@@ -11258,7 +11480,7 @@
     unless $P1478, loop1509_done
     shift $P1482, $P1478
   loop1509_redo:
-    .const 'Sub' $P1484 = "86_1258904207.27113" 
+    .const 'Sub' $P1484 = "86_1258923250.96098" 
     capture_lex $P1484
     $P1484($P1482)
   loop1509_next:
@@ -11282,7 +11504,7 @@
     goto if_1464_end
   if_1464:
 .annotate "line", 433
-    .const 'Sub' $P1468 = "85_1258904207.27113" 
+    .const 'Sub' $P1468 = "85_1258923250.96098" 
     capture_lex $P1468
     $P1468()
   if_1464_end:
@@ -11314,10 +11536,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1483"  :anon :subid("86_1258904207.27113") :outer("84_1258904207.27113")
+.sub "_block1483"  :anon :subid("86_1258923250.96098") :outer("84_1258923250.96098")
     .param pmc param_1485
 .annotate "line", 437
-    .const 'Sub' $P1491 = "87_1258904207.27113" 
+    .const 'Sub' $P1491 = "87_1258923250.96098" 
     capture_lex $P1491
     .lex "$_", param_1485
 .annotate "line", 438
@@ -11346,7 +11568,7 @@
 .annotate "line", 438
     goto if_1487_end
   if_1487:
-    .const 'Sub' $P1491 = "87_1258904207.27113" 
+    .const 'Sub' $P1491 = "87_1258923250.96098" 
     capture_lex $P1491
     $P1504 = $P1491()
     set $P1486, $P1504
@@ -11357,7 +11579,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1490"  :anon :subid("87_1258904207.27113") :outer("86_1258904207.27113")
+.sub "_block1490"  :anon :subid("87_1258923250.96098") :outer("86_1258923250.96098")
 .annotate "line", 439
     new $P1492, "Undef"
     .lex "$a", $P1492
@@ -11421,7 +11643,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1467"  :anon :subid("85_1258904207.27113") :outer("84_1258904207.27113")
+.sub "_block1467"  :anon :subid("85_1258923250.96098") :outer("84_1258923250.96098")
 .annotate "line", 434
     new $P1469, "Undef"
     .lex "$name", $P1469
@@ -11449,7 +11671,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "mod_internal"  :subid("88_1258904207.27113") :method :outer("11_1258904207.27113")
+.sub "mod_internal"  :subid("88_1258923250.96098") :method :outer("11_1258923250.96098")
     .param pmc param_1528
 .annotate "line", 468
     new $P1527, 'ExceptionHandler'

Modified: trunk/ext/nqp-rx/src/stage0/Regex-s0.pir
==============================================================================
--- trunk/ext/nqp-rx/src/stage0/Regex-s0.pir	Sun Nov 22 16:35:00 2009	(r42791)
+++ trunk/ext/nqp-rx/src/stage0/Regex-s0.pir	Sun Nov 22 21:02:11 2009	(r42792)
@@ -245,7 +245,10 @@
 
 .sub '!cursor_init' :method
     .param string target
-    .param int from            :named('from') :optional
+    .param int pos             :named('p') :optional
+    .param int has_pos         :opt_flag
+    .param int cont            :named('c') :optional
+    .param int has_cont        :opt_flag
 
     .local pmc parrotclass, cur
     $P0 = self.'HOW'()
@@ -256,10 +259,18 @@
     $P0 = target
     setattribute cur, '$!target', $P0
 
-    $P0 = box from
+    if has_cont goto cursor_cont
+    $P0 = box pos
     setattribute cur, '$!from', $P0
-    $P0 = box from
+    $P0 = box pos
     setattribute cur, '$!pos', $P0
+    goto cursor_done
+  cursor_cont:
+    $P0 = box CURSOR_FAIL
+    setattribute cur, '$!from', $P0
+    $P0 = box cont
+    setattribute cur, '$!pos', $P0
+  cursor_done:
 
     .return (cur)
 .end
@@ -295,7 +306,7 @@
     debug = getattribute self, '$!debug'
     setattribute cur, '$!debug', debug
 
-    .return (cur, from, target, from)
+    .return (cur, from, target)
 .end
 
 
@@ -2219,7 +2230,7 @@
     concat $S0, pos
     concat $S0, ', '
     concat $S0, tgt
-    concat $S0, ', $I10)'
+    concat $S0, ')'
     ops.'push_pirop'('callmethod', '"!cursor_start"', 'self', 'result'=>$S0)
     self.'!cursorop'(ops, '!cursor_debug', 0, '"START "', regexname_esc)
     unless caparray goto caparray_skip
@@ -2242,8 +2253,8 @@
     # operations on the resulting target relative to C<off>.
 
     ops.'push_pirop'('set', off, 0)
-    ops.'push_pirop'('lt', '$I10', 2, startlabel)
-    ops.'push_pirop'('sub', off, '$I10', 1, 'result'=>off)
+    ops.'push_pirop'('lt', pos, 2, startlabel)
+    ops.'push_pirop'('sub', off, pos, 1, 'result'=>off)
     ops.'push_pirop'('substr', tgt, tgt, off, 'result'=>tgt)
     ops.'push'(startlabel)
 
@@ -3088,19 +3099,24 @@
     .local pmc cur, pos, eos, ops
     (cur, pos, eos) = self.'!rxregs'('cur pos eos')
     ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
-    .local pmc looplabel, donelabel
+    .local pmc looplabel, scanlabel, donelabel
     $S0 = self.'unique'('rxscan')
     $S1 = concat $S0, '_loop'
     looplabel = self.'post_new'('Label', 'result'=>$S1)
+    $S1 = concat $S0, '_scan'
+    scanlabel = self.'post_new'('Label', 'result'=>$S1)
     $S1 = concat $S0, '_done'
     donelabel = self.'post_new'('Label', 'result'=>$S1)
 
-    ops.'push_pirop'('ge', pos, 0, donelabel)
+    ops.'push_pirop'('callmethod', "'from'", 'self', 'result'=>'$I10')
+    ops.'push_pirop'('ne', '$I10', CURSOR_FAIL, donelabel)
+    ops.'push_pirop'('goto', scanlabel)
     ops.'push'(looplabel)
     self.'!cursorop'(ops, 'from', 1, '$P10')
     ops.'push_pirop'('inc', '$P10')
     ops.'push_pirop'('set', pos, '$P10')
     ops.'push_pirop'('ge', pos, eos, donelabel)
+    ops.'push'(scanlabel)
     ops.'push_pirop'('set_addr', '$I10', looplabel)
     self.'!cursorop'(ops, '!mark_push', 0, 0, pos, '$I10')
     ops.'push'(donelabel)


More information about the parrot-commits mailing list