[svn:parrot] r48157 - in branches/gsoc_threads: . docs docs/project examples/languages/squaak examples/languages/squaak/doc examples/languages/squaak/src examples/languages/squaak/src/Squaak examples/languages/squaak/src/builtins examples/languages/squaak/src/parser ext/nqp-rx/src/stage0 include/parrot include/parrot/oplib lib/Parrot/Docs src/interp src/ops src/runcore t/native_pbc t/src tools/dev tools/util

Chandon at svn.parrot.org Chandon at svn.parrot.org
Wed Jul 21 04:47:37 UTC 2010


Author: Chandon
Date: Wed Jul 21 04:47:35 2010
New Revision: 48157
URL: https://trac.parrot.org/parrot/changeset/48157

Log:
[gsoc_threads] Merge from trunk.

Added:
   branches/gsoc_threads/examples/languages/squaak/PARROT_REVISION
      - copied unchanged from r48156, trunk/examples/languages/squaak/PARROT_REVISION
   branches/gsoc_threads/examples/languages/squaak/src/Squaak/
      - copied from r48156, trunk/examples/languages/squaak/src/Squaak/
   branches/gsoc_threads/examples/languages/squaak/src/squaak.pir
      - copied unchanged from r48156, trunk/examples/languages/squaak/src/squaak.pir
Replaced:
   branches/gsoc_threads/examples/languages/squaak/src/Squaak/Actions.pm
      - copied unchanged from r48156, trunk/examples/languages/squaak/src/Squaak/Actions.pm
   branches/gsoc_threads/examples/languages/squaak/src/Squaak/Compiler.pm
      - copied unchanged from r48156, trunk/examples/languages/squaak/src/Squaak/Compiler.pm
   branches/gsoc_threads/examples/languages/squaak/src/Squaak/Grammar.pm
      - copied unchanged from r48156, trunk/examples/languages/squaak/src/Squaak/Grammar.pm
   branches/gsoc_threads/examples/languages/squaak/src/Squaak/Runtime.pm
      - copied unchanged from r48156, trunk/examples/languages/squaak/src/Squaak/Runtime.pm
Deleted:
   branches/gsoc_threads/examples/languages/squaak/src/builtins/
   branches/gsoc_threads/examples/languages/squaak/src/parser/
Modified:
   branches/gsoc_threads/   (props changed)
   branches/gsoc_threads/CREDITS
   branches/gsoc_threads/ChangeLog
   branches/gsoc_threads/DEPRECATED.pod
   branches/gsoc_threads/MANIFEST
   branches/gsoc_threads/MANIFEST.generated
   branches/gsoc_threads/NEWS
   branches/gsoc_threads/PBC_COMPAT
   branches/gsoc_threads/README
   branches/gsoc_threads/VERSION
   branches/gsoc_threads/docs/parrothist.pod
   branches/gsoc_threads/docs/project/release_manager_guide.pod
   branches/gsoc_threads/examples/languages/squaak/MAINTAINER
   branches/gsoc_threads/examples/languages/squaak/README
   branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_1.pod
   branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_2.pod
   branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_3.pod
   branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_4.pod
   branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_5.pod
   branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_6.pod
   branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_7.pod
   branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_8.pod
   branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_9.pod
   branches/gsoc_threads/examples/languages/squaak/setup.pir
   branches/gsoc_threads/examples/languages/squaak/squaak.pir
   branches/gsoc_threads/ext/nqp-rx/src/stage0/HLL-s0.pir
   branches/gsoc_threads/ext/nqp-rx/src/stage0/NQP-s0.pir
   branches/gsoc_threads/ext/nqp-rx/src/stage0/P6Regex-s0.pir
   branches/gsoc_threads/include/parrot/oplib/core_ops.h
   branches/gsoc_threads/include/parrot/runcore_trace.h   (props changed)
   branches/gsoc_threads/lib/Parrot/Docs/HTMLPage.pm
   branches/gsoc_threads/src/interp/inter_create.c   (props changed)
   branches/gsoc_threads/src/ops/core_ops.c
   branches/gsoc_threads/src/runcore/cores.c   (props changed)
   branches/gsoc_threads/src/runcore/trace.c   (props changed)
   branches/gsoc_threads/t/native_pbc/annotations.pbc
   branches/gsoc_threads/t/native_pbc/integer.pbc
   branches/gsoc_threads/t/native_pbc/integer_1.pbc
   branches/gsoc_threads/t/native_pbc/number.pbc
   branches/gsoc_threads/t/native_pbc/number_1.pbc
   branches/gsoc_threads/t/native_pbc/string.pbc
   branches/gsoc_threads/t/native_pbc/string_1.pbc
   branches/gsoc_threads/t/src/embed.t   (props changed)
   branches/gsoc_threads/tools/dev/mk_gitignore.pl   (props changed)
   branches/gsoc_threads/tools/util/release.json

Modified: branches/gsoc_threads/CREDITS
==============================================================================
--- branches/gsoc_threads/CREDITS	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/CREDITS	Wed Jul 21 04:47:35 2010	(r48157)
@@ -1045,7 +1045,8 @@
 U: coke
 A: wcoleda
 E: will at coleda.com
-D: Tcl language (partcl), APL, website, various languages/ upkeep, misc.
+D: Tcl HLL implementation (partcl), APL, website,
+D: Release Manager, PaFo board member, curmudgeon
 
 N: Zach Lipton
 

Modified: branches/gsoc_threads/ChangeLog
==============================================================================
--- branches/gsoc_threads/ChangeLog	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/ChangeLog	Wed Jul 21 04:47:35 2010	(r48157)
@@ -1,5 +1,9 @@
 #1 $Id$
 
+2010.07.10     coke
+	* Released 2.6.0
+	See NEWS for more.
+
 2010.06.15     Gerd
 	* Released 2.5.0
 	See NEWS for more.

Modified: branches/gsoc_threads/DEPRECATED.pod
==============================================================================
--- branches/gsoc_threads/DEPRECATED.pod	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/DEPRECATED.pod	Wed Jul 21 04:47:35 2010	(r48157)
@@ -467,7 +467,7 @@
 
 L<https://trac.parrot.org/parrot/ticket/1598>
 
-=item LWP, HTTP::Message & URI [experimental]
+=item LWP, HTTP::Message, URI & URI::Escape [experimental]
 
 L<http://trac.parrot.org/parrot/ticket/1637>
 

Modified: branches/gsoc_threads/MANIFEST
==============================================================================
--- branches/gsoc_threads/MANIFEST	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/MANIFEST	Wed Jul 21 04:47:35 2010	(r48157)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Tue Jul  6 19:02:41 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Tue Jul 20 08:39:24 2010 UT
 #
 # See below for documentation on the format of this file.
 #
@@ -619,6 +619,7 @@
 examples/languages/abc/t/abc_special_variables              [examples]
 examples/languages/abc/t/abc_statement                      [examples]
 examples/languages/squaak/MAINTAINER                        [examples]
+examples/languages/squaak/PARROT_REVISION                   [examples]
 examples/languages/squaak/README                            [examples]
 examples/languages/squaak/doc/tutorial_episode_1.pod        [examples]
 examples/languages/squaak/doc/tutorial_episode_2.pod        [examples]
@@ -633,9 +634,11 @@
 examples/languages/squaak/examples/life.sq                  [examples]
 examples/languages/squaak/setup.pir                         [examples]
 examples/languages/squaak/squaak.pir                        [examples]
-examples/languages/squaak/src/builtins/say.pir              [examples]
-examples/languages/squaak/src/parser/actions.pm             [examples]
-examples/languages/squaak/src/parser/grammar.pg             [examples]
+examples/languages/squaak/src/Squaak/Actions.pm             [examples]
+examples/languages/squaak/src/Squaak/Compiler.pm            [examples]
+examples/languages/squaak/src/Squaak/Grammar.pm             [examples]
+examples/languages/squaak/src/Squaak/Runtime.pm             [examples]
+examples/languages/squaak/src/squaak.pir                    [examples]
 examples/languages/squaak/t/00-sanity.t                     [examples]
 examples/languages/squaak/t/01-math.t                       [examples]
 examples/library/acorn.life                                 [examples]

Modified: branches/gsoc_threads/MANIFEST.generated
==============================================================================
--- branches/gsoc_threads/MANIFEST.generated	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/MANIFEST.generated	Wed Jul 21 04:47:35 2010	(r48157)
@@ -2,11 +2,11 @@
 # See tools/dev/install_files.pl for documentation on the
 # format of this file.
 # Please re-sort this file after *EVERY* modification
-blib/lib/libparrot.2.5.0.dylib                   [main]lib
+blib/lib/libparrot.2.6.0.dylib                   [main]lib
 blib/lib/libparrot.a                             [main]lib
 blib/lib/libparrot.dylib                         [main]lib
 blib/lib/libparrot.so                            [main]lib
-blib/lib/libparrot.so.2.5.0                      [main]lib
+blib/lib/libparrot.so.2.6.0                      [main]lib
 compilers/data_json/data_json.pbc                [data_json]
 config/gen/call_list/opengl.in                   []
 docs/ops/bit.pod                                 [doc]

Modified: branches/gsoc_threads/NEWS
==============================================================================
--- branches/gsoc_threads/NEWS	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/NEWS	Wed Jul 21 04:47:35 2010	(r48157)
@@ -1,9 +1,22 @@
 # $Id$
 
 New in 2.6.0
+- Core
+  + Plug some memory leaks
+  + As always, bug fixes and some optimizations
+- Runtime
+  + added (experimental) URI::Escape 
+- Testing
+  + Improved test coverage of core parrot
+- Documentation
+  + Updated the Squaak tutorial to use modern NQP-rx and PCT
 - Platforms
   + The Fedora package 'parrot-devel' install the files for syntax-highlighting
-    and automatic indenting for the vim editor.
+    and automatic indenting for the vim editor
+- NQP-rx 
+  + Updated version included from http://github.com/perl6/nqp-rx includes
+    new or improved: regex backtracking, named assertions, interactive mode,
+    and setting (a minimal but useful runtime library)
 
 New in 2.5.0
 - Core

Modified: branches/gsoc_threads/PBC_COMPAT
==============================================================================
--- branches/gsoc_threads/PBC_COMPAT	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/PBC_COMPAT	Wed Jul 21 04:47:35 2010	(r48157)
@@ -28,22 +28,8 @@
 
 # please insert tab separated entries at the top of the list
 
-6.22	2010.07.02	Chandon	add PMCList, Alarm, and Callback PMCs
-6.21	2010.06.09	NotFound	add ByteBuffer PMC
-6.20	2010.05.29	plobsing	eliminate unused fixup type 'label'
-6.19	2010.05.27	plobsing	removed numerous core ops (TT #449)
-6.18	2010.05.25	cotto	removed ops.num
-6.17	2010.05.20	NotFound	store encoding of string constants
-6.16	2010.05.18	plobsing	move freeze/thaw adjacent to visit
-6.15	2010.05.06	bacek	add StringBuilder PMC
-6.14	2010.05.03	coke	remove popaction, pushmark, pushaction ops.
-6.13	2010.05.03	coke	move File/OS pmcs to src/dynpmc
-6.12	2010.05.02	plobsing	store constant PMC strings as top level constant strings    
-6.11	2010.04.29	tewk	remove ParrotRunningThread
-6.10	2010.04.29	NotFound	packfiledebug.pmc
-6.9	2010.04.27	bacek	remove deprecated in-place string ops (bitwise, charset, case change)
-6.8	2010.04.27	bacek	remove deprecated in-place substr ops
-6.7	2010.04.22	coke	remove RetContinuation PMC
+8.0	2010.07.20	coke	released 2.6.0
+7.0	2010.04.20	gerd	released 2.3.0 (version # added ex post facto, as all previous version #s were published)
 6.6	2010.04.17	bacek	add replace op
 6.5	2010.03.09	cotto	remove cpu_ret op
 6.4	2010.03.02	cotto	remove prederef__ and reserved

Modified: branches/gsoc_threads/README
==============================================================================
--- branches/gsoc_threads/README	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/README	Wed Jul 21 04:47:35 2010	(r48157)
@@ -1,4 +1,4 @@
-This is Parrot, version 2.5.0
+This is Parrot, version 2.6.0
 ------------------------------
 
 Parrot is Copyright (C) 2001-2010, Parrot Foundation.

Modified: branches/gsoc_threads/VERSION
==============================================================================
--- branches/gsoc_threads/VERSION	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/VERSION	Wed Jul 21 04:47:35 2010	(r48157)
@@ -1 +1 @@
-2.5.0
+2.6.0

Modified: branches/gsoc_threads/docs/parrothist.pod
==============================================================================
--- branches/gsoc_threads/docs/parrothist.pod	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/docs/parrothist.pod	Wed Jul 21 04:47:35 2010	(r48157)
@@ -111,4 +111,6 @@
  Whiteknight 2.4.0          2010-May-18     "Sulfer Crest"
  Gerd        2.5.0          2010-Jun-15     "Cheops"
 
+ coke        2.6.0 *        2010-Jul-20     "Red-rumped"
+
 =cut

Modified: branches/gsoc_threads/docs/project/release_manager_guide.pod
==============================================================================
--- branches/gsoc_threads/docs/project/release_manager_guide.pod	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/docs/project/release_manager_guide.pod	Wed Jul 21 04:47:35 2010	(r48157)
@@ -150,7 +150,8 @@
 policy. (Those changes are all included within the major version number
 increase for the supported release.)
 
-Once you've updated PBC_COMPAT, run C<sh tools/dev/mk_native_pbc> to update the
+Once you've updated PBC_COMPAT, running C<sh tools/dev/mk_packfile_pbc> if
+necessary, then run C<sh tools/dev/mk_native_pbc> to update the
 pbc files used in the native pbc tests.  Note that you must have Parrot already
 built for this to work, and that this script will reconfigure and rebuild
 Parrot with various primitive size options.
@@ -261,6 +262,9 @@
 bad idea to add a "highlights" section to draw attention to major new
 features, just be sure to say the same thing in both text and HTML versions.
 
+Be sure to include the SHA1 sums of the tarballs in the release announcement;
+They're automatically generated by C<make release>.
+
 =item 10.
 
 Update the website. You will need an account with editor rights
@@ -409,7 +413,6 @@
 visible at
 L<http://www.google.com/calendar/render?cid=ldhctdamsgfg5a1cord52po9h8@group.calendar.google.com>.
 
- - Jul 20, 2010 - 2.6*  - coke
  - Aug 17, 2010 - 2.7   - mikehh
  - Sep 21, 2010 - 2.8   - gerd
  - Oct 19, 2010 - 2.9*  - ??

Modified: branches/gsoc_threads/examples/languages/squaak/MAINTAINER
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/MAINTAINER	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/MAINTAINER	Wed Jul 21 04:47:35 2010	(r48157)
@@ -1,4 +1,5 @@
 # $Id$
 
-N: Klaas-Jan Stol (kj,kjs)
-E: parrotcode at gmail dot com
+N: Tyler Curtis
+U: tcurtis
+E: tyler.l.curtis at gmail.com
\ No newline at end of file

Copied: branches/gsoc_threads/examples/languages/squaak/PARROT_REVISION (from r48156, trunk/examples/languages/squaak/PARROT_REVISION)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_threads/examples/languages/squaak/PARROT_REVISION	Wed Jul 21 04:47:35 2010	(r48157, copy of r48156, trunk/examples/languages/squaak/PARROT_REVISION)
@@ -0,0 +1 @@
+47087

Modified: branches/gsoc_threads/examples/languages/squaak/README
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/README	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/README	Wed Jul 21 04:47:35 2010	(r48157)
@@ -1,51 +1,5 @@
-Squaak: A Simple Language
-
-Squaak is a case-study language described in the Parrot Compiler Tools
-tutorial at http://www.parrotblog.org/2008/03/targeting-parrot-vm.html.
-
-Note that Squaak is NOT an implementation Squeak; it has nothing to do
-with any SmallTalk implementation.
-
-Squaak demonstrates some common language constructs, but at the same
-time is currently lacking some other, seemingly simple features. For instance,
-Squaak does not have break or continue statements (or equivalents
-in your favorite syntax). Once PCT has built-in support for these, they
-will be added.
-
-Squaak has the following features:
-
-   * global and local variables
-   * basic types: integer, floating-point and strings
-   * aggregate types: arrays and hash tables
-   * operators: +, -, /, *, %, <, <=, >, >=, ==, !=, .., and, or, not
-   * subroutines and parameters
-   * assignments and various control statements, such as "if" and "while" and "return"
-   * library functions: print, read
-
-A number of common (more advanced) features are missing.
-Most notable are:
-
-   * classes and objects
-   * exceptional control statements such as break and continue
-   * advanced control statements such as switch
-   * closures (nested subroutines and accessing local variables in an outer scope)
-
-Squaak is designed to be a simple showcase language, to show the use of the
-Parrot Compiler Tools for implementing a language.
-
-In order to use Squaak:
-
- $ make
-
-Running Squaak in interactive mode:
-
- $ ../../parrot squaak.pbc
-
-Running Squaak with a file (for instance, the included Game of Life example):
-
- $ ../../parrot squaak.pbc examples/life.sq
-
-Bug reports and improvements can be sent to the maintainer or Parrot porters
-mailing list.
+Language 'Squaak' was created with tools/dev/mk_language_shell.pl, r47087.
 
+    $ parrot setup.pir
+    $ parrot setup.pir test
 

Modified: branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_1.pod
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_1.pod	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_1.pod	Wed Jul 21 04:47:35 2010	(r48157)
@@ -99,36 +99,29 @@
 
 =over 4
 
-=item B<P>arrot B<G>rammar B<E>ngine (PGE).
+=item B<N>ot B<Q>uite B<P>erl (6) (NQP-rx).
 
-The PGE is an advanced engine for regular expressions. Besides regexes as found
-in Perl 5, it can also be used to define language grammars, using Perl 6 syntax.
-(Check the references for the specification.)
+NQP is a lightweight language inspired by Perl 6 and can be used to write the
+methods that must be executed during the parsing phase, just as you can write
+actions in a Yacc/Bison input file. It also provides the regular expression engine we'll use to 
+write our grammar. In addition to the capabilities of Perl 5's regexes, the Perl 6 regexes that NQP
+ implements can be used to define language grammars. (Check the references for the specification.)
 
 =item B<P>arrot B<A>bstract B<S>yntax B<T>ree (PAST).
 
 The PAST nodes are a set of classes defining generic abstract syntax tree nodes
 that represent common language constructs.
 
-=item HLLCompiler class.
+=item HLL::Compiler class.
 
 This class is the compiler driver for any PCT-based compiler.
 
-=item B<N>ot B<Q>uite B<P>erl (6) (NQP).
-
-NQP is a lightweight language inspired by Perl 6 and can be used to write the
-methods that must be executed during the parsing phase, just as you can write
-actions in a Yacc/Bison input file.
-
 =back
 
 =head2 Getting Started
 
 For this tutorial, it is assumed you have successfully compiled parrot
-(and maybe even run the test suite). If you browse through the languages
-directory in the Parrot source tree, you'll find a number of language
-implementations. Most of them are not complete yet; some are maintained
-actively and others aren't. If, after reading this tutorial, you feel like
+(and maybe even run the test suite). If, after reading this tutorial, you feel like
 contributing to one of these languages, you can check out the mailing list or
 join IRC (see the references section for details).
 
@@ -137,13 +130,13 @@
 language implementation. In order to generate these files for our language,
 type (assuming you're in Parrot's root directory):
 
- $ perl tools/dev/mk_language_shell.pl Squaak languages/squaak
+ $ perl tools/dev/mk_language_shell.pl Squaak ~/src/squaak
 
 (Note: if you're on Windows, you should use backslashes.) This will generate the
-files in a directory F<languages/squaak>, and use the name Squaak as the language's
+files in a directory F<~/src/squaak>, and use the name Squaak as the language's
 name.
 
-After this, go to the directory F<languages/squaak> and type:
+After this, go to the directory F<~/src/squaak> and type:
 
  $ parrot setup.pir test
 
@@ -165,20 +158,22 @@
 
 Save it the as file F<test.sq> and type:
 
- $ ../../parrot squaak.pbc test.sq
+ $ ./installable_squaak test.sq
 
+"installable_squaak" is a "fake-cutable" an executable that bundles the Parrot interpreter and the
+compiled bytecode for a program to allow treating a Parrot program as a normal executable program.
 This will run Parrot, specifying squaak.pbc as the file to be run by Parrot,
 which takes a single argument: the file test.sq. If all went well, you should
 see the following output:
 
- $ ../../parrot squaak.pbc test.sq
+ $ ./installable_squaak test.sq
  Squaak!
 
 Instead of running a script file, you can also run the Squaak compiler as an
 interactive interpreter. Run the Squaak compiler without specifying a script
 file, and type the same statement as you wrote in the file:
 
- $ ../../parrot squaak.pbc
+ $ ./installable_squaak
  say "Squaak!";
 
 which will print:
@@ -191,7 +186,7 @@
 coming. Hopefully you now have a global idea of what the Parrot Compiler Tools
 are, and how they can be used to build a compiler targeting Parrot. If you want
 to check out some serious usage of the PCT, check out Rakudo (Perl 6 on Parrot)
-in languages/perl6 or Pynie (Python on Parrot) in languages/pynie.
+at http://rakudo.org/ or Pynie (Python on Parrot) at http://code.google.com/p/pynie/ .
 
 The next episodes will focus on the step-by-step implementation of our language,
 including the following topics:
@@ -200,7 +195,7 @@
 
 =item structure of PCT-based compilers
 
-=item using PGE rules to define the language grammar
+=item using NQP-rx rules to define the language grammar
 
 =item implementing operator precedence using an operator precedence table
 
@@ -223,8 +218,8 @@
 
 =head3 Advanced interactive mode.
 
-Launch your favorite editor and look at the file squaak.pir in the directory
-languages/squaak. This file contains the main function (entry point) of the
+Launch your favorite editor and look at the file Compiler.pm in the directory
+F<~/src/squaak/src/Squaak/>. This file contains the main function (entry point) of the
 compiler. The class HLLCcompiler defines methods to set a command-line banner
 and prompt for your compiler when it is running in interactive mode. For
 instance, when you run Python in interactive mode, you'll see:
@@ -242,19 +237,19 @@
 running in interactive mode (of course you can change this according to your
 personal taste):
 
- $ ../../parrot squaak.pbc
+ $ ./installable_squaak
  Squaak for Parrot VM.
  >
 
 Add code to the file squaak.pir to achieve this.
 
-Hint 1: Look in the onload subroutine.
+Hint 1: Look in the INIT block.
 
-Hint 2: Note that only double-quoted strings in PIR can interpret
+Hint 2: Note that only double-quoted strings in NQP can interpret
 escape-characters such as '\n'.
 
 Hint 3: The functions to do this are documented in
-compilers/pct/src/PCT/HLLCompiler.pir.
+F<compilers/pct/src/PCT/HLLCompiler.pir>.
 
 =head2 References
 
@@ -270,7 +265,7 @@
 
 =item * Operator Precedence Parsing with PCT: docs/pct/pct_optable_guide.pod
 
-=item * Perl 6/PGE rules syntax: Synopsis 5
+=item * Perl 6/NQP rules syntax: Synopsis 5 at http://perlcabal.org/syn/S05.html or http://svn.pugscode.org/pugs/docs/Perl6/Spec/S05-regex.pod
 
 =back
 

Modified: branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_2.pod
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_2.pod	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_2.pod	Wed Jul 21 04:47:35 2010	(r48157)
@@ -24,7 +24,7 @@
 compiler enters the interactive mode. Consider the first case, passing the file
 test.sq, just as we did before:
 
- $ ../../parrot squaak.pbc test.sq
+ $ ./installable_squeak test.sq
 
 When invoking our compiler like this, the file test.sq is compiled and the
 generated code (bytecode) is executed immediately by Parrot. How does this work,
@@ -50,7 +50,7 @@
 This is an example of using the target option set to "parse", which will print
 the parse tree of the input to stdout:
 
- $ ../../parrot squaak.pbc --target=parse test.sq
+ $ ./installable_squeak --target=parse test.sq
 
 In interactive mode, giving this input:
 
@@ -58,24 +58,32 @@
 
 will print this parse tree (without the line numbers):
 
-  1 "parse" => PMC 'Squaak::Grammar' => "say 42;\r\n" @ 0 {
-  2    <statement> => ResizablePMCArray (size:1) [
-  3        PMC 'Squaak::Grammar' => "say 42;\r\n" @ 0 {
-  4            <value> => ResizablePMCArray (size:1) [
-  5                PMC 'Squaak::Grammar' => "42" @ 4 {
-  6                    <integer> => PMC 'Squaak::Grammar' => "42" @ 4
-  7                }
-  8            ]
-  9        }
- 10    ]
- 11 }
+  1 "parse" => PMC 'Regex;Match' => "say 42;\n" @ 0 {
+  2    <statementlist> => PMC 'Regex;Match' => "say 42;\n" @ 0 {
+  3         <statement> => ResizablePMCArray (size:1) [
+  4             PMC 'Regex;Match' => "say 42" @ 0 {
+  5                 <statement_control> => PMC 'Regex;Match' => "say 42" @ 0 {
+  6                     <sym> => PMC 'Regex;Match' => "say" @ 0
+  7                     <EXPR> => ResizablePMCArray (size:1) [
+  8                         PMC 'Regex;Match' => "42" @ 4 {
+  9                             <integer> => PMC 'Regex;Match' => "42" @ 4 {
+ 10                                 <VALUE> => PMC 'Regex;Match' => "42" @ 4
+ 11                                 <decint> => \parse[0][0]
+ 12                             }
+ 13                         }
+ 14                     ]
+ 15                 }
+ 16             }
+ 17         ]
+ 18     }
+ 19 }
 
 When changing the value of the target option, the output changes into a
 different representation of the input. Why don't you try that right now?
 
 So, a HLLCompiler object has four compilation phases: parsing, construction of a
 Parrot Abstract Syntax Tree (PAST), construction of a Parrot Opcode Syntax Tree
-(POST), generation of Parrot Intermediate Representation (PIR). After
+(POST) and generation of Parrot Intermediate Representation (PIR). After
 compilation, the generated PIR is executed immediately.
 
 If your compiler needs additional stages, you can add them to your HLLCompiler
@@ -89,58 +97,55 @@
 Parse phase: match objects and PAST construction
 During the parsing phase, the input is analyzed using Perl 6's extended regular
 expressions, known as Rules (see Synopsis 5 for details). When a rule matches
-some input string, a so-called Match object is created. A Match object is a
-combined array and hashtable, implying it can be indexed by integers as well as
+some input string, a Match object is created. A Match object is a
+combined array and hashtable and can be indexed by integers as well as
 strings. As rules typically consist of other (sub) rules, it is easy to retrieve
 a certain part of the match. For instance, this rule:
 
  rule if_statement {
      'if' <expression> 'then' <statement> 'end'
-     {*}
  }
 
 has two other subrules: expression and statement. The match object for the rule
-if_statement represents the whole string from if to end. When you're interested
-only in the expression or statement part, you can retrieve that by indexing the
-match object by the name of the subrule (in this case, expression and statement,
-respectively).
+C<if_statement> represents the whole string from if to end.  You can retrieve a
+the Match for a subrule by indexing into the Match object using the name of
+that subrule.  For instance, to get the match for C<< <expression> >>, you
+would use C<< $/<expression> >>.  (In nqp, C<< $foo<bar> >> indexes into
+C<$foo> using the constant string C<bar> as a hash key.)
 
 During the parse phase, the PAST is constructed. There is a small set of PAST
-node types, for instance, C<PAST::Var> to represent variables (identifiers, such
-as C<print>), C<PAST::Val> to represent literal values (for instance, C<"hello">
-and C<42>), and so on. Later we shall discuss the various PAST nodes in more
-detail.
+node types. For instance, C<PAST::Var> to represent variables (identifiers, such
+as C<print>) and C<PAST::Val> to represent literal values (for instance, C<"hello">
+and C<42>). Later we'll go through the various PAST nodes in more detail.
 
 Now, you might wonder, at which point exactly is this PAST construction
-happening? This is where the special {*} symbol comes in, just below the string
-'if' in the if_statement rule shown above. These special markers indicate that a
-parse action should be invoked. Such a parse action is just a method that has
-the same name as the rule in which it is written (in this case: if_statement).
-So, during the parsing phase, several parse actions are executed, each of which
-builds a piece of the total PAST representing the input string. More on this
-will be explained later.
-
-The Parrot Abstract Syntax Tree is just a different representation of the same
-input string (your program being compiled). It is a convenient data structure to
-transform into something different (such as executable Parrot code) but also to
-do all sorts of analysis, such as compile-time type checking.
+happening? At the end of a successfully matching rule, the rule's parse action
+is performed. Such a parse action is just a method that has the same name as
+the rule which triggers it (in this case: C<if_statement>).  So, during the
+parsing phase, several parse actions are executed, each of which builds a piece
+of the total PAST representing the input string.
+
+A Parrot Abstract Syntax Tree is just a compiler-friendly tree-based
+representation of your program. It is convenient both for analysis and
+optimization, and for further transformation into a lower-level representation
+such as POST.
 
 =head2 PAST to POST
 
-After the parse phase during which the PAST is constructed, the HLLCompiler
-transforms this PAST into something called a Parrot Opcode Syntax Tree (POST).
-The POST representation is also a tree structure, but these nodes are on a lower
-abstraction level. For instance, on the PAST level there is a node type to
-represent a while statement (constructed as
-C<PAST::Op.new( :pasttype('while') )> ).
+After the PAST is constructed, the HLLCompiler transforms this PAST into a
+Parrot Opcode Syntax Tree (POST).  The POST representation is also a tree
+structure, but these nodes are on a lower abstraction level and correspond very
+closely to PIR ops.  For instance, the PAST node type which represents a while
+statement (constructed as C<PAST::Op.new( :pasttype('while') )> ) decomposes
+into several POST nodes.
 
-The template for a while statement typically consists of a number of labels and
+The template for a C<while> statement typically consists of a number of labels and
 jump instructions. On the POST level, the same while statement is represented by
-a set of nodes, each representing a one instruction or a label. Therefore, it is
-much easier to transform a POST into something executable than when this is done
-from the PAST level.
+a set of nodes, each representing a one instruction or a label. This makes it
+much easier to transforn POST into executable code.
+
 Usually, as a user of the PCT, you don't need to know details of POST nodes,
-which is why this will not be discussed in further detail. Use the target option
+which is why this will not be discussed in further detail. Use C<--target=post>
 to see what a POST looks like.
 
 =head2 POST to PIR
@@ -168,34 +173,35 @@
 
 =back
 
-where we noted that the first two are done during the parse stage. Now, as
-you're reading this tutorial, you're probably interested in using the PCT for
-implementing Your Favorite Language for Parrot. We already saw that a language
-grammar is expressed in Perl 6 Rules. What about the other transformations?
-Well, earlier in this episode we mentioned the term parse actions, and that
-these actions create PAST nodes. After you have written a parse action for each
-grammar rule, you're done!
+The first two transformations happen during the parse stage. Now, as you're
+reading this tutorial, you're probably interested in using the PCT to implement
+Your Favorite Language on top of Parrot. We already saw that a language grammar
+is expressed in Perl 6 Rules. What about the other transformations?  Well,
+earlier in this episode we mentioned parse actions and that these actions
+create PAST nodes. After you have written a parse action for each grammar rule,
+you're done!
 
 Say what?
 
 That's right. Once you have correctly constructed a PAST, your compiler can
 generate executable PIR, which means you just implemented your first language
-for Parrot. Of course, you still need to implement any language specific
-libraries, but that's besides the point.
+on top of Parrot. Of course, you'll still need to implement any language specific
+libraries, but that's beside the point.
 
-PCT-based compilers already know how to transform a PAST into a POST, and how to
-transform a POST into PIR. These transformation stages are already provided by
+PCT-based compilers already know how to transform PAST into POST and how to
+transform POST into PIR. These transformation stages are already provided by
 the PCT.
 
 =head2 What's next?
 
 In this episode we took a closer look at the internals of a PCT-based compiler.
-We discussed the four compilation stages, that transform an input string (a
-program, or script, depending on your definition) into a PAST, a POST and
-finally executable PIR.
+We discussed the four compilation stages which transform an input string (a
+program or script, depending on your definition) into PAST, POST and finally
+executable PIR.
+
 The next episodes is where the Fun Stuff is: we will be implementing Squaak for
 Parrot. Piece by piece, we will implement the parser and the parse actions.
-Finally, we shall demonstrate John Conway's "Game of Life" running on Parrot,
+Finally, we'll demonstrate John Conway's "Game of Life" running on Parrot,
 implemented in Squaak.
 
 =head2 Exercises
@@ -203,27 +209,22 @@
 Last episode's exercise was to add a command line banner and prompt for the
 interactive mode of our compiler. Given the hints that were provided, it was
 probably not too hard to find the solution, which is shown below. This
-subroutine onload can be found in the file Squaak.pir. The relevant lines are
+INIT block can be found in the file src/Squaak/Compiler.pm. The relevant lines are
 marked with a comment
 
-  .sub 'onload' :anon :load :init
-      load_bytecode 'PCT.pbc'
-
-      $P0 = get_hll_global ['PCT'], 'HLLCompiler'
-      $P1 = $P0.'new'()
-      $P1.'language'('Squaak')
-      $P1.'parsegrammar'('Squaak::Grammar')
-      $P1.'parseactions'('Squaak::Grammar::Actions')
-
-      $P1.'commandline_banner'("Squaak for Parrot VM\n") ## set banner
-      $P1.'commandline_prompt'('> ')                     ## set prompt
-
-  .end
+  INIT {
+      Squaak::Compiler.language('Squaak');
+      Squaak::Compiler.parsegrammar(Squaak::Grammar);
+      Squaak::Compiler.parseactions(Squaak::Actions);
+
+      Squaak::Compiler.commandline_banner("Squaak for Parrot VM.\n"); # set banner
+      Squaak::Compiler.commandline_prompt('> '); # set prompt
+  }
 
 Starting in the next episode, the exercises will be more interesting. For now,
 it would be useful to browse around through the source files of the compiler,
-and see if you understand the relation between the grammar rules in grammar.pg
-and the methods in actions.pm.
+and see if you understand the relation between the grammar rules in src/Squaak/Grammar.pm
+and the methods in src/Squaak/Actions.pm.
 It's also useful to experiment with the --target option described in this
 episode. If you don't know PIR, now is the time to do some preparation for that.
 There's sufficient information to be found on PIR, see the References section
@@ -236,10 +237,7 @@
 
 =item 1. PIR language specification: docs/pdds/draft/PDD19_pir.pod
 
-=item 2. PIR articles: docs/art/*.pod
-
 =back
 
-
 =cut
 

Modified: branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_3.pod
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_3.pod	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_3.pod	Wed Jul 21 04:47:35 2010	(r48157)
@@ -10,11 +10,10 @@
 language called I<Squaak>, using a Perl script provided with Parrot. We
 discussed the general structure of PCT-based compilers, and each of the default
 four transformation phases.
-This third episode is where the Fun begins. In this episode, we shall introduce
-the full specification of Squaak. In this and following episodes, we will
-implement this specification step by step, in small increments that are easy to
-digest. Once you get a feel for it, you'll notice implementing Squaak is almost
-trivial, and most important, a lot of fun! So, let's get started!
+This third episode is where the Fun begins. In this episode, we'll introduce
+the full specification of Squaak. In this and following episodes, we'll
+implement this specification step by step in small easy-to-digest increments.
+So let's get started!
 
 =head2 Squaak Grammar
 
@@ -26,7 +25,7 @@
     [step]      indicates an optional step
     'do'        indicates the keyword 'do'
 
-Below is Squaak's grammar. The start symbol is program.
+Below is Squaak's grammar. The start symbol is C<program>.
 
     program              ::= {stat-or-def}
 
@@ -123,66 +122,66 @@
 "real world" languages such as C, not to mention Perl 6. No worries though, we
 won't implement the whole thing at once, but in small steps. What's more, the
 exercises section contains enough exercises for you to learn to use the PCT
-yourself! The solutions to these exercises will be posted a few days later (but
-you really only need a couple of hours to figure them out).
+yourself! The solutions to these exercises are in later episodes if you don't
+want to take the time to solve them yourself.
 
 =head2 Semantics
 
-Most of the Squaak language is straightforward; the if-statement executes
+Most of the Squaak language is straightforward; the C<if-statement> executes
 exactly as you would expect. When we discuss a grammar rule (for its
-implementation), a semantic specification will be included. This is to prevent
-myself from writing a complete language manual, which could take some pages.
-
-=head2 Interactive Squaak
-
-Although the Squaak compiler can be used in interactive mode, there is one point
-of attention to be noted. When defining a local variable using the C<var>
-keyword, this variable will be lost in any consecutive commands. The variable
-will only be available to other statements within the same command (a command is
-a set of statements before you press enter). This has to do with the code
-generation by the PCT, and will be fixed at a later point. For now, just
-remember it doesn't work.
+implementation), a semantic specification will be included. This is to avoid
+writing a complete language manual since that's probably not what you're here
+for.
 
 =head2 Let's get started!
 
 In the rest of this episode we will implement the basic parts of the grammar,
 such as the basic data types and assignments. At the end of this episode,
-you'll be able to assign simple values to (global) variables. It ain't much, but
+you'll be able to assign simple values to (global) variables. It's not much but
 it's a very important first step. Once these basics are in place, you'll notice
-that adding a certain syntactic construct becomes a matter of minutes.
+that adding a certain syntactic construct can be done in a matter of minutes.
 
-First, open your editor and open the files F<src/parser/grammar.pg> and
-F<src/parser/actions.pm>. The former implements the parser using Perl 6 rules,
+First, open your editor and open the files F<src/Squaak/Grammar.pm> and
+F<src/Squaak/Actions.pm>. The former implements the parser using Perl 6 rules
 and the latter contains the parse actions, which are executed during the parsing
 stage.
 
-In the file grammar.pg, you'll see the top-level rule, named C<TOP>. It's
+In the file Grammar.pm you'll see the top-level rule, named C<TOP>. It's
 located at, ehm... the top. When the parser is invoked, it will start at this
-rule (a rule is nothing else than a method of the grammar class).
-When we generated this language (in the first episode), some default rules were
-defined. Now we're going to make some small changes, just enough to get us
-started. Firstly, change the statement rule to this:
+rule.  A rule is nothing else than a method of the Grammar class.  When we
+generated this language some default rules were defined. Now we're going to
+make some small changes, just enough to get us started. Replace the
+C<statement> rule with this rule:
 
     rule statement {
         <assignment>
-        {*}
     }
 
-and add these rules:
+Replace the statementlist rule with this:
+
+    rule statement_list {
+        <stat_or_def>*
+    }
+
+When you work on the action methods later, you'll also want to replace $<statement> in the action
+method with $<stat_or_def>
+
+Add these rules:
+
+    rule stat_or_def {
+        <statement>
+    }
 
     rule assignment {
-        <primary> '=' <expression>
-        {*}
+        <primary> '=' <EXPR>
     }
 
     rule primary {
         <identifier>
-        {*}
     }
 
     token identifier {
         <!keyword> <ident>
-        {*}
     }
 
     token keyword {
@@ -190,15 +189,33 @@
         |'not'|'or'   |'sub'  |'throw'|'try' |'var'|'while']>>
     }
 
-Now, change the rule "value" into this (renaming to "expression"):
+    token term:sym<primary> {
+        <primary>
+    }
+
+Rename the token C<< term:sym<integer> >> to C<< term:sym<integer_constant> >> and
+C<< term:sym<quote> >> to C<< term:sym<string_constant> >> (to better match our
+language specification).
+
+Add action methods for term:sym<integer_constant> and term:sym<string_constant>
+to F<src/Squaak/Actions.pm>:
 
-    rule expression {
-        | <string_constant> {*}        #= string_constant
-        | <integer_constant> {*}       #= integer_constant
+    method term:sym<integer_constant>($/) {
+        make PAST::Val.new(:value($<integer>.ast), :returns<Integer>);
+    }
+    method term:sym<string_constant>($/) {
+        my $past := $<quote>.ast;
+        $past.returns('String');
+        make $past;
     }
+    method term:sym<primary>($/) {
+        make $<primary>.ast;
+    }
+
+PAST::Val nodes are used the represent constant values.
 
-Rename the rule C<integer> as C<integer_constant>, and C<quote> as
-C<string_constant> (to better match our language specification).
+Finally, remove the rules C<proto token statement_control>,
+C<< rule statement_control:sym<say> >>, and C<< rule statement_control:sym<print> >>.
 
 Phew, that was a lot of information! Let's have a closer look at some things
 that may look unfamiliar. The first new thing is in the rule C<identifier>.
@@ -206,16 +223,21 @@
 doesn't skip whitespace between the different parts specified in the token,
 while a rule does. For now, it's enough to remember to use a token if you want
 to match a string that doesn't contain any whitespace (such as literal constants
-and identifiers), and use a rule if your string does (and should) contain
+and identifiers) and use a rule if your string does (and should) contain
 whitespace (such as a an if-statement). We shall use the word C<rule> in a
 general sense, which could refer to a token. For more information on rules and
-tokens (and there's a third type, called C<regex>), take a look at synopsis 5.
+tokens take a look at Synopsis 5 or look at Moritz's blog post on the subject
+in the references.
 
-In token C<identifier>, the first subrule is called an assertion. It asserts
-that an C<identifier> does not match the rule keyword. In other words, a keyword
-cannot be used as an identifier. The second subrule is called C<ident>, which is
-a built-in rule in the class C<PCT::Grammar>, of which this grammar is a
-subclass.
+In rule C<assignment>, the <EXPR> subrule is one that we haven't defined. The
+EXPR rule is inherited from HLL::Grammar, and it initiates the grammar's
+operator-precedence parser to parse an expression. For now, don't worry about
+it. All you need to know is that it will give us one of our terms.
+
+In token C<identifier> the first subrule is called an assertion. It asserts
+that an C<identifier> does not match the rule keyword. In other words a keyword
+cannot be used as an identifier. The second subrule is called C<ident> which is
+a built-in rule in the class C<PCT::Grammar>, the parent class of this grammar.
 
 In token C<keyword>, all keywords of Squaak are listed. At the end there's a
 C<<< >> >>> marker, which indicates a word boundary. Without this marker, an
@@ -225,18 +247,6 @@
 matched), the string "forloop" cannot be matched as an identifier. The required
 presence of the word boundary prevents this.
 
-The last rule is C<expression>. An expression is either a string-constant or an
-integer-constant. Either way, an action is executed. However, when the action is
-executed, it does not know what the parser matched; was it a string-constant, or
-an integer-constant? Of course, the match object can be checked, but consider
-the case where you have 10 alternatives, then doing 9 checks only to find out
-the last alternative was matched is somewhat inefficient (and adding new
-alternatives requires you to update this check). That's why you see the special
-comments starting with a "#=" character. Using this notation, you can specify a
-key, which will be passed as a second argument to the action method. As we will
-see, this allows us to write very simple and efficient action methods for rules
-such as expression. (Note there's a space between the C<#=> and the key's name).
-
 =head2 Testing the Parser
 
 It is useful to test the parser before writing any action methods. This can save
@@ -253,24 +263,21 @@
 
 Now we have implemented the initial version of the Squaak grammar, it's time to
 implement the parse actions we mentioned before. The actions are written in a
-file called F<src/parser/actions.pm>. If you look at the methods in this file,
-here and there you'll see that the match object ($/) , or rather, hash fields of
-it (like $<statement>) is evaluated in scalar context, by writing "$( ... )".
-As mentioned in Synopsis 5, evaluating a Match object in scalar context returns
-its result object. Normally the result object is the matched portion of the
-source text, but the special make function can be used to set the result object
-to some other value.
+file called F<src/Squaak/Actions.pm>. If you look at the methods in this file,
+here and there you'll see that the C<ast> method being called on the match object ($/) , or rather,
+hash fields of it (like $<statement>).
+The special make function can be used to set the ast to a value.
 This means that each node in the parse tree (a Match object) can also hold its
 PAST representation. Thus we use the make function to set the PAST
-representation of the current node in the parse tree, and later use the $( ... )
-operator to retrieve the PAST representation from it.
+representation of the current node in the parse tree, and later use the C<ast>
+method to retrieve the PAST representation from it.
 
 In recap, the match object ($/) and any subrules of it (for instance
 $<statement>) represent the parse tree; of course, $<statement>
 represents only the parse tree what the $<statement> rule matched. So, any
 action method has access to the parse tree that the equally named grammar rule
-matched, as the match object is always passed as an argument. Evaluating a parse
-tree in scalar context yields the PAST representation (obviously, this PAST
+matched, as the match object is always passed as an argument. Calling the C<ast> method 
+on a parse tree yields the PAST representation (obviously, this PAST
 object should be set using the make function).
 
 If you're following this tutorial, I highly advise you to get your feet wet, and
@@ -300,8 +307,7 @@
 =item 1.
 
 Rename the names of the action methods according to the name changes we made on
-the grammar rules. So, "integer" becomes "integer_constant", "value" becomes
-"expression", and so on.
+the grammar rules. So, "integer" becomes "integer_constant", and so on.
 
 =item 2.
 
@@ -326,6 +332,11 @@
 
 =item 5.
 
+Write the action method for stat_or_def. Simply retrieve the result object from statement and make
+that the result object.
+
+=item 6.
+
 Run your compiler on a script or in interactive mode. Use the target option to
 see what PIR is being generated on the input "x = 42".
 
@@ -338,8 +349,7 @@
 =item * Help! I get the error message "no result object".
 
 This means that the result object was not set properly (duh!).
-Make sure each action method is invoked (check each rule for a "{*}" marker),
-and that there is an action method for that rule, and that "make" is used to set
+Make sure there is an action method for that rule and that "make" is used to set
 the appropriate PAST node. Note that not all rules have action methods, for
 instance the C<keyword> rule (there's no point in that).
 
@@ -354,6 +364,8 @@
 
 =over 4
 
+=item * rules, regexes and tokens: http://perlgeek.de/blog-en/perl-5-to-6/07-rules.writeback#Named_Regexes_and_Grammars
+
 =item * pdd26: ast
 
 =item * synopsis 5: Rules
@@ -374,8 +386,7 @@
 =item 1
 
 Rename the names of the action methods according to the name changes we made
-on the grammar rules. So, "integer" becomes "integer_constant", "value" becomes
-"expression", and so on.
+on the grammar rules. So, "integer" becomes "integer_constant", and so on.
 
 I assume you don't need any help with this.
 
@@ -387,15 +398,11 @@
 special make function. Do the same for rule primary.
 
  method statement($/) {
-     make $( $<assignment> );
+     make $<assignment>.ast;
  }
 
-Note that at this point, the rule statement doesn't define different #= keys
-for each type of statement, so we don't declare a parameter C<$key>. This will
-be changed later.
-
  method primary($/) {
-     make $( $<identifier> );
+     make $<identifier>.ast;
  }
 
 =item 3
@@ -417,8 +424,8 @@
 find out how you do such a binding).
 
  method assignment($/) {
-     my $lhs := $( $<primary> );
-     my $rhs := $( $<expression> );
+     my $lhs := $<primary>.ast;
+     my $rhs := $<expression>.ast;
      $lhs.lvalue(1);
      make PAST::Op.new( $lhs, $rhs, :pasttype('bind'), :node($/) );
  }
@@ -427,6 +434,15 @@
 
 =item 5
 
+Write the action method for stat_or_def. Simply retrieve the result object from statement and make
+that the result object.
+
+ method stat_or_def {
+     make $<statement>.ast;
+ }
+
+=item 6
+
 Run your compiler on a script or in interactive mode. Use the target option to
 see what PIR is being generated on the input "x = 42".
 

Modified: branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_4.pod
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_4.pod	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_4.pod	Wed Jul 21 04:47:35 2010	(r48157)
@@ -60,39 +60,37 @@
 The first statement we're going to implement now is the if-statement. An
 if-statement has typically three parts (but this of course depends on the
 programming language): a conditional expression, a "then" part and an "else"
-part. Implementing this in Perl 6 rules and PAST is almost trivial:
+part. Implementing this in Perl 6 rules and PAST is almost trivial, but first, let's add a little
+infrastructure to simplify adding new statement types. Replace the statement rule with the
+following:
+    proto rule statement { <...> }
+
+Delete the statement method from Action.pm, and rename the assignment rule in both Grammar.pm and
+Actions.pm to statement:sym<assignment>. The new statement rule is a "proto" rule. A proto rule is
+equivalent to a normal rule whose body contains each specialization of the rule separated by the |
+operator. The name of a particular specialization of a proto rule is placed between the angle
+brackets. Within the body of the rule, it can be matched literally with <sym>.
 
-    rule if_statement {
-        'if' <expression> 'then' <block>
+    rule statement:sym<if> {
+        <sym> <EXPR> 'then' $<then>=<block>
         ['else' $<else>=<block> ]?
         'end'
-        {*}
     }
 
     rule block {
         <statement>*
-        {*}
     }
 
-    rule statement {
-        | <assignment> {*}          #= assignment
-        | <if_statement> {*}        #= if_statement
-    }
-
-Note that the optional else block is stored in the match object's "else" field.
+Note that the optional else block is stored in the match object's "else" field, and the then block
+is stored in the match object's "then" field.
 If we hadn't written this $<else>= part, then <block> would have been an array,
 with block[0] the "then" part, and block[1] the optional else part. Assigning
 the optional else block to a different field, makes the action method slightly
 easier to read.
-Also note that the statement rule has been updated; a statement is now either
-an assignment or an if-statement. As a result, the action method statement now
-takes a key argument. The relevant action methods are shown below:
-
-    method statement($/, $key) {
-        # get the field stored in $key from the $/ object,
-        # and retrieve the result object from that field.
-        make $( $/{$key} );
-    }
+Note that the proto declaration for statement means that the result object for  $<statement> in any
+rule which calls statement as a subrule will be result object for whichever statement type matched.
+Because of this, we can delete the statement action method.
+ The relevant action methods are shown below:
 
     method block($/) {
         # create a new block, set its type to 'immediate',
@@ -105,19 +103,18 @@
         # for each statement, add the result
         # object to the block
         for $<statement> {
-            $past.push( $( $_ ) );
+            $past.push($_.ast);
         }
         make $past;
     }
 
-    method if_statement($/) {
-        my $cond := $( $<expression> );
-        my $then := $( $<block> );
-        my $past := PAST::Op.new( $cond, $then,
+    method statement:sym<if>($/) {
+        my $cond := $<EXPR>.ast;
+        my $past := PAST::Op.new( $cond, $<then>.ast,
                                   :pasttype('if'),
                                   :node($/) );
         if $<else> {
-            $past.push( $( $<else>[0] ) );
+            $past.push($<else>[0].ast);
         }
         make $past;
     }
@@ -133,13 +130,12 @@
 
 At this point it's wise to spend a few words on the make function, the parse
 actions and how the whole PAST is created by the individual parse actions.
-Have another look at the action method if_statement. In the first two lines,
+Have another look at the action method statement:sym<if>. In the first two lines,
 we request the result objects for the conditional expression and the "then"
 block. When were these result objects created? How can we be sure they're there?
-The answer lies in the order in which the parse actions are executed. The
-special "{*}" symbol that triggers a parse action invocation, is usually placed
-at the end of the rule. For this input string: "if 42 then x = 1 end" this
-implies the following order:
+The answer lies in the order in which the parse actions are executed. The parse action invocation
+usually occurs at the end of the rule. For this input string: "if 42 then x = 1 end" this implies
+the following order:
 
 =over 4
 
@@ -147,9 +143,9 @@
 
 =item  2. parse statement
 
-=item  3. parse if_statement
+=item  3. parse statement:sym<if>
 
-=item  4. parse expression
+=item  4. parse EXPR
 
 =item  5. parse integer
 
@@ -159,7 +155,7 @@
 
 =item  8. parse statement
 
-=item  9. parse assignment
+=item  9. parse statement:sym<assignment>
 
 =item 10. parse identifier
 
@@ -179,7 +175,7 @@
 
 =back
 
-As you can see, PAST nodes are created in the leafs of the parse tree first,
+As you can see, PAST nodes are created in the leaves of the parse tree first,
 so that later, action methods higher in the parse tree can retrieve them.
 
 =head2 Throwing Exceptions
@@ -188,12 +184,11 @@
 to discuss the parse action, as it shows the use of generating custom PIR
 instructions. First the grammar rule:
 
-    rule throw_statement {
-        'throw' <expression>
-        {*}
+    rule statement:sym<throw> {
+        <sym> <EXPR>
     }
 
-I assume you know how to update the "statement" rule by now. The throw statement
+The throw statement
 will compile down to Parrot's "throw" instruction, which takes one argument.
 In order to generate a custom Parrot instruction, the instruction can be
 specified in the C<:pirop> attribute when creating a C<PAST::Op> node. Any child
@@ -201,16 +196,15 @@
 object of the expression being thrown as a child of the C<PAST::Op> node
 representing the "throw" instruction.
 
-    method throw_statement($/) {
-        make PAST::Op.new( $( $<expression> ),
-                           :pirop('throw'),
+    method statement:sym<throw>($/) {
+        make PAST::Op.new( $<EXPR>.ast,
+                           :pirop('die'),
                            :node($/) );
     }
 
-
 =head2 What's Next?
 
-In this episode we implemented two more statement types of Squaak. You should
+In this episode we implemented two more Squaak statement types. You should
 get a general idea of how and when PAST nodes are created, and how they can be
 retrieved as sub (parse) trees. In the next episode we'll take a closer look at
 variable scope and subroutines.
@@ -266,31 +260,29 @@
 
 The while-statement is straightforward:
 
- method while_statement($/) {
-     my $cond := $( $<expression> );
-     my $body := $( $<block> );
+ method statement:sym<while>($/) {
+     my $cond := $<EXPR>.ast;
+     my $body := $<block>.ast;
      make PAST::Op.new( $cond, $body, :pasttype('while'), :node($/) );
  }
 
 The try-statement is a bit more complex. Here are the grammar rules and
 action methods.
 
- rule try_statement {
-     'try' $<try>=<block>
+ rule statement:sym<try> {
+     <sym> $<try>=<block>
      'catch' <exception>
      $<catch>=<block>
      'end'
-     {*}
  }
 
  rule exception {
      <identifier>
-     {*}
  }
 
- method try_statement($/) {
+ method statement:sym<try>($/) {
      ## get the try block
-     my $try := $( $<try> );
+     my $try := $<try>.ast;
 
      ## create a new PAST::Stmts node for
      ## the catch block; note that no
@@ -299,12 +291,12 @@
      ## exception object. For now this will
      ## do.
      my $catch := PAST::Stmts.new( :node($/) );
-     $catch.push( $( $<catch> ) );
+     $catch.push($<catch>.ast);
 
      ## get the exception identifier;
      ## set a declaration flag, the scope,
      ## and clear the viviself attribute.
-     my $exc := $( $<exception> );
+     my $exc := $<exception>.ast;
      $exc.isdecl(1);
      $exc.scope('lexical');
      $exc.viviself(0);
@@ -323,17 +315,10 @@
  }
 
  method exception($/) {
-     our $?BLOCK;
-     my $past := $( $<identifier> );
-     $?BLOCK.symbol( $past.name(), :scope('lexical') );
+     my $past := $<identifier>.ast;
      make $past;
  }
 
-Instead of putting "identifier" after the "catch" keyword, we made it a
-separate rule, with its own action method. This allows us to insert the
-identifier into the symbol table of the current block (the try-block),
-before the catch block is parsed.
-
 First the PAST node for the try block is retrieved. Then, the catch block is
 retrieved, and stored into a C<PAST::Stmts> node. This is needed, so that we
 can make sure that the instructions that retrieve the exception object come
@@ -378,41 +363,53 @@
 conditional expression, which represent the "then" block, and which represent
 the "else" block (if any).
 
+Note that this may not be the exact result produced when you try it. Sub ids, block numbers, and
+register numbers may differ, but it should be analogous.
+
   > if 1 then else end
 
+  .HLL "squaak"
+
   .namespace []
-  .sub "_block16"
-    new $P18, "Integer"
-    assign $P18, 1
-
-    ## this is the condition:
-    if $P18, if_17
-
-    ## this is invoking the else-block:
-    get_global $P21, "_block19"
-    newclosure $P21, $P21
-    $P20 = $P21()
-    set $P18, $P20
-    goto if_17_end
-
-    ## this is invoking the then-block:
-    if_17:
-    get_global $P24, "_block22"
-    newclosure $P24, $P24
-    $P23 = $P24()
-    set $P18, $P23
-    if_17_end:
-    .return ($P18)
+  .sub "_block11"  :anon :subid("10_1279319328.02043")
+  .annotate 'line', 0
+      .const 'Sub' $P20 = "12_1279319328.02043" 
+      capture_lex $P20
+      .const 'Sub' $P17 = "11_1279319328.02043" 
+      capture_lex $P17
+  .annotate 'line', 1
+      set $I15, 1
+      if $I15, if_14
+      .const 'Sub' $P20 = "12_1279319328.02043" 
+      capture_lex $P20
+      $P21 = $P20()
+      set $P13, $P21
+      goto if_14_end
+    if_14:
+      .const 'Sub' $P17 = "11_1279319328.02043" 
+      capture_lex $P17
+      $P18 = $P17()
+      set $P13, $P18
+    if_14_end:
+      .return ($P13)
   .end
 
+
+  .HLL "squaak"
+
   .namespace []
-  .sub "_block22" :outer("_block16")
-    .return ()
+  .sub "_block19"  :anon :subid("12_1279319328.02043") :outer("10_1279319328.02043")
+  .annotate 'line', 1
+      .return ()
   .end
 
+
+  .HLL "squaak"
+
   .namespace []
-  .sub "_block19" :outer("_block16")
-    .return ()
+  .sub "_block16"  :anon :subid("11_1279319328.02043") :outer("10_1279319328.02043")
+  .annotate 'line', 1
+      .return ()
   .end
 
 =back

Modified: branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_5.pod
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_5.pod	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_5.pod	Wed Jul 21 04:47:35 2010	(r48157)
@@ -30,9 +30,8 @@
 
 Squaak has a so-called do-block statement, that is defined below.
 
- rule do_block {
-     'do' <block> 'end'
-     {*}
+ rule statement:sym<do> {
+     <sym> <block> 'end'
  }
 
 Each do-block defines a new scope; local variables declared between the C<do>
@@ -94,9 +93,8 @@
 statement, so I assume you know how to extend the statement rule to allow for
 variable declarations.
 
- rule variable_declaration {
-     'var' <identifier> ['=' <expression>]?
-     {*}
+ rule statement:sym<var> {
+     <sym> <identifier> ['=' <EXPR>]?
  }
 
 A local variable is declared using the C<var> keyword, and has an optional
@@ -104,9 +102,9 @@
 defaults to the undefined value called "Undef". Let's see what the parse action
 looks like:
 
- method variable_declaration($/) {
+ method statement:sym<var>($/) {
      # get the PAST for the identifier
-     my $past := $( $<identifier> );
+     my $past := $<identifier>.ast;
 
      # this is a local (it's being defined)
      $past.scope('lexical');
@@ -115,10 +113,10 @@
      $past.isdecl(1);
 
      # check for the initialization expression
-     if $<expression> {
+     if $<EXPR> {
          # use the viviself clause to add a
          # an initialization expression
-         $past.viviself( $( $<expression>[0] );
+         $past.viviself($<EXPR>[0].ast);
      }
      else { # no initialization, default to "Undef"
          $past.viviself('Undef');
@@ -152,46 +150,27 @@
 symbols in the block's symbol table), we add a few extra parse actions. Let's
 take a look at them.
 
- rule TOP {
-     {*}                              #= open
-     <statement>*
-     [ $ || <.panic: syntax error> ]
-     {*}                              #= close
- }
+Add this token to the grammar:
 
-We now have two parse actions for TOP, which are differentiated by an
-additional key parameter. The first parse action is executed before any input
-is parsed, which is particularly suitable for any initialization actions you
-might need. The second action (which was already there) is executed after the
-whole input string is parsed. Now we can create a C<PAST::Block> node before
-any statements are parsed, so that when we need the current block, it's there
-(somewhere, later we'll see where exactly). Let's take a look at the parse
-action for TOP.
+ token begin_TOP {
+     <?>
+ }
 
- method TOP($/, $key) {
-     our $?BLOCK;
+It uses something we haven't seen before, <?>. The null pattern <?> always returns true without
+consuming any text. Tokens consisting of only <?> are frequently used to invoke additional action
+methods.
+
+Add this method to Actions.pm:
+
+ method begin_TOP ($/) {
+     our $?BLOCK := PAST::Block.new(:blocktype<declaration>, :node($/),
+                                    :hll<squaak>);
      our @?BLOCK;
-
-     if $key eq 'open' {
-         $?BLOCK := PAST::Block.new( :blocktype('declaration'),
-                                     :node($/) );
-
-         @?BLOCK.unshift($?BLOCK);
-     }
-     else { # key is 'close'
-         my $past := @?BLOCK.shift();
-
-         for $<statement> {
-             $past.push( $( $_ ) );
-         }
-
-         make $past;
-     }
+     @?BLOCK.unshift($?BLOCK);
  }
 
-Let's see what's happening here. When the parse action is invoked for the first
-time (when C<$key> equals "open"), a new C<PAST::Block> node is created and
-assigned to a strange-looking (if you don't know Perl, like me. Oh wait,
+We create a new C<PAST::Block> node and
+assign it to a strange-looking (if you don't know Perl, like me. Oh wait,
 this is Perl. Never mind..) variable called C<$?BLOCK>. This variable is
 declared as "our", which means that it is a package variable. This means that
 the variable is shared by all methods in the same package (or class), and,
@@ -203,98 +182,61 @@
 C<@?BLOCK>. This variable has a "@" sigil, meaning this is an array. The
 unshift method puts its argument on the front of the list. In a sense, you
 could think of the front of this list as the top of a stack. Later we'll see
-why this stack is necessary.
+why this stack is necessary. This C<@?BLOCK> variable is also declared with "our", meaning it's also
+package-scoped. Since it's an array variable, it is automatically initialized with an empty
+ResizablePMCArray.
+
+Now we need to modify our TOP rule to call begin_TOP.
+
+ rule TOP {
+     <.begin_TOP>
+     <statementlist>
+     [ $ || <.panic: "Syntax error"> ]
+ }
+
+"<.begin_TOP>" is just like <begin_TOP>, calling the subrule begin_TOP, with one difference: The
+<.subrule> form does not capture. Normally, when match a subrule <foo>, $<foo> on the match object
+is bound to the subrule's match result. With <.foo>, $<foo> is not bound.
 
-This C<@?BLOCK> variable is also declared with "our", meaning it's also
-package-scoped. However, as we call a method on this variable, it should have
-been already created; otherwise you'd invoke the method on an undefined
-("Undef") variable. So, this variable should have been created before the
-parsing starts. We can do this in the compiler's main program, squaak.pir.
-Before doing so, let's take a quick look at the "else" part of the parse action
+The parse action for begin_TOP is executed before any input
+is parsed, which is particularly suitable for any initialization actions you
+might need. The action for TOP is executed after the
+whole input string is parsed. Now we can create a C<PAST::Block> node before
+any statements are parsed, so that when we need the current block, it's there
+(somewhere, later we'll see where exactly). Let's take a look at the parse
+action for TOP.
+
+ method TOP($/, $key) {
+     our @?BLOCK;
+     my $past := @?BLOCK.shift();
+     $past.push($<statementlist>.ast);
+     make $past;
+ }
+
+Let's take a quick look at the updated parse action
 for TOP, which is executed after the whole input string is parsed. The
 C<PAST::Block> node is retrieved from C<@?BLOCK>, which makes sense, as it was
 created in the first part of the method and unshifted on C<@?BLOCK>. Now this
 node can be used as the final result object of TOP. So, now we've seen how to
 use the scope stack, let's have a look at its implementation.
 
-=head2 A List Class
-
-We'll implement the scope stack as a C<ResizablePMCArray> object. This is a
-built-in PMC type. However, this built-in PMC does not have any methods; in
-PIR it can only be used as an operand of the built-in shift and unshift
-instructions. In order to allow us to write this as method calls, we create a
-new subclass of ResizablePMCArray. The code below creates the new class and
-defines the methods we need.
-
- 1 .namespace []
-
- 2 .sub 'initlist' :anon :init :load
- 3   subclass $P0, 'ResizablePMCArray', 'List'
- 4   new $P1, 'List'
- 5   set_hll_global ['Squaak';'Grammar';'Actions'], '@?BLOCK', $P1
- 6 .end
-
- 7 .namespace ['List']
-
- 8 .sub 'unshift' :method
- 9   .param pmc obj
- 10   unshift self, obj
- 11 .end
-
- 12 .sub 'shift' :method
- 13   shift $P0, self
- 14   .return ($P0)
- 15 .end
-
-Well, here you have it: part of the small amount of PIR code you need to write
-for the Squaak compiler (there's some more for some built-in subroutines, more
-on that later). Let's discuss this code snippet in more detail (if you know
-PIR, you could skip this section).
-Line 1 resets the namespace to the root namespace in Parrot, so that the sub
-C<initlist> is stored in that namespace. The sub 'initlist' defined in lines
-2-6 has some flags: C<:anon> means that the sub is not stored by name in the
-namespace, implying it cannot be looked up by name. The :init flag means that
-the sub is executed before the main program (the "main" sub) is executed. The
-C<:load> flag makes sure that the sub is executed if this file was compiled and
-loaded by another file through the load_bytecode instruction. If you don't
-understand this, no worries. You can forget about it now. In any case, we know
-for sure there's a List class when we need it, because the class creation is
-done before running the actual compiler code.
-Line 3 creates a new subclass of ResizablePMCArray, called "List". This results
-in a new class object, which is left in register $P0, but it's not used after
-that.
-Line 4 creates a new List object, and stores it in register $P1. Line 5,
-stores this List object by name of C<@?BLOCK> (that name should ring a bell
-now...) in the namespace of the Actions class. The semicolons in between the
-several key strings indicate nested namespaces. So, lines 4 and 5 are important,
-because the create the @?BLOCK variable and store it in a place that can be
-accessed from the action methods in the Actions class.
-Lines 7-11 define the unshift method, which is a method in the "List" namespace.
-This means that it can be invoked as a method on a List object. As the sub is
-marked with the :method flag, the sub has an implicit first parameter called
-"self", which refers to the invocant object. The unshift method invokes
-Parrot's unshift instruction on self, passing the obj argument as the second
-operand. So, obj is unshifted onto self, which is the List object itself.
-Finally, lines 12-15 define the "shift" method, which does the opposite of
-"unshift", removing the first element and returning it to its caller.
-
 =head2 Storing Symbols
 
 Now, we set up the necessary infrastructure to store the current scope block,
 and we created a datastructure that acts as a scope stack, which we will need
-later. We'll now go back to the parse action for variable_declaration, because
+later. We'll now go back to the parse action for statement:sym<var>, because
 we didn't enter the declared variable into the current block's symbol table yet.
 We'll see how to do that now.
 First, we need to make the current block accessible from the method
-variable_declaration. We've already seen how to do that, using the "our"
+statement:sym<var>. We've already seen how to do that, using the "our"
 keyword. It doesn't really matter where in the action method we enter the
 symbol's name into the symbol table, but let's do it at the end, after the
 initialization stuff. Naturally, we're only going to enter the symbol if it's
 not there already; duplicate variable declarations (in the same scope) should
 result in an error message (using the panic method of the match object).
-The code to be added to the method variable_declaration looks then like this:
+The code to be added to the method statement:sym<var> looks then like this:
 
- method variable_declaration($/) {
+ method statement:sym<var>($/) {
      our $?BLOCK;
      # get the PAST node for identifier
      # set the scope and declaration flag
@@ -304,7 +246,7 @@
 
      if $?BLOCK.symbol( $name ) {
          # symbol is already present
-         $/.panic("Error: symbol " ~ $name ~ " was already defined.\n");
+         $/.CURSOR.panic("Error: symbol " ~ $name ~ " was already defined.\n");
      }
      else {
          $?BLOCK.symbol( $name, :scope('lexical') );
@@ -329,14 +271,15 @@
 =item *
 
 In this episode, we changed the action method for the C<TOP> rule; it is now
-invoked twice, once at the beginning of the parse, once at the end of the parse.
+invokes the new begin_TOP action at the beginning of the parse.
 The block rule, which defines a block to be a series of statements, represents
 a new scope. This rule is used in for instance if-statement
 (the then-part and else-part), while-statement (the loop body) and others.
-Update the parse action for block so it is invoked twice; once before parsing
-the statements, during which a new C<PAST::Block> is created and stored onto the
-scope stack, and once after parsing the statements, during which this PAST node
-is set as the result object. Make sure C<$?BLOCK> is always pointing to the
+Add a new begin_block rule consisting of <?>; in the action for it, create a new PAST::Block and
+store it onto the scope stack.
+Update the rule for block so that it calls begin_block before parsing
+the statements. Update the parse action for block after parsing the statements, during which this
+PAST node is set as the result object. Make sure C<$?BLOCK> is always pointing to the
 current block. In order to do this exercise correctly, you should understand
 well what the shift and unshift methods do, and why we didn't implement methods
 to push and pop, which are more appropriate words in the context of a (scope)
@@ -385,24 +328,35 @@
 I hope it's clear what I mean here... otherwise, have a look at the code,
 and try to figure out what's happening:
 
+    # In src/Squaak/Grammar.pm
+    token begin_block {
+        <?>
+    }
+
+    rule block {
+        <.begin_block>
+        <statement>*
+    }
+
+    # In src/Squaak/Actions.pm
+    method begin_block {
+        our $?BLOCK;
+        our @?BLOCK;
+        $?BLOCK := PAST::Block.new(:blocktype('immediate'),
+                                   :node($/));
+        @?BLOCK.unshift($?BLOCK);
+    }
+
     method block($/, $key) {
-      our $?BLOCK;
-      our @?BLOCK;
-      if $key eq 'open' {
-            $?BLOCK := PAST::Block.new(
-                        :blocktype('immediate'),
-                          :node($/) );
-           @?BLOCK.unshift($?BLOCK);
-        }
-        else {
-            my $past := @?BLOCK.shift();
-            $?BLOCK  := @?BLOCK[0];
-
-            for $<statement> {
-                $past.push( $( $_ ) );
-            }
-            make $past;
+        our $?BLOCK;
+        our @?BLOCK;
+        my $past := @?BLOCK.shift();
+        $?BLOCK  := @?BLOCK[0];
+
+        for $<statement> {
+            $past.push($_.ast);
         }
+        make $past;
     }
 
 =cut

Modified: branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_6.pod
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_6.pod	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_6.pod	Wed Jul 21 04:47:35 2010	(r48157)
@@ -77,14 +77,26 @@
      'sub' <identifier> <parameters>
      <statement>*
      'end'
-     {*}
  }
 
  rule parameters {
-     '(' [<identifier> [',' <identifier>]* ]? ')'
-     {*}
+     '(' [<identifier> ** ',']? ')'
  }
 
+And we need to add it to rule stat_or_def:
+
+ rule stat_or_def {
+     | <statement>
+     | <sub_definition>
+ }
+
+Appropriately modifying the action method is simple. It's analogous to the action method for
+expression.
+
+"**" is the repetition specifier; "<identifier> ** ','" matches <identifier> separated by commas.
+Since it's in a rule and there is space between the ** and its operands, whitespace is allowed
+between the commas and both the preceding and following identifiers.
+
 This is rather straightforward, and the action methods for these rules are
 quite simple, as you will see. First, however, let's have a look at the rule
 for sub definitions. Why is the sub body defined as <statement>* and not as a
@@ -112,7 +124,7 @@
 
      # now add all parameters to this block
      for $<identifier> {
-         my $param := $( $_ );
+         my $param := $_.ast;
          $param.scope('parameter');
          $past.push($param);
 
@@ -128,23 +140,23 @@
  }
 
  method sub_definition($/) {
-     our $?BLOCK;
-     our @?BLOCK;
-     my $past := $( $<parameters> );
-     my $name := $( $<identifier> );
-
-     # set the sub's name
-     $past.name( $name.name() );
-
-     # add all statements to the sub's body
-     for $<statement> {
-         $past.push( $( $_ ) );
-     }
-
-     # and remove the block from the scope stack and restore the current block
-     @?BLOCK.shift();
-     $?BLOCK := @?BLOCK[0];
-     make $past;
+      our $?BLOCK;
+      our @?BLOCK;
+      my $past := $<parameters>.ast;
+      my $name := $<identifier>.ast;
+
+      # set the sub's name
+      $past.name($name.name);
+
+      # add all statements to the sub's body
+      for $<statement> {
+          $past.push($_.ast);
+      }
+
+      # and remove the block from the scope stack and restore the current block
+      @?BLOCK.shift();
+      $?BLOCK := @?BLOCK[0];
+      make $past;
  }
 
 First, let's check out the parse action for parameters. First, a new
@@ -178,26 +190,29 @@
 subroutine invocation. In this section, we'll give a complete description.
 First we'll introduce the grammar rules.
 
- rule sub_call {
+ rule statement:sym<sub_call> {
      <primary> <arguments>
-     {*}
+ }
+
+ rule arguments {
+     '(' [<EXPR> ** ',']? ')'
  }
 
 Not only allows this to invoke subroutines by their name, you can also store
 the subroutines in an array or hash field, and invoke them from there. Let's
 take a look at the action method, which is really quite straightforward.
 
- method sub_call($/) {
-     my $invocant := $( $<primary> );
-     my $past     := $( $<arguments> );
+ method statement:sym<sub_call>($/) {
+     my $invocant := $<primary>.ast;
+     my $past     := $<arguments>.ast;
      $past.unshift($invocant);
      make $past;
  }
 
  method arguments($/) {
      my $past := PAST::Op.new( :pasttype('call'), :node($/) );
-     for $<expression> {
-         $past.push( $( $_ ) );
+     for $<EXPR> {
+         $past.push($_.ast);
      }
      make $past;
  }
@@ -260,20 +275,17 @@
 
 It's pretty easy to convert this to Perl 6 rules:
 
-    rule for_statement {
-        'for' <for_init> ',' <expression> <step>?
+    rule statement:sym<for> {
+        <sym> <for_init> ',' <EXPR> <step>?
         'do' <statement>* 'end'
-        {*}
     }
 
     rule step {
-        ',' <expression>
-        {*}
+        ',' <EXPR>
     }
 
     rule for_init {
-        'var' <identifier> '=' <expression>
-        {*}
+        'var' <identifier> '=' <EXPR>
     }
 
 Pretty easy huh? Let's take a look at the semantics. A for-loop is just
@@ -323,12 +335,12 @@
                                     :node($/) );
         @?BLOCK.unshift($?BLOCK);
 
-        my $iter := $( $<identifier> );
+        my $iter := $<identifier>.ast;
         ## set a flag that this identifier is being declared
         $iter.isdecl(1);
         $iter.scope('lexical');
         ## the identifier is initialized with this expression
-        $iter.viviself( $( $<expression> ) );
+        $iter.viviself( $<EXPR>.ast );
 
         ## enter the loop variable into the symbol table.
         $?BLOCK.symbol($iter.name(), :scope('lexical'));
@@ -339,16 +351,22 @@
 So, just as we created a new C<PAST::Block> for the subroutine in the action
 method for parameters, we create a new C<PAST::Block> for the for-statement in
 the action method that defines the loop variable. (Guess why we made for-init
-a subrule, and didn't put in "C<var> <ident&gt = <expression>" in the rule of
+a subrule, and didn't put in "C<var> <ident&gt = <EXPR>" in the rule of
 for-statement). This block is the place to live for the loop variable. The
 loop variable is declared, initialized using the viviself attribute, and
 entered into the new block's symbol table. Note that after creating the new
 C<PAST::Block> object, we put it onto the stack scope.
 
+The action method for step is simple:
+
+    method step($/) {
+        make $<EXPR>.ast;
+    }
+
 Now, the action method for the for statement is quite long, so I'll just
 embed my comments, which makes reading it easier.
 
-    method for_statement($/) {
+    method statement:sym<for>($/) {
         our $?BLOCK;
         our @?BLOCK;
 
@@ -356,7 +374,7 @@
 is the C<PAST::Var> object, representing the declaration and initialization
 of the loop variable.
 
-        my $init := $( $<for_init> );
+        my $init := $<for_init>.ast;
 
 Then, create a new node for the loop variable. Yes, another one (besides the
 one that is currently contained in the C<PAST::Block>). This one is used when
@@ -381,7 +399,7 @@
         my $body := @?BLOCK.shift();
         $?BLOCK  := @?BLOCK[0];
         for $<statement> {
-            $body.push($($_));
+            $body.push($_.ast);
         }
 
 If there was a step, we use that value; otherwise, we use assume a default
@@ -392,8 +410,9 @@
 
         my $step;
         if $<step> {
-            my $stepsize := $( $<step>[0] );
-            $step := PAST::Op.new( $iter, $stepsize, :pirop('add'), :node($/) );
+            my $stepsize := $<step>[0].ast;
+            $step := PAST::Op.new( $iter, $stepsize,
+                                   :pirop('add__OP+'), :node($/) );
         }
         else { ## default is increment by 1
             $step := PAST::Op.new( $iter, :pirop('inc'), :node($/) );
@@ -404,13 +423,13 @@
 
         $body.push($step);
 
-The loop condition uses the "<=" operator, and compares the loop variable
-with the maximum value that was specified.
+The loop condition uses the isle opcode, which checks that its first operand is less than or equal
+to its second, and compares the loop variable with the maximum value that was specified.
 
         ## while loop iterator <= end-expression
-        my $cond := PAST::Op.new( $iter,
-                                  $( $<expression> ),
-                                  :name('infix:<=') );
+        my $cond := PAST::Op.new( :pirop<isle__IPP>,
+                                  $iter,
+                                  $<EXPR>.ast );
 
 Now we have the PAST for the loop condition and the loop body, so now create
 a PAST to represent the (while) loop.

Modified: branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_7.pod
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_7.pod	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_7.pod	Wed Jul 21 04:47:35 2010	(r48157)
@@ -13,7 +13,7 @@
 =head2 Operators, precedence and parse trees
 
 We will first briefly introduce the problem with recursive-descent parsers
-(which parsers generated with the PCT are) when parsing expressions. Consider
+(which parsers generated with NQP are) when parsing expressions. Consider
 the following mini-grammar, which is a very basic calculator.
 
  rule TOP {
@@ -116,29 +116,39 @@
 and I don't remember the particular details. If you really want to know, check
 out the links at the end of the previous section. It's actually worth checking
 out. For now, I'll just assume you know what the problem is, so that I'll
-introduce the solution for PCT-based compilers immediately.
+introduce the solution for NQP-based compilers immediately.
 At some point when parsing your input, you might encounter an expression. At
 this point, we'd like the parser to switch from top-down to bottom-up parsing.
-The Parrot Grammar Engine supports this, and is used as follows:
+NQP-rx supports this, and is used as follows:
 
- rule expression is optable { ... }
+ <EXPR>
 
-Note that we used the word C<expression> here, but you can name it anything.
-This declares that, whenever you need an expression, the bottom-up parser is
-activated. Of course, this "optable" must be populated with some operators that
-we need to be able to parse. This can be done by declaring operators as follows:
+Of course, the optable must be populated with some operators that
+we need to be able to parse and it might be told what precedence and associativity they have. The
+easiest way to do this is by setting up precedence levels in an C<INIT> block:
 
- proto 'infix:*' is tighter('infix:+') { ... }
+    INIT {
+        Squaak::Grammar.O(':prec<t>, :assoc<left>', '%additive');
+        Squaak::Grammar.O(':prec<u>, :assoc<lefT>', '%multiplicative');
+    }
+
+In this C<INIT> block, we use the C<O> method of the compiler to set up two precedence levels: one
+for operators like addition (named C<%additive>), and one for operators like multiplication (named
+C<%multiplicative>). Each of themhas a ":prec" value and an ":assoc" value. ":prec" determines the
+precedence. Lexicographically greater values indicate higher precedence, so C<%additive> operators,
+with a precedence value of "t", have lower precedence than C<%multiplicative> operators with a
+precedence value of "u".":assoc" defines the associativity of the operators. If C<@> is a left
+associative operator, then 1 @ 2 @ 3 is equivalent to (1 @ 2) @ 3. However, if C<@> is right
+associative, then 1 @ 2 @ 3 is equivalent to 1 @ (2 @ 3). There are other options for the
+associativity, but we'll discuss them as we come to them.
+
+    token infix:sym<*> { <sym> <O('%multiplicative, :pirop<mul>')> }
 
 This defines the operator C<*> (the C<infix:> is a prefix that tells the
 operator parser that this operator is an infix operator; there are other types,
-such as prefix, postfix and others). The C<is tighter> clause tells that the
-C<*> operator has a higher precedence than the C<+> operator. As you could have
-guessed, there are other clauses to declare equivalent precedence (C<is equiv>)
-and lower precedence (C<is looser>).It is very important to spell all clauses,
-such as C<is equiv> correctly (for instance, not C<is equil>), otherwise you
-might get some cryptic error message when trying to run your compiler. See the
-references section for the optable guide, that has more details on this.
+such as prefix, postfix and others). As you can see, it uses the O rule to specify that it is part
+of the C<%multiplicative> group of operators. The ":pirop" value specifies that the operator should
+compile to the C<mul> PIR opcode.
 
 Of course, the expression parser does not just parse operators, it must also
 parse the operands. So, how do we declare the most basic entity that represents
@@ -146,19 +156,12 @@
 or even a function definition (but adding two function definition doesn't
 really make sense, does it?). The operands are parsed in a recursive-descent
 fashion, so somewhere the parser must switch back from bottom-up
-(expression parsing) to top-down. To declare this "switch-back" point, write:
-
- proto 'term:' is tighter('prefix:-') is parsed(&term) { ... }
+(expression parsing) to top-down. This "switch-back" point is the proto token C<term>. This is the
+reason why integer constants are parsed by the rule term:sym<integer_constant>, for example, in our
+grammar.
 
-The name C<term:> is a built-in name of the operator bottom-up parser; it is
-invoked every time a new operand is needed. The C<is parsed> clause tells the
-parser that C<term> (which accidentally looks like C<term:>, but you could also
-have named it anything else) parses the operands.
-
-Note: it is very important to add a C<is tighter> clause to the declaration of
-the C<term:> rule. Otherwise your expression parser will not work! My knowledge
-here is a bit limited, but I usually define it as C<is tighter> relative to the
-tightest operator defined.
+The C<term> proto token is
+invoked every time a new operand is needed
 
 =head2 Squaak Operators
 
@@ -179,25 +182,30 @@
  or
 
 (".." is the string concatenation operator). Besides defining an entry and exit
-point for the expression parser, you need to define some operator as a reference
-point, so that other operators' precedence can be defined relative to that
-reference point. My personal preference is to declare the operator with the
-lowest precedence as the reference point. This can be done like this:
-
- proto 'infix:or' is precedence('1') { ... }
-
-Now, other operators can be defined:
-
- proto 'infix:and'  is tighter('infix:or')   { ... }
- proto 'infix:<'    is tighter('infix:and')  { ... }
- proto 'infix:+'    is tighter('infix:<')    { ... }
- proto 'infix:*'    is tighter('infix:+')    { ... }
- proto 'prefix:not' is tighter('infix:*')    { ... }
- proto 'prefix:-'   is tighter('prefix:not') { ... }
+point for the expression parser, you need to define precedence levels for your operators. Find the
+C<INIT> block in Grammar.pm below the "## Operators" comment, and replace it with this:
+
+    INIT {
+        Squaak::Grammar.O(':prec<w>, :assoc<unary>', '%unary-negate');
+        Squaak::Grammar.O(':prec<v>, :assoc<unary>', '%unary-not');
+        Squaak::Grammar.O(':prec<u>, :assoc<left>',  '%multiplicative');
+        Squaak::Grammar.O(':prec<t>, :assoc<left>',  '%additive');
+        Squaak::Grammar.O(':prec<s>, :assoc<left>',  '%relational');
+        Squaak::Grammar.O(':prec<r>, :assoc<left>',  '%conjunction');
+        Squaak::Grammar.O(':prec<q>, :assoc<left>',  '%disjunction');
+    }
+
+Now, we need to define the actual operators:
+
+    token infix:sym<or> { <sym> <O('%disjunction, :pasttype<unless>')> }
+    token infix:sym<and> { <sym> <O('%conjunction, :pasttype<if>')> }
+    token infix:sym«<» { <sym> <O('%relational, :pirop<islt>')> }
+    token infix:sym<+> { <sym> <O('%additive, :pirop<add>')> }
+    token infix:sym<*> { <sym> <O('%multiplicative, :pirop<mul>')> }
+    token prefix:sym<not> { <sym> <O('%unary-not, :pirop<isfalse>')> }
+    token prefix:sym<-> { <sym> <O('%unary-negate, :pirop<neg>')> }
 
 Note that some operators are missing. See the exercises section for this.
-For more details on the use of the optable, check out
-F<docs/pct/pct_optable_guide.pod> in the Parrot repository.
 
 =head2 Short-circuiting logical operators
 
@@ -216,9 +224,9 @@
 (the C<then> block) is evaluated (remember, the third child -- the C<else>
 clause -- is optional). It would be great to be able to implement the and
 operator using a C<PAST::Op( :pasttype('if') )> node. Well, you can, using
-the C<is pasttype> clause! Here's how:
+the ":pasttype" option! Here's how:
 
- proto 'infix:and' is tighter('infix:or') is pasttype('if') { ... }
+    token infix:sym<and> { <sym> <O('%conjunction, :pasttype<if>')> }
 
 So what about the or operator? When evaluating an or-expression, the first
 operand is evaluated. If it evaluates to true, then there's no need to evaluate
@@ -232,12 +240,8 @@
 In the previous section, we introduced the C<pasttype> clause that you can
 specify. This means that for that operator (for instance, the C<and> operator
 we discussed), a C<PAST::Op( :pasttype('if') )> node is created. What happens
-if you don't specify a pasttype? In that case a default C<PAST::Op> node is
-created, and the default pasttype is C<call>. In other words, a C<PAST::Op>
-node is created that calls the declared operator. For instance, the C<infix:+>
-operator results in a call to the subroutine "infix:+". This means you'll need
-to implement subroutines for each operator. Now, that's a bit of a shame.
-Obviously, some languages have very exotic semantics for the C<+> operator,
+if you don't specify a pasttype? In that case, the corresponding action method is called. Obviously,
+some languages have very exotic semantics for the C<+> operator,
 but many languages just want to use Parrot's built-in C<add> instruction. How
 do we achieve that?
 
@@ -247,20 +251,13 @@
 operands as arguments, it will generate the specified instruction with the
 operator's operands as arguments. Neat huh? Let's look at an example:
 
- proto 'infix:+' is tighter('infix:<') is pirop('n_add') { ... }
-
-This specifies to use the C<n_add> instruction, which tells Parrot to create a
-new result object instead of changing one of the operands. Why not just the
-C<add> instruction (which takes two operands, updating the first), you might
-think. Well, if you leave out this C<is pirop> stuff, this will be generated:
-
- $P12 = "infix:+"($P10, $P11)
+    token infix:sym<+> { <sym> <O('%additive, :pirop<add>')> }
 
-You see, three registers are involved. As we mentioned before, PCT does not do
-any optimizations. Therefore, instead of the generated instruction above, it
-just emit the following:
+This specifies to use the C<add> instruction, which tells Parrot to create a
+new result object instead of changing one of the operands. PCT
+just emits the following for this:
 
- n_add $P12, $P10, $P11
+ add $P12, $P10, $P11
 
 which means that the PMCs in registers C<$P10> and C<$P11> are added, and
 assigned to a newly created PMC which is stored in register C<$P12>.
@@ -268,71 +265,25 @@
 =head2 To circumfix or not to circumfix
 
 Squaak supports parenthesized expressions. Parentheses can be used to change
-the order of evaluation in an expression, just as you're probably have seen
-this in other languages. Besides infix, prefix and postfix operators, you can
-define circumfix operators, which is specified with the left and right
-delimiter. This is an ideal way to implement parenthesized expressions:
-
- proto 'circumfix:( )' is looser('infix:+') is pirop('set') { ... }
-
-By default, a subroutine invocation will be generated for each operator,
-in this case a call to C<circumfix:( )>. However, we are merely interested in
-the expression that has been parenthesized. The subroutine would merely return
-the expression. Instead, we can use the pirop attribute to specify what PIR
-operation should be generated; in this case that is the C<set> operation, which
-sets one register to the contents of another. This solution works fine, except
-that C<set> instructions are a bit of a waste. What happens is, the contents of
-some register is just copied to another register, which is then used in further
-code generation. This C<set> instruction might as well be optimized away.
-Currently, there are no optimizations implemented in the PCT.
-
-There is an alternative solution for adding grammar rules for the parenthesized
-expressions, by adding it as an alternative of term. The grammar rule term then
-ends up as:
-
- rule term {
-     | <float_constant> {*}     #= float_constant
-     | <integer_constant> {*}   #= integer_constant
-     | <string_constant&gt {*}  #= string_constant
-     | <primary> {*}            #= primary
-     | '(' <expression> ')' {*} #= expression
- }
-
-Of course, although we save one generated instruction, the parser will be
-slightly more inefficient, for reasons that we discussed at the beginning of
-this episode. Of course, you are free to decide for yourself how to implement
-this; this section just explains both methods. At some point, optimizations
-will be implemented in the PCT. I suspect "useless" instructions (such as the
-C<set> instruction we just saw) will then be removed.
+the order of evaluation in an expression, just as you probably have seen in other languages. Besides
+infix, prefix and postfix operators, you can define circumfix operators, which is specified with the
+left and right delimiter. This is an ideal way to implement parenthesized expressions:
+
+    token circumfix:sym<( )> { '(' <.ws> <EXPR> ')' }
+
+    # with the action method:
+    method circumfix:sym<( )> { make $<EXPR>.ast; }
+
+This rule and action method were generated for us when we ran mk_language_shell.pl; you don't need
+to add them to the grammar and actions yourself. Circumfix operators are treated as terms by the
+operator-precedence parser, so it will parse as we want it to automatically.
 
 =head2 Expression parser's action method
 
 For all grammar rules we introduced, we also introduced an action method that
 is invoked after the grammar rule was done matching. What about the action
-method for the optable? Naturally, there must be some actions to be executed.
-Well, there is, but to be frank, I cannot explain it to you. Every time I
-needed the action method for an optable, I just copied it from an existing
-actions file. Of course, the action method's name should match the name of the
-optable (the rule that has the "is optable" clause). So, here goes:
-
- method expression($/, $key) {
-     if ($key eq 'end') {
-         make $($<expr>);
-     }
-     else {
-         my $past := PAST::Op.new( :name($<type>),
-                                   :pasttype($<top><pasttype>),
-                                   :pirop($<top><pirop>),
-                                   :lvalue($<top><lvalue>),
-                                   :node($/) );
-
-         for @($/) {
-             $past.push( $($_) );
-         }
-
-         make $past;
-     }
- }
+method for EXPR? Our Squaak::Actions class inherits that from HLL::Actions. We don't have to write
+one.
 
 =head2 What's Next?
 
@@ -360,21 +311,14 @@
 There may be no whitespace between the individual digits and the dot. Make sure
 you understand the difference between a "rule" and a "token".
 
-Hint: currently, the Parrot Grammar Engine (PGE), the component that "executes"
-the regular expressions (your grammar rules), matches alternative subrules in
-order. This means that this won't work:
-
- rule term {
-     | <integer_constant>
-     | <float_constant>
-     ...
- }
+Hint: a floating-point constant should produce a value of type 'Float'.
 
-because when giving the input C<42.0>, C<42> will be matched by
-<integer_constant>, and the dot and "0" will remain. Therefore, put the
-<float_constant> alternative in rule term before <integer_constant>.
-At some point, PGE will support I<longest-token matching>, so that this issue
-will disappear.
+Note: in Perl 6 regexes, when matching an alternation as in a proto rule, the alternative which
+matches the most of the string is supposed to match. However, NQP-rx does not yet implement this. As
+a work-around, NQP-rx specifies that the version of a proto regex with the longest name will match.
+Since the part of a floating-point constant before the decimal place is the same as an integer
+constant, unless the token for floating-point constants has a longer name than the token for
+integer-constants, the latter will match and a syntax error will result.
 
 =item *
 
@@ -399,12 +343,25 @@
 between the individual digits and the dot. Make sure you understand the
 difference between a C<rule> and a C<token>.
 
-    token float_constant {
+Hint: a floating-point constant should produce a value of type 'Float'.
+
+Note: in Perl 6 regexes, when matching an alternation as in a proto rule, the alternative which
+matches the most of the string is supposed to match. However, NQP-rx does not yet implement this. As
+a work-around, NQP-rx specifies that the version of a proto regex with the longest name will match.
+Since the part of a floating-point constant before the decimal place is the same as an integer
+constant, unless the token for floating-point constants has a longer name than the token for
+integer-constants, the latter will match and a syntax error will result.
+
+    token term:sym<float_constant_long> { # longer to work around lack of LTM
         [
         | \d+ '.' \d*
         | \d* '.' \d+
         ]
-        {*}
+    }
+
+    # with action method:
+    method term:sym<float_constant_long>($/) { # name worksaround lack of LTM
+        make PAST::Val.new(:value(+$/), :returns<Float>);
     }
 
 =item 2
@@ -412,43 +369,38 @@
 For sake of completeness (and easy copy-paste for you), here's the list of
 operator declarations as I wrote them for Squaak:
 
-    rule expression    is optable              { ... }
+    INIT {
+        Squaak::Grammar.O(':prec<w>, :assoc<unary>', '%unary-negate');
+        Squaak::Grammar.O(':prec<v>, :assoc<unary>', '%unary-not');
+        Squaak::Grammar.O(':prec<u>, :assoc<left>',  '%multiplicative');
+        Squaak::Grammar.O(':prec<t>, :assoc<left>',  '%additive');
+        Squaak::Grammar.O(':prec<s>, :assoc<left>',  '%relational');
+        Squaak::Grammar.O(':prec<r>, :assoc<left>',  '%conjunction');
+        Squaak::Grammar.O(':prec<q>, :assoc<left>',  '%disjunction');
+    }
+
+    token circumfix:sym<( )> { '(' <.ws> <EXPR> ')' }
 
-    proto 'infix:or'   is precedence('1')
-                       is pasttype('unless')   { ... }
-    proto 'infix:and'  is tighter('infix:or')
-                       is pasttype('if')       { ... }
-
-    proto 'infix:<'    is tighter('infix:and') { ... }
-    proto 'infix:<='   is equiv('infix:<')     { ... }
-    proto 'infix:>'    is equiv('infix:<')     { ... }
-    proto 'infix:>='   is equiv('infix:<')     { ... }
-    proto 'infix:=='   is equiv('infix:<')     { ... }
-    proto 'infix:!='   is equiv('infix:<')     { ... }
-
-    proto 'infix:+'    is tighter('infix:<')
-                       is pirop('n_add')       { ... }
-    proto 'infix:-'    is equiv('infix:+')
-                       is pirop('n_sub')       { ... }
-
-    proto 'infix:..'   is equiv('infix:+')
-                       is pirop('n_concat')    { ... }
-
-    proto 'infix:*'    is tighter('infix:+')
-                       is pirop('n_mul')       { ... }
-    proto 'infix:%'    is equiv('infix:*')
-                       is pirop('n_mod')       { ... }
-    proto 'infix:/'    is equiv('infix:*')
-                       is pirop('n_div')       { ... }
-
-    proto 'prefix:not' is tighter('infix:*')
-                       is pirop('not')       { ... }
-    proto 'prefix:-'   is tighter('prefix:not')
-                       is pirop('neg')       { ... }
+    token prefix:sym<-> { <sym> <O('%unary-negate, :pirop<neg>')> }
+    token prefix:sym<not> { <sym> <O('%unary-not, :pirop<isfalse>')> }
 
-    proto 'term:'      is tighter('prefix:-')
-                       is parsed(&term)        { ... }
+    token infix:sym<*>  { <sym> <O('%multiplicative, :pirop<mul>')> }
+    token infix:sym<%>  { <sym> <O('%multiplicative, :pirop<mod>')> }
+    token infix:sym</>  { <sym> <O('%multiplicative, :pirop<div>')> }
+
+    token infix:sym<+>  { <sym> <O('%additive, :pirop<add>')> }
+    token infix:sym<->  { <sym> <O('%additive, :pirop<sub>')> }
+    token infix:sym<..> { <sym> <O('%additive, :pirop<concat>')> }
+
+    token infix:sym«<» { <sym> <O('%relational, :pirop<isle iPP>')> }
+    token infix:sym«<=» { <sym> <O('%relational, :pirop<islt iPP>')> }
+    token infix:sym«>» { <sym> <O('%relational, :pirop<isgt iPP>')> }
+    token infix:sym«>=» { <sym> <O('%relational, :pirop<isge iPP>')> }
+    token infix:sym«==» { <sym> <O('%relational, :pirop<iseq iPP>')> }
+    token infix:sym«!=» { <sym> <O('%relational, :pirop<isne iPP>')> }
 
+    token infix:sym<and> { <sym> <O('%conjunction, :pasttype<if>')> }
+    token infix:sym<or> { <sym> <O('%disjunction, :pasttype<unless>')> }
 
 =back
 

Modified: branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_8.pod
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_8.pod	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_8.pod	Wed Jul 21 04:47:35 2010	(r48157)
@@ -37,9 +37,8 @@
 that can be assigned to variables, you can have array literals. Below is the
 grammar rule for this:
 
- rule array_constructor {
-     '[' [ <expression> [',' <expression>]*]? ']'
-     {*}
+ rule circumfix:sym<[ ]> {
+     '[' [<EXPR> ** ',']? ']'
  }
 
 Some examples are shown below:
@@ -60,16 +59,21 @@
 constructed through a hashtable constructor. The syntax for this is expressed
 below:
 
- rule hash_constructor {
-     '{' [<named_field> [',' <named_field>]* ]? '}'
-     {*}
+ rule circumfix:sym<{ }> {
+     '{' [<named_field> ** ',']? '}'
  }
 
  rule named_field {
-     <string_constant> '=>' <expression>
-     {*}
+     <string_constant> '=>' <EXPR>
  }
 
+ # We need to rename our existing string_constant term to a separate rule
+ # so that we can use it specifically.
+ token term:sym<string_constant> { <string_constant> }
+
+ # Don't forget to rename the action method.
+ token string_constant { <quote> }
+
 Some examples are shown below:
 
     foo = {}
@@ -91,23 +95,13 @@
 
  rule primary {
      <identifier> <postfix_expression>*
-     {*}
  }
 
- rule postfix_expression {
-     | <index> {*}   #= index
-     | <key> {*}     #= key
- }
+ proto rule postfix_expression { <...> }
 
- rule index {
-     '[' <expression> ']'
-     {*}
- }
+ rule postfix_expression:sym<index> { '[' <EXPR> ']' }
 
- rule key {
-     '{' <expression> '}'
-     {*}
- }
+ rule postfix_expression:sym<key> { '{' <EXPR> '}' }
 
 A primary object is now an identifier followed by any number of
 postfix-expressions. A postfix expression is either a hashtable key or an array
@@ -121,8 +115,8 @@
 is actually quite simple. First, let us see how to implement the action method
 index.
 
- method index($/) {
-     my $index := $( $<expression> );
+ method postfix_expression:sym<index>($/) {
+     my $index := $<EXPR>.ast;
      my $past  := PAST::Var.new( $index,
                                  :scope('keyed'),
                                  :viviself('Undef'),
@@ -132,7 +126,7 @@
      make $past;
  }
 
-First, we retrieve the PAST node for expression. Then, we create a keyed
+First, we retrieve the PAST node for EXPR. Then, we create a keyed
 variable access operation, by creating a PAST::Var node and setting its scope
 to C<keyed>. If a C<PAST::Var> node has keyed scope, then the first child is
 evaluated as the aggregate object, and the second child is evaluated as the
@@ -144,10 +138,10 @@
 This is shown below.
 
  method primary($/) {
-     my $past := $( $<identifier> );
+     my $past := $<identifier>.ast;
 
      for $<postfix_expression> {
-         my $expr := $( $_ );
+         my $expr := $_.ast;
          $expr.unshift( $past );
          $past := $expr;
      }
@@ -219,15 +213,19 @@
 hashtable is created. This happens to be exactly what we need! Implementing
 the array and hash constructors becomes trivial:
 
- .sub '!array'
-     .param pmc fields :slurpy
-     .return (fields)
- .end
+ # Inset this in src/Squaak/Runtime.pm
 
- .sub '!hash'
-     .param pmc fields :named :slurpy
-     .return (fields)
- .end
+ {
+     my sub array (*@args) { @args; }
+     my sub hash (*%args) { %args; }
+
+     Q:PIR {
+         $P0 = find_lex 'array'
+         set_global '!array', $P0
+         $P0 = find_lex 'hash'
+         set_global '!hash', $P1
+     }
+ }
 
 Array and hashtable constructors can then be compiled into subroutine calls to
 the respective Parrot subroutines, passing all fields as arguments. (Note that
@@ -236,8 +234,8 @@
 
 =head2 Basic data types and Aggregates as arguments
 
-All data types, both basic and aggregate data types are represented by Parrot
-Magic Cookies (PMCs). The PMC is one of the four built-in data types that Parrot
+All data types, both basic and aggregate data types are represented by Polymorphic
+Containers (PMCs). The PMC is one of the four built-in data types that Parrot
 can handle; the others are integer, floating-point and string. Currently, the
 PCT can only generate code to handle PMCs, not the other basic data types.
 Parrot has registers for each its four built-in data types. The integer,
@@ -290,7 +288,7 @@
 
 =item *
 
-Implement the action methods for array_constructor and hash_constructor. Use a
+Implement the action methods for circumfix:sym<[ ]> and circumfix:sym<{ }>. Use a
 C<PAST::Op> node and set the pasttype to 'call'. Use the "name" attribute to
 specify the names of the subs to be invoked (e.g., C<:name("!array")> ). Note
 that all hash fields must be passed as named arguments. Check out PDD26 for
@@ -315,27 +313,29 @@
 
 =item 1
 
-    method key($/) {
-    my $key := $( $<expression> );
+    method postfix_expression:sym<key>($/) {
+        my $key := $<expression>.ast;
 
-    make PAST::Var.new( $key, :scope('keyed'),
-                              :vivibase('Hash'),
-                              :viviself('Undef'),
-                              :node($/) );
+        make PAST::Var.new( $key, :scope('keyed'),
+                                  :vivibase('Hash'),
+                                  :viviself('Undef'),
+                                  :node($/) );
     }
 
 =item 2
 
+    method term:sym<string_constant>($/) { make $<string_constant>.ast; }
+
     method named_field($/) {
-        my $past := $( $<expression> );
-        my $name := $( $<string_constant> );
+        my $past := $<EXPR>.ast;
+        my $name := $<string_constant>.ast;
         ## the passed expression is in fact a named argument,
         ## use the named() accessor to set that name.
         $past.named($name);
         make $past;
     }
 
-    method array_constructor($/) {
+    method circumfix:sym<[ ]>($/) {
         ## use the parrot calling conventions to
         ## create an array,
         ## using the "anonymous" sub !array
@@ -343,13 +343,13 @@
         my $past := PAST::Op.new( :name('!array'),
                                   :pasttype('call'),
                                   :node($/) );
-        for $<expression> {
-            $past.push($($_));
+        for $<EXPR> {
+            $past.push($_.ast);
         }
         make $past;
     }
 
-    method hash_constructor($/) {
+    method circumfix:sym<{ }>($/) {
         ## use the parrot calling conventions to
         ## create a hash, using the "anonymous" sub
         ## !hash (which is not a valid Squaak name)
@@ -357,31 +357,25 @@
                                   :pasttype('call'),
                                   :node($/) );
         for $<named_field> {
-            $past.push($($_));
+            $past.push($_.ast);
         }
         make $past;
     }
 
 =item 3
 
-    rule postfix_expression {
-        | <key> {*}         #= key
-        | <member> {*}      #= member
-        | <index> {*}       #= index
-    }
 
-    rule member {
+    rule postfix_expression:sym<member> {
         '.' <identifier>
-        {*}
     }
 
-    method member($/) {
-        my $member := $( $<identifier> );
+    method postfix_expression:sym<member>($/) {
+        my $member := $<identifier>.ast;
         ## x.y is syntactic sugar for x{"y"},
         ## so stringify the identifier:
-        my $key    := PAST::Val.new( :returns('String'),
-                                     :value($member.name()),
-                                     :node($/) );
+        my $key := PAST::Val.new( :returns('String'),
+                                  :value($member.name),
+                                  :node($/) );
 
         ## the rest of this method is the same
         ## as method key() above.

Modified: branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_9.pod
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_9.pod	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/doc/tutorial_episode_9.pod	Wed Jul 21 04:47:35 2010	(r48157)
@@ -181,9 +181,9 @@
  ## start here.
  main()
 
-Note the use of a subroutine "print". Check out the file src/builtins/say.pir,
-and rename the sub "say" (which was generated by the language shell creation
-script) to "print".
+Note the use of a subroutine "print". Check out the file src/Squaak/Runtime.pm,
+delete the generated sub "print" and rename the sub "say" to "print" (which was generated by the
+language shell creation script).
 
 =head2 Exercises
 

Modified: branches/gsoc_threads/examples/languages/squaak/setup.pir
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/setup.pir	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/setup.pir	Wed Jul 21 04:47:35 2010	(r48157)
@@ -1,5 +1,5 @@
-#! ../../../parrot
-# Copyright (C) 2009, Parrot Foundation.
+#!/usr/bin/env parrot
+# Copyright (C) 2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -10,11 +10,9 @@
 
 No Configure step, no Makefile generated.
 
-See F<runtime/library/distutils.pir>.
-
 =head1 USAGE
 
-    $ parrot setup.pir
+    $ parrot setup.pir build
     $ parrot setup.pir test
     $ sudo parrot setup.pir install
 
@@ -25,58 +23,86 @@
     $S0 = shift args
     load_bytecode 'distutils.pbc'
 
+    .local int reqsvn
+    $P0 = new 'FileHandle'
+    $P0.'open'('PARROT_REVISION', 'r')
+    $S0 = $P0.'readline'()
+    reqsvn = $S0
+    $P0.'close'()
+
+    .local pmc config
+    config = get_config()
+    $I0 = config['revision']
+    unless $I0 goto L1
+    unless reqsvn > $I0 goto L1
+    $S1 = "Parrot revision r"
+    $S0 = reqsvn
+    $S1 .= $S0
+    $S1 .= " required (currently r"
+    $S0 = $I0
+    $S1 .= $S0
+    $S1 .= ")\n"
+    print $S1
+    end
+  L1:
+
     $P0 = new 'Hash'
     $P0['name'] = 'Squaak'
-    $P0['abstract'] = 'Squaak is a case-study language'
-    $P0['description'] = 'Squaak is a case-study language'
-    $P0['license_type'] = 'Artistic License 2.0'
-    $P0['license_uri'] = 'http://www.perlfoundation.org/artistic_license_2_0'
-    $P0['copyright_holder'] = 'Parrot Foundation'
-    $P0['checkout_uri'] = 'https://svn.parrot.org/parrot/trunk/examples/languages/squaak'
-    $P0['browser_uri'] = 'http://trac.parrot.org/parrot/browser/trunk/examples/languages/squaak'
-    $P0['project_uri'] = 'http://trac.parrot.org/parrot/browser/trunk/examples/languages/squaak'
+    $P0['abstract'] = 'the Squaak compiler'
+    $P0['description'] = 'the Squaak for Parrot VM.'
 
     # build
-    $P1 = new 'Hash'
-    $P1['src/gen_grammar.pir'] = 'src/parser/grammar.pg'
-    $P0['pir_pge'] = $P1
-
-    $P2 = new 'Hash'
-    $P2['src/gen_actions.pir'] = 'src/parser/actions.pm'
-    $P0['pir_nqprx'] = $P2
-
-    $P3 = new 'Hash'
-    $P4 = split "\n", <<'SOURCES'
-squaak.pir
+#    $P1 = new 'Hash'
+#    $P1['squaak_ops'] = 'src/ops/squaak.ops'
+#    $P0['dynops'] = $P1
+
+#    $P2 = new 'Hash'
+#    $P3 = split ' ', 'src/pmc/squaak.pmc'
+#    $P2['squaak_group'] = $P3
+#    $P0['dynpmc'] = $P2
+
+    $P4 = new 'Hash'
+    $P4['src/gen_actions.pir'] = 'src/Squaak/Actions.pm'
+    $P4['src/gen_compiler.pir'] = 'src/Squaak/Compiler.pm'
+    $P4['src/gen_grammar.pir'] = 'src/Squaak/Grammar.pm'
+    $P4['src/gen_runtime.pir'] = 'src/Squaak/Runtime.pm'
+    $P0['pir_nqp-rx'] = $P4
+
+    $P5 = new 'Hash'
+    $P6 = split "\n", <<'SOURCES'
+src/squaak.pir
 src/gen_actions.pir
+src/gen_compiler.pir
 src/gen_grammar.pir
-src/builtins/say.pir
+src/gen_runtime.pir
 SOURCES
-    $S0 = pop $P4
-    $P3['squaak.pbc'] = $P4
-    $P0['pbc_pir'] = $P3
-
-    $P5 = new 'Hash'
-    $P5['parrot-squaak'] = 'squaak.pbc'
-    $P0['exe_pbc'] = $P5
-    $P0['installable_pbc'] = $P5
+    $S0 = pop $P6
+    $P5['squaak/squaak.pbc'] = $P6
+    $P5['squaak.pbc'] = 'squaak.pir'
+    $P0['pbc_pir'] = $P5
+
+    $P7 = new 'Hash'
+    $P7['parrot-squaak'] = 'squaak.pbc'
+    $P0['installable_pbc'] = $P7
 
     # test
     $S0 = get_parrot()
     $S0 .= ' squaak.pbc'
     $P0['prove_exec'] = $S0
 
+    # install
+    $P0['inst_lang'] = 'squaak/squaak.pbc'
+
     # dist
-    $P6 = glob('doc/*.pod examples/*.sq')
-    $P0['manifest_includes'] = $P6
-    $P5 = split ' ', 'MAINTAINER README'
-    $P0['doc_files'] = $P5
+    $P0['doc_files'] = 'README'
 
     .tailcall setup(args :flat, $P0 :flat :named)
 .end
 
+
 # Local Variables:
 #   mode: pir
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:
+

Modified: branches/gsoc_threads/examples/languages/squaak/squaak.pir
==============================================================================
--- branches/gsoc_threads/examples/languages/squaak/squaak.pir	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/examples/languages/squaak/squaak.pir	Wed Jul 21 04:47:35 2010	(r48157)
@@ -1,4 +1,4 @@
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2010, Parrot Foundation.
 # $Id$
 
 =head1 TITLE
@@ -7,39 +7,12 @@
 
 =head2 Description
 
-This is the base file for the Squaak compiler.
-
-This file includes the parsing and grammar rules from
-the src/ directory, loads the relevant PGE libraries,
-and registers the compiler under the name 'Squaak'.
+This is the entry point for the Squaak compiler.
 
 =head2 Functions
 
 =over 4
 
-=item onload()
-
-Creates the Squaak compiler using a C<PCT::HLLCompiler>
-object.
-
-=cut
-
-.namespace [ 'Squaak';'Compiler' ]
-
-.sub 'onload' :anon :load :init
-    load_bytecode 'PCT.pbc'
-
-    $P0 = get_hll_global ['PCT'], 'HLLCompiler'
-    $P1 = $P0.'new'()
-    $P1.'language'('Squaak')
-    $P1.'parsegrammar'('Squaak::Grammar')
-    $P1.'parseactions'('Squaak::Grammar::Actions')
-
-    $P1.'commandline_banner'("Squaak for Parrot VM\n")
-    $P1.'commandline_prompt'('> ')
-
-.end
-
 =item main(args :slurpy)  :main
 
 Start compilation by passing any command line C<args>
@@ -50,36 +23,12 @@
 .sub 'main' :main
     .param pmc args
 
+    load_language 'squaak'
+
     $P0 = compreg 'Squaak'
     $P1 = $P0.'command_line'(args)
 .end
 
-
-.include 'src/builtins/say.pir'
-.include 'src/gen_grammar.pir'
-.include 'src/gen_actions.pir'
-
-
-.namespace []
-
-.sub 'initlist' :anon :load :init
-    $P0 = new 'ResizablePMCArray'
-    set_hll_global ['Squaak';'Grammar';'Actions'], '@?BLOCK', $P0
-.end
-
-.namespace []
-
-.sub '!array'
-    .param pmc fields :slurpy
-    .return (fields)
-.end
-
-.sub '!hash'
-    .param pmc fields :slurpy :named
-    .return (fields)
-.end
-
-
 =back
 
 =cut

Copied: branches/gsoc_threads/examples/languages/squaak/src/Squaak/Actions.pm (from r48156, trunk/examples/languages/squaak/src/Squaak/Actions.pm)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_threads/examples/languages/squaak/src/Squaak/Actions.pm	Wed Jul 21 04:47:35 2010	(r48157, copy of r48156, trunk/examples/languages/squaak/src/Squaak/Actions.pm)
@@ -0,0 +1,404 @@
+#! nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+class Squaak::Actions is HLL::Actions;
+
+method begin_TOP ($/) {
+    our $?BLOCK := PAST::Block.new(:blocktype<declaration>, :node($/),
+                                   :hll<squaak>);
+    our @?BLOCK;
+    @?BLOCK.unshift($?BLOCK);
+}
+
+method TOP($/) {
+    our @?BLOCK;
+    my $past := @?BLOCK.shift();
+    $past.push($<statementlist>.ast);
+    make $past;
+}
+
+method statementlist($/) {
+    my $past := PAST::Stmts.new( :node($/) );
+    for $<stat_or_def> { $past.push( $_.ast ); }
+    make $past;
+}
+
+method stat_or_def($/) {
+    if $<statement> {
+        make $<statement>.ast;
+    }
+    else { # Must be a def
+        make $<sub_definition>.ast;
+    }
+}
+
+method sub_definition($/) {
+     our $?BLOCK;
+     our @?BLOCK;
+     my $past := $<parameters>.ast;
+     my $name := $<identifier>.ast;
+
+     # set the sub's name
+     $past.name($name.name);
+
+     # add all statements to the sub's body
+     for $<statement> {
+         $past.push($_.ast);
+     }
+
+     # and remove the block from the scope stack and restore the current block
+     @?BLOCK.shift();
+     $?BLOCK := @?BLOCK[0];
+     make $past;
+}
+
+method parameters($/) {
+    our $?BLOCK;
+    our @?BLOCK;
+    my $past := PAST::Block.new( :blocktype('declaration'), :node($/) );
+
+    # now add all parameters to this block
+    for $<identifier> {
+        my $param := $_.ast;
+        $param.scope('parameter');
+        $past.push($param);
+
+        # register the parameter as a local symbol
+        $past.symbol($param.name(), :scope('lexical'));
+    }
+
+    # now put the block into place on the scope stack
+    $?BLOCK := $past;
+    @?BLOCK.unshift($past);
+
+    make $past;
+}
+
+
+method statement:sym<assignment>($/) {
+    my $lhs := $<primary>.ast;
+    my $rhs := $<EXPR>.ast;
+    $lhs.lvalue(1);
+    make PAST::Op.new($lhs, $rhs, :pasttype<bind>, :node($/));
+}
+
+method for_init($/) {
+    our $?BLOCK;
+    our @?BLOCK;
+
+    ## create a new scope here, so that we can
+    ## add the loop variable
+    ## to this block here, which is convenient.
+    $?BLOCK := PAST::Block.new( :blocktype('immediate'),
+                                :node($/) );
+    @?BLOCK.unshift($?BLOCK);
+
+    my $iter := $<identifier>.ast;
+    ## set a flag that this identifier is being declared
+    $iter.isdecl(1);
+    $iter.scope('lexical');
+    ## the identifier is initialized with this expression
+    $iter.viviself( $<EXPR>.ast );
+
+    ## enter the loop variable into the symbol table.
+    $?BLOCK.symbol($iter.name(), :scope('lexical'));
+
+    make $iter;
+}
+
+method step($/) {
+    make $<EXPR>.ast;
+}
+
+method statement:sym<for>($/) {
+    our $?BLOCK;
+    our @?BLOCK;
+
+    my $init := $<for_init>.ast;
+    ## cache the name of the loop variable
+    my $itername := $init.name();
+    my $iter := PAST::Var.new( :name($itername),
+                               :scope('lexical'),
+                               :node($/) );
+    ## the body of the loop consists of the statements written by the user and
+    ## the increment instruction of the loop iterator.
+
+    my $body := @?BLOCK.shift();
+    $?BLOCK  := @?BLOCK[0];
+    for $<statement> {
+        $body.push($_.ast);
+    }
+
+    my $step;
+    if $<step> {
+        my $stepsize := $<step>[0].ast;
+        $step := PAST::Op.new( $iter, $stepsize,
+                               :pirop('add__0P+'), :node($/) );
+    }
+    else { ## default is increment by 1
+        $step := PAST::Op.new( $iter, :pirop('inc'), :node($/) );
+    }
+    $body.push($step);
+
+    ## while loop iterator <= end-expression
+    my $cond := PAST::Op.new( :pirop<isle__IPP>,
+                              $iter,
+                              $<EXPR>.ast );
+    my $loop := PAST::Op.new( $cond, $body, :pasttype('while'), :node($/) );
+
+    make PAST::Stmts.new( $init, $loop, :node($/) );
+}
+
+method statement:sym<if>($/) {
+    my $cond := $<EXPR>.ast;
+    my $past := PAST::Op.new( $cond, $<then>.ast,
+                              :pasttype('if'),
+                              :node($/) );
+    if $<else> {
+        $past.push($<else>[0].ast);
+    }
+    make $past;
+}
+
+method statement:sym<sub_call>($/) {
+    my $invocant := $<primary>.ast;
+    my $past     := $<arguments>.ast;
+    $past.unshift($invocant);
+    make $past;
+}
+
+method arguments($/) {
+    my $past := PAST::Op.new( :pasttype('call'), :node($/) );
+    for $<EXPR> {
+        $past.push($_.ast);
+    }
+    make $past;
+}
+
+method statement:sym<throw>($/) {
+    make PAST::Op.new( $<EXPR>.ast,
+                       :pirop('die'),
+                       :node($/) );
+}
+
+method statement:sym<try>($/) {
+    ## get the try block
+    my $try := $<try>.ast;
+
+    ## create a new PAST::Stmts node for
+    ## the catch block; note that no
+    ## PAST::Block is created, as this
+    ## currently has problems with the
+    ## exception object. For now this will
+    ## do.
+    my $catch := PAST::Stmts.new( :node($/) );
+    $catch.push($<catch>.ast);
+
+    ## get the exception identifier;
+    ## set a declaration flag, the scope,
+    ## and clear the viviself attribute.
+    my $exc := $<exception>.ast;
+    $exc.isdecl(1);
+    $exc.scope('lexical');
+    $exc.viviself(0);
+    ## generate instruction to retrieve the exception object (and the
+    ## exception message, that is passed automatically in PIR, this is stored
+    ## into $S0 (but not used).
+    my $pir := "    .get_results (\%r, \$S0)\n"
+             ~ "    store_lex '" ~ $exc.name()
+             ~ "', \%r";
+
+    $catch.unshift( PAST::Op.new( :inline($pir), :node($/) ) );
+
+    ## do the declaration of the exception object as a lexical here:
+    $catch.unshift( $exc );
+    make PAST::Op.new( $try, $catch, :pasttype('try'), :node($/) );
+}
+
+method exception($/) {
+    my $past := $<identifier>.ast;
+    make $past;
+}
+
+method statement:sym<var>($/) {
+    our $?BLOCK;
+    # get the PAST for the identifier
+    my $past := $<identifier>.ast;
+
+    # this is a local (it's being defined)
+    $past.scope('lexical');
+
+    # set a declaration flag
+    $past.isdecl(1);
+
+    # check for the initialization expression
+    if $<EXPR> {
+        # use the viviself clause to add a
+        # an initialization expression
+        $past.viviself($<EXPR>[0].ast);
+    }
+    else { # no initialization, default to "Undef"
+        $past.viviself('Undef');
+    }
+
+    my $name := $past.name();
+
+    if $?BLOCK.symbol( $name ) {
+        # symbol is already present
+        $/.CURSOR.panic("Error: symbol " ~ $name ~ " was already defined.\n");
+    }
+    else {
+        $?BLOCK.symbol( $name, :scope('lexical') );
+    }
+    make $past;
+}
+
+method statement:sym<while>($/) {
+    my $cond := $<EXPR>.ast;
+    my $body := $<block>.ast;
+    make PAST::Op.new( $cond, $body, :pasttype('while'), :node($/) );
+}
+
+method begin_block($/) {
+    our $?BLOCK;
+    our @?BLOCK;
+    $?BLOCK := PAST::Block.new(:blocktype('immediate'),
+                                   :node($/));
+    @?BLOCK.unshift($?BLOCK);
+}
+
+method block($/) {
+    our $?BLOCK;
+    our @?BLOCK;
+    my $past := @?BLOCK.shift();
+    $?BLOCK  := @?BLOCK[0];
+
+    for $<statement> {
+        $past.push($_.ast);
+    }
+    make $past;
+}
+
+method primary($/) {
+    my $past := $<identifier>.ast;
+
+    for $<postfix_expression> {
+        my $expr := $_.ast;
+        $expr.unshift( $past );
+        $past := $expr;
+    }
+
+    make $past;
+}
+
+method postfix_expression:sym<index>($/) {
+    my $index := $<EXPR>.ast;
+    my $past  := PAST::Var.new( $index,
+                                :scope('keyed'),
+                                :viviself('Undef'),
+                                :vivibase('ResizablePMCArray'),
+                                :node($/) );
+
+    make $past;
+}
+
+method postfix_expression:sym<key>($/) {
+    my $key := $<EXPR>.ast;
+
+    make PAST::Var.new( $key, :scope('keyed'),
+                              :vivibase('Hash'),
+                              :viviself('Undef'),
+                              :node($/) );
+}
+
+method postfix_expression:sym<member>($/) {
+    my $member := $<identifier>.ast;
+    ## x.y is syntactic sugar for x{"y"},
+    ## so stringify the identifier:
+    my $key := PAST::Val.new( :returns('String'),
+                              :value($member.name),
+                              :node($/) );
+
+    ## the rest of this method is the same
+    ## as method key() above.
+    make PAST::Var.new( $key, :scope('keyed'),
+                        :vivibase('Hash'),
+                        :viviself('Undef'),
+                        :node($/) );
+}
+
+method identifier($/) {
+     our @?BLOCK;
+     my $name  := ~$<ident>;
+     my $scope := 'package'; # default value
+     # go through all scopes and check if the symbol
+     # is registered as a local. If so, set scope to
+     # local.
+     for @?BLOCK {
+         if $_.symbol($name) {
+             $scope := 'lexical';
+         }
+     }
+
+     make PAST::Var.new( :name($name),
+                         :scope($scope),
+                         :viviself('Undef'),
+                         :node($/) );
+}
+
+method term:sym<integer_constant>($/) {
+    make PAST::Val.new(:value($<integer>.ast), :returns<Integer>);
+}
+method term:sym<string_constant>($/) { make $<string_constant>.ast; }
+method string_constant($/) {
+    my $past := $<quote>.ast;
+    $past.returns('String');
+    make $past;
+}
+method term:sym<float_constant_long>($/) { # name worksaround lack of LTM
+    make PAST::Val.new(:value(+$/), :returns<Float>);
+}
+method term:sym<primary>($/) {
+    make $<primary>.ast;
+}
+
+method quote:sym<'>($/) { make $<quote_EXPR>.ast; }
+method quote:sym<">($/) { make $<quote_EXPR>.ast; }
+
+method circumfix:sym<( )>($/) { make $<EXPR>.ast; }
+
+method named_field($/) {
+    my $past := $<EXPR>.ast;
+    my $name := $<string_constant>.ast;
+    ## the passed expression is in fact a named argument,
+    ## use the named() accessor to set that name.
+    $past.named($name);
+    make $past;
+}
+
+method circumfix:sym<[ ]>($/) {
+    ## use the parrot calling conventions to
+    ## create an array,
+    ## using the "anonymous" sub !array
+    ## (which is not a valid Squaak name)
+    my $past := PAST::Op.new( :name('!array'),
+                              :pasttype('call'),
+                              :node($/) );
+    for $<EXPR> {
+        $past.push($_.ast);
+    }
+    make $past;
+}
+
+method circumfix:sym<{ }>($/) {
+    ## use the parrot calling conventions to
+    ## create a hash, using the "anonymous" sub
+    ## !hash (which is not a valid Squaak name)
+    my $past := PAST::Op.new( :name('!hash'),
+                              :pasttype('call'),
+                              :node($/) );
+    for $<named_field> {
+        $past.push($_.ast);
+    }
+    make $past;
+}

Copied: branches/gsoc_threads/examples/languages/squaak/src/Squaak/Compiler.pm (from r48156, trunk/examples/languages/squaak/src/Squaak/Compiler.pm)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_threads/examples/languages/squaak/src/Squaak/Compiler.pm	Wed Jul 21 04:47:35 2010	(r48157, copy of r48156, trunk/examples/languages/squaak/src/Squaak/Compiler.pm)
@@ -0,0 +1,12 @@
+#! nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+class Squaak::Compiler is HLL::Compiler;
+
+INIT {
+    Squaak::Compiler.language('Squaak');
+    Squaak::Compiler.parsegrammar(Squaak::Grammar);
+    Squaak::Compiler.parseactions(Squaak::Actions);
+    Squaak::Compiler.commandline_banner("Squaak for Parrot VM.\n");
+    Squaak::Compiler.commandline_prompt('> ');
+}

Copied: branches/gsoc_threads/examples/languages/squaak/src/Squaak/Grammar.pm (from r48156, trunk/examples/languages/squaak/src/Squaak/Grammar.pm)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_threads/examples/languages/squaak/src/Squaak/Grammar.pm	Wed Jul 21 04:47:35 2010	(r48157, copy of r48156, trunk/examples/languages/squaak/src/Squaak/Grammar.pm)
@@ -0,0 +1,205 @@
+#! nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+=begin overview
+
+This is the grammar for Squaak in Perl 6 rules.
+
+=end overview
+
+grammar Squaak::Grammar is HLL::Grammar;
+
+token begin_TOP {
+    <?>
+}
+
+token TOP {
+    <.begin_TOP>
+    <statementlist>
+    [ $ || <.panic: "Syntax error"> ]
+}
+
+## Lexer items
+
+# This <ws> rule treats # as "comment to eol".
+token ws {
+    <!ww>
+    [ '#' \N* \n? | \s+ ]*
+}
+
+## Statements
+
+rule statementlist {
+    <stat_or_def>*
+}
+
+rule stat_or_def {
+    | <statement>
+    | <sub_definition>
+}
+
+rule sub_definition {
+    'sub' <identifier> <parameters>
+    <statement>*
+    'end'
+}
+
+rule parameters {
+   '(' [<identifier> ** ',']? ')'
+}
+
+proto rule statement { <...> }
+
+rule statement:sym<assignment> {
+    <primary> '=' <EXPR>
+}
+
+rule statement:sym<do> {
+    <sym> <block> 'end'
+}
+
+rule statement:sym<for> {
+    <sym> <for_init> ',' <EXPR> <step>?
+    'do' <statement>* 'end'
+}
+
+rule step {
+    ',' <EXPR>
+}
+
+rule for_init {
+    'var' <identifier> '=' <EXPR>
+}
+
+rule statement:sym<if> {
+    <sym> <EXPR> 'then' $<then>=<block>
+    ['else' $<else>=<block> ]?
+    'end'
+}
+
+rule statement:sym<sub_call> {
+    <primary> <arguments>
+}
+
+rule arguments {
+    '(' [<EXPR> ** ',']? ')'
+}
+
+rule statement:sym<throw> {
+    <sym> <EXPR>
+}
+
+rule statement:sym<try> {
+    <sym> $<try>=<block>
+    'catch' <exception>
+    $<catch>=<block>
+    'end'
+}
+
+rule exception {
+    <identifier>
+}
+
+rule statement:sym<var> {
+    <sym> <identifier> ['=' <EXPR>]?
+}
+
+rule statement:sym<while> {
+    <sym> <EXPR> 'do' <block> 'end'
+}
+
+token begin_block {
+    <?>
+}
+
+rule block {
+    <.begin_block>
+    <statement>*
+}
+
+## Terms
+
+rule primary {
+    <identifier> <postfix_expression>*
+}
+
+proto rule postfix_expression { <...> }
+
+rule postfix_expression:sym<index> { '[' <EXPR> ']' }
+
+rule postfix_expression:sym<key> { '{' <EXPR> '}' }
+
+rule postfix_expression:sym<member> { '.' <identifier> }
+
+token identifier {
+    <!keyword> <ident>
+}
+
+token keyword {
+    ['and'|'catch'|'do'   |'else' |'end' |'for' |'if'
+    |'not'|'or'   |'sub'  |'throw'|'try' |'var'|'while']>>
+}
+
+token term:sym<integer_constant> { <integer> }
+token term:sym<string_constant> { <string_constant> }
+token string_constant { <quote> }
+token term:sym<float_constant_long> { # longer to work-around lack of LTM
+    [
+    | \d+ '.' \d*
+    | \d* '.' \d+
+    ]
+}
+token term:sym<primary> {
+    <primary>
+}
+
+proto token quote { <...> }
+token quote:sym<'> { <?[']> <quote_EXPR: ':q'> }
+token quote:sym<"> { <?["]> <quote_EXPR: ':qq'> }
+
+## Operators
+
+INIT {
+    Squaak::Grammar.O(':prec<w>, :assoc<unary>', '%unary-negate');
+    Squaak::Grammar.O(':prec<v>, :assoc<unary>', '%unary-not');
+    Squaak::Grammar.O(':prec<u>, :assoc<left>',  '%multiplicative');
+    Squaak::Grammar.O(':prec<t>, :assoc<left>',  '%additive');
+    Squaak::Grammar.O(':prec<s>, :assoc<left>',  '%relational');
+    Squaak::Grammar.O(':prec<r>, :assoc<left>',  '%conjunction');
+    Squaak::Grammar.O(':prec<q>, :assoc<left>',  '%disjunction');
+}
+
+token circumfix:sym<( )> { '(' <.ws> <EXPR> ')' }
+
+rule circumfix:sym<[ ]> {
+    '[' [<EXPR> ** ',']? ']'
+}
+
+rule circumfix:sym<{ }> {
+    '{' [<named_field> ** ',']? '}'
+}
+
+rule named_field {
+    <string_constant> '=>' <EXPR>
+}
+
+token prefix:sym<-> { <sym> <O('%unary-negate, :pirop<neg>')> }
+token prefix:sym<not> { <sym> <O('%unary-not, :pirop<isfalse>')> }
+
+token infix:sym<*>  { <sym> <O('%multiplicative, :pirop<mul>')> }
+token infix:sym<%>  { <sym> <O('%multiplicative, :pirop<mod>')> }
+token infix:sym</>  { <sym> <O('%multiplicative, :pirop<div>')> }
+
+token infix:sym<+>  { <sym> <O('%additive, :pirop<add>')> }
+token infix:sym<->  { <sym> <O('%additive, :pirop<sub>')> }
+token infix:sym<..> { <sym> <O('%additive, :pirop<concat>')> }
+
+token infix:sym«<» { <sym> <O('%relational, :pirop<islt iPP>')> }
+token infix:sym«<=» { <sym> <O('%relational, :pirop<isle iPP>')> }
+token infix:sym«>» { <sym> <O('%relational, :pirop<isgt iPP>')> }
+token infix:sym«>=» { <sym> <O('%relational, :pirop<isge iPP>')> }
+token infix:sym«==» { <sym> <O('%relational, :pirop<iseq iPP>')> }
+token infix:sym«!=» { <sym> <O('%relational, :pirop<isne iPP>')> }
+
+token infix:sym<and> { <sym> <O('%conjunction, :pasttype<if>')> }
+token infix:sym<or> { <sym> <O('%disjunction, :pasttype<unless>')> }

Copied: branches/gsoc_threads/examples/languages/squaak/src/Squaak/Runtime.pm (from r48156, trunk/examples/languages/squaak/src/Squaak/Runtime.pm)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_threads/examples/languages/squaak/src/Squaak/Runtime.pm	Wed Jul 21 04:47:35 2010	(r48157, copy of r48156, trunk/examples/languages/squaak/src/Squaak/Runtime.pm)
@@ -0,0 +1,22 @@
+#! nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+# language-specific runtime functions go here
+
+{
+    my sub array (*@args) { @args; }
+    my sub hash (*%args) { %args; }
+
+    Q:PIR {
+        $P0 = find_lex 'array'
+        set_global '!array', $P0
+        $P0 = find_lex 'hash'
+        set_global '!hash', $P0
+    }
+}
+
+sub print(*@args) {
+    pir::say(pir::join('', @args));
+    pir::return();
+}

Copied: branches/gsoc_threads/examples/languages/squaak/src/squaak.pir (from r48156, trunk/examples/languages/squaak/src/squaak.pir)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_threads/examples/languages/squaak/src/squaak.pir	Wed Jul 21 04:47:35 2010	(r48157, copy of r48156, trunk/examples/languages/squaak/src/squaak.pir)
@@ -0,0 +1,56 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 TITLE
+
+squaak.pir - A Squaak compiler.
+
+=head2 Description
+
+This is the base file for the Squaak compiler.
+
+This file includes the parsing and grammar rules from
+the src/ directory, loads the relevant PGE libraries,
+and registers the compiler under the name 'Squaak'.
+
+=head2 Functions
+
+=over 4
+
+=item onload()
+
+Creates the Squaak compiler using a C<PCT::HLLCompiler>
+object.
+
+=cut
+
+.HLL 'squaak'
+#.loadlib 'squaak_group'
+
+.namespace []
+
+.sub '' :anon :load
+    load_bytecode 'HLL.pbc'
+
+    .local pmc hllns, parrotns, imports
+    hllns = get_hll_namespace
+    parrotns = get_root_namespace ['parrot']
+    imports = split ' ', 'PAST PCT HLL Regex Hash'
+    parrotns.'export_to'(hllns, imports)
+.end
+
+.include 'src/gen_grammar.pir'
+.include 'src/gen_actions.pir'
+.include 'src/gen_compiler.pir'
+.include 'src/gen_runtime.pir'
+
+=back
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+

Modified: branches/gsoc_threads/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- branches/gsoc_threads/ext/nqp-rx/src/stage0/HLL-s0.pir	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/ext/nqp-rx/src/stage0/HLL-s0.pir	Wed Jul 21 04:47:35 2010	(r48157)
@@ -902,7 +902,7 @@
 ### .include 'gen/hllgrammar-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1279564387.65485")
+.sub "_block11"  :anon :subid("10_1279589159.66297")
 .annotate 'line', 0
     get_hll_global $P14, ["HLL";"Grammar"], "_block13" 
     capture_lex $P14
@@ -919,15 +919,15 @@
     $P332 = $P14()
 .annotate 'line', 1
     .return ($P332)
-    .const 'Sub' $P334 = "106_1279564387.65485" 
+    .const 'Sub' $P334 = "106_1279589159.66297" 
     .return ($P334)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post107") :outer("10_1279564387.65485")
+.sub "" :load :init :subid("post107") :outer("10_1279589159.66297")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1279564387.65485" 
+    .const 'Sub' $P12 = "10_1279589159.66297" 
     .local pmc block
     set block, $P12
     $P337 = get_root_global ["parrot"], "P6metaclass"
@@ -936,83 +936,83 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block13"  :subid("11_1279564387.65485") :outer("10_1279564387.65485")
+.sub "_block13"  :subid("11_1279589159.66297") :outer("10_1279589159.66297")
 .annotate 'line', 5
-    .const 'Sub' $P319 = "103_1279564387.65485" 
+    .const 'Sub' $P319 = "103_1279589159.66297" 
     capture_lex $P319
-    .const 'Sub' $P313 = "101_1279564387.65485" 
+    .const 'Sub' $P313 = "101_1279589159.66297" 
     capture_lex $P313
-    .const 'Sub' $P300 = "98_1279564387.65485" 
+    .const 'Sub' $P300 = "98_1279589159.66297" 
     capture_lex $P300
-    .const 'Sub' $P268 = "93_1279564387.65485" 
+    .const 'Sub' $P268 = "93_1279589159.66297" 
     capture_lex $P268
-    .const 'Sub' $P262 = "91_1279564387.65485" 
+    .const 'Sub' $P262 = "91_1279589159.66297" 
     capture_lex $P262
-    .const 'Sub' $P257 = "89_1279564387.65485" 
+    .const 'Sub' $P257 = "89_1279589159.66297" 
     capture_lex $P257
-    .const 'Sub' $P251 = "87_1279564387.65485" 
+    .const 'Sub' $P251 = "87_1279589159.66297" 
     capture_lex $P251
-    .const 'Sub' $P245 = "85_1279564387.65485" 
+    .const 'Sub' $P245 = "85_1279589159.66297" 
     capture_lex $P245
-    .const 'Sub' $P240 = "83_1279564387.65485" 
+    .const 'Sub' $P240 = "83_1279589159.66297" 
     capture_lex $P240
-    .const 'Sub' $P235 = "81_1279564387.65485" 
+    .const 'Sub' $P235 = "81_1279589159.66297" 
     capture_lex $P235
-    .const 'Sub' $P230 = "79_1279564387.65485" 
+    .const 'Sub' $P230 = "79_1279589159.66297" 
     capture_lex $P230
-    .const 'Sub' $P225 = "77_1279564387.65485" 
+    .const 'Sub' $P225 = "77_1279589159.66297" 
     capture_lex $P225
-    .const 'Sub' $P220 = "75_1279564387.65485" 
+    .const 'Sub' $P220 = "75_1279589159.66297" 
     capture_lex $P220
-    .const 'Sub' $P215 = "73_1279564387.65485" 
+    .const 'Sub' $P215 = "73_1279589159.66297" 
     capture_lex $P215
-    .const 'Sub' $P210 = "71_1279564387.65485" 
+    .const 'Sub' $P210 = "71_1279589159.66297" 
     capture_lex $P210
-    .const 'Sub' $P205 = "69_1279564387.65485" 
+    .const 'Sub' $P205 = "69_1279589159.66297" 
     capture_lex $P205
-    .const 'Sub' $P195 = "65_1279564387.65485" 
+    .const 'Sub' $P195 = "65_1279589159.66297" 
     capture_lex $P195
-    .const 'Sub' $P182 = "63_1279564387.65485" 
+    .const 'Sub' $P182 = "63_1279589159.66297" 
     capture_lex $P182
-    .const 'Sub' $P170 = "61_1279564387.65485" 
+    .const 'Sub' $P170 = "61_1279589159.66297" 
     capture_lex $P170
-    .const 'Sub' $P164 = "59_1279564387.65485" 
+    .const 'Sub' $P164 = "59_1279589159.66297" 
     capture_lex $P164
-    .const 'Sub' $P157 = "57_1279564387.65485" 
+    .const 'Sub' $P157 = "57_1279589159.66297" 
     capture_lex $P157
-    .const 'Sub' $P151 = "55_1279564387.65485" 
+    .const 'Sub' $P151 = "55_1279589159.66297" 
     capture_lex $P151
-    .const 'Sub' $P144 = "53_1279564387.65485" 
+    .const 'Sub' $P144 = "53_1279589159.66297" 
     capture_lex $P144
-    .const 'Sub' $P138 = "51_1279564387.65485" 
+    .const 'Sub' $P138 = "51_1279589159.66297" 
     capture_lex $P138
-    .const 'Sub' $P131 = "49_1279564387.65485" 
+    .const 'Sub' $P131 = "49_1279589159.66297" 
     capture_lex $P131
-    .const 'Sub' $P125 = "47_1279564387.65485" 
+    .const 'Sub' $P125 = "47_1279589159.66297" 
     capture_lex $P125
-    .const 'Sub' $P119 = "45_1279564387.65485" 
+    .const 'Sub' $P119 = "45_1279589159.66297" 
     capture_lex $P119
-    .const 'Sub' $P110 = "43_1279564387.65485" 
+    .const 'Sub' $P110 = "43_1279589159.66297" 
     capture_lex $P110
-    .const 'Sub' $P102 = "41_1279564387.65485" 
+    .const 'Sub' $P102 = "41_1279589159.66297" 
     capture_lex $P102
-    .const 'Sub' $P92 = "40_1279564387.65485" 
+    .const 'Sub' $P92 = "40_1279589159.66297" 
     capture_lex $P92
-    .const 'Sub' $P86 = "38_1279564387.65485" 
+    .const 'Sub' $P86 = "38_1279589159.66297" 
     capture_lex $P86
-    .const 'Sub' $P81 = "36_1279564387.65485" 
+    .const 'Sub' $P81 = "36_1279589159.66297" 
     capture_lex $P81
-    .const 'Sub' $P73 = "34_1279564387.65485" 
+    .const 'Sub' $P73 = "34_1279589159.66297" 
     capture_lex $P73
-    .const 'Sub' $P67 = "32_1279564387.65485" 
+    .const 'Sub' $P67 = "32_1279589159.66297" 
     capture_lex $P67
-    .const 'Sub' $P61 = "30_1279564387.65485" 
+    .const 'Sub' $P61 = "30_1279589159.66297" 
     capture_lex $P61
-    .const 'Sub' $P55 = "28_1279564387.65485" 
+    .const 'Sub' $P55 = "28_1279589159.66297" 
     capture_lex $P55
-    .const 'Sub' $P22 = "14_1279564387.65485" 
+    .const 'Sub' $P22 = "14_1279589159.66297" 
     capture_lex $P22
-    .const 'Sub' $P15 = "12_1279564387.65485" 
+    .const 'Sub' $P15 = "12_1279589159.66297" 
     capture_lex $P15
     $P0 = find_dynamic_lex "$*CTXSAVE"
     if null $P0 goto ctxsave_done
@@ -1021,17 +1021,17 @@
     $P0."ctxsave"()
   ctxsave_done:
 .annotate 'line', 33
-    .const 'Sub' $P319 = "103_1279564387.65485" 
+    .const 'Sub' $P319 = "103_1279589159.66297" 
     capture_lex $P319
 .annotate 'line', 5
     .return ($P319)
-    .const 'Sub' $P329 = "105_1279564387.65485" 
+    .const 'Sub' $P329 = "105_1279589159.66297" 
     .return ($P329)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "ws"  :subid("12_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "ws"  :subid("12_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 5
     .local string rx16_tgt
     .local int rx16_pos
@@ -1121,7 +1121,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__ws"  :subid("13_1279564387.65485") :method
+.sub "!PREFIX__ws"  :subid("13_1279589159.66297") :method
 .annotate 'line', 5
     new $P18, "ResizablePMCArray"
     push $P18, ""
@@ -1130,7 +1130,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "termish"  :subid("14_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "termish"  :subid("14_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 5
     .local string rx23_tgt
     .local int rx23_pos
@@ -1242,7 +1242,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__termish"  :subid("15_1279564387.65485") :method
+.sub "!PREFIX__termish"  :subid("15_1279589159.66297") :method
 .annotate 'line', 5
     new $P25, "ResizablePMCArray"
     push $P25, ""
@@ -1251,7 +1251,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term"  :subid("16_1279564387.65485") :method
+.sub "term"  :subid("16_1279589159.66297") :method
 .annotate 'line', 13
     $P32 = self."!protoregex"("term")
     .return ($P32)
@@ -1259,7 +1259,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term"  :subid("17_1279564387.65485") :method
+.sub "!PREFIX__term"  :subid("17_1279589159.66297") :method
 .annotate 'line', 13
     $P34 = self."!PREFIX__!protoregex"("term")
     .return ($P34)
@@ -1267,7 +1267,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infix"  :subid("18_1279564387.65485") :method
+.sub "infix"  :subid("18_1279589159.66297") :method
 .annotate 'line', 14
     $P36 = self."!protoregex"("infix")
     .return ($P36)
@@ -1275,7 +1275,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infix"  :subid("19_1279564387.65485") :method
+.sub "!PREFIX__infix"  :subid("19_1279589159.66297") :method
 .annotate 'line', 14
     $P38 = self."!PREFIX__!protoregex"("infix")
     .return ($P38)
@@ -1283,7 +1283,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefix"  :subid("20_1279564387.65485") :method
+.sub "prefix"  :subid("20_1279589159.66297") :method
 .annotate 'line', 15
     $P40 = self."!protoregex"("prefix")
     .return ($P40)
@@ -1291,7 +1291,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefix"  :subid("21_1279564387.65485") :method
+.sub "!PREFIX__prefix"  :subid("21_1279589159.66297") :method
 .annotate 'line', 15
     $P42 = self."!PREFIX__!protoregex"("prefix")
     .return ($P42)
@@ -1299,7 +1299,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfix"  :subid("22_1279564387.65485") :method
+.sub "postfix"  :subid("22_1279589159.66297") :method
 .annotate 'line', 16
     $P44 = self."!protoregex"("postfix")
     .return ($P44)
@@ -1307,7 +1307,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfix"  :subid("23_1279564387.65485") :method
+.sub "!PREFIX__postfix"  :subid("23_1279589159.66297") :method
 .annotate 'line', 16
     $P46 = self."!PREFIX__!protoregex"("postfix")
     .return ($P46)
@@ -1315,7 +1315,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "circumfix"  :subid("24_1279564387.65485") :method
+.sub "circumfix"  :subid("24_1279589159.66297") :method
 .annotate 'line', 17
     $P48 = self."!protoregex"("circumfix")
     .return ($P48)
@@ -1323,7 +1323,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__circumfix"  :subid("25_1279564387.65485") :method
+.sub "!PREFIX__circumfix"  :subid("25_1279589159.66297") :method
 .annotate 'line', 17
     $P50 = self."!PREFIX__!protoregex"("circumfix")
     .return ($P50)
@@ -1331,7 +1331,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postcircumfix"  :subid("26_1279564387.65485") :method
+.sub "postcircumfix"  :subid("26_1279589159.66297") :method
 .annotate 'line', 18
     $P52 = self."!protoregex"("postcircumfix")
     .return ($P52)
@@ -1339,7 +1339,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postcircumfix"  :subid("27_1279564387.65485") :method
+.sub "!PREFIX__postcircumfix"  :subid("27_1279589159.66297") :method
 .annotate 'line', 18
     $P54 = self."!PREFIX__!protoregex"("postcircumfix")
     .return ($P54)
@@ -1347,7 +1347,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term:sym<circumfix>"  :subid("28_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "term:sym<circumfix>"  :subid("28_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 5
     .local string rx56_tgt
     .local int rx56_pos
@@ -1409,7 +1409,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1279564387.65485") :method
+.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1279589159.66297") :method
 .annotate 'line', 5
     $P58 = self."!PREFIX__!subrule"("circumfix", "")
     new $P59, "ResizablePMCArray"
@@ -1419,7 +1419,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infixish"  :subid("30_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "infixish"  :subid("30_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 5
     .local string rx62_tgt
     .local int rx62_pos
@@ -1481,7 +1481,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("31_1279564387.65485") :method
+.sub "!PREFIX__infixish"  :subid("31_1279589159.66297") :method
 .annotate 'line', 5
     $P64 = self."!PREFIX__!subrule"("infix", "")
     new $P65, "ResizablePMCArray"
@@ -1491,7 +1491,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefixish"  :subid("32_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "prefixish"  :subid("32_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 5
     .local string rx68_tgt
     .local int rx68_pos
@@ -1558,7 +1558,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefixish"  :subid("33_1279564387.65485") :method
+.sub "!PREFIX__prefixish"  :subid("33_1279589159.66297") :method
 .annotate 'line', 5
     $P70 = self."!PREFIX__!subrule"("prefix", "")
     new $P71, "ResizablePMCArray"
@@ -1568,7 +1568,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfixish"  :subid("34_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "postfixish"  :subid("34_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 5
     .local string rx74_tgt
     .local int rx74_pos
@@ -1646,7 +1646,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfixish"  :subid("35_1279564387.65485") :method
+.sub "!PREFIX__postfixish"  :subid("35_1279589159.66297") :method
 .annotate 'line', 5
     $P76 = self."!PREFIX__!subrule"("postcircumfix", "")
     $P77 = self."!PREFIX__!subrule"("postfix", "")
@@ -1658,7 +1658,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm"  :subid("36_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "nullterm"  :subid("36_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 5
     .local string rx82_tgt
     .local int rx82_pos
@@ -1713,7 +1713,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm"  :subid("37_1279564387.65485") :method
+.sub "!PREFIX__nullterm"  :subid("37_1279589159.66297") :method
 .annotate 'line', 5
     new $P84, "ResizablePMCArray"
     push $P84, ""
@@ -1722,7 +1722,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm_alt"  :subid("38_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "nullterm_alt"  :subid("38_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 5
     .local string rx87_tgt
     .local int rx87_pos
@@ -1784,7 +1784,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm_alt"  :subid("39_1279564387.65485") :method
+.sub "!PREFIX__nullterm_alt"  :subid("39_1279589159.66297") :method
 .annotate 'line', 5
     $P89 = self."!PREFIX__!subrule"("nullterm", "")
     new $P90, "ResizablePMCArray"
@@ -1795,7 +1795,7 @@
 
 .namespace ["HLL";"Grammar"]
 .include "except_types.pasm"
-.sub "nulltermish"  :subid("40_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "nulltermish"  :subid("40_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     new $P94, 'ExceptionHandler'
     set_addr $P94, control_93
@@ -1822,7 +1822,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_delimited"  :subid("41_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_delimited"  :subid("41_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx103_tgt
     .local int rx103_pos
@@ -1916,7 +1916,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_delimited"  :subid("42_1279564387.65485") :method
+.sub "!PREFIX__quote_delimited"  :subid("42_1279589159.66297") :method
 .annotate 'line', 33
     $P105 = self."!PREFIX__!subrule"("starter", "")
     new $P106, "ResizablePMCArray"
@@ -1926,7 +1926,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_atom"  :subid("43_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_atom"  :subid("43_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx111_tgt
     .local int rx111_pos
@@ -2023,7 +2023,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_atom"  :subid("44_1279564387.65485") :method
+.sub "!PREFIX__quote_atom"  :subid("44_1279589159.66297") :method
 .annotate 'line', 33
     new $P113, "ResizablePMCArray"
     push $P113, ""
@@ -2032,7 +2032,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decint"  :subid("45_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "decint"  :subid("45_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx120_tgt
     .local int rx120_pos
@@ -2110,7 +2110,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decint"  :subid("46_1279564387.65485") :method
+.sub "!PREFIX__decint"  :subid("46_1279589159.66297") :method
 .annotate 'line', 33
     new $P122, "ResizablePMCArray"
     push $P122, ""
@@ -2119,7 +2119,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decints"  :subid("47_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "decints"  :subid("47_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx126_tgt
     .local int rx126_pos
@@ -2209,7 +2209,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decints"  :subid("48_1279564387.65485") :method
+.sub "!PREFIX__decints"  :subid("48_1279589159.66297") :method
 .annotate 'line', 33
     new $P128, "ResizablePMCArray"
     push $P128, ""
@@ -2218,7 +2218,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexint"  :subid("49_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "hexint"  :subid("49_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx132_tgt
     .local int rx132_pos
@@ -2307,7 +2307,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexint"  :subid("50_1279564387.65485") :method
+.sub "!PREFIX__hexint"  :subid("50_1279589159.66297") :method
 .annotate 'line', 33
     new $P134, "ResizablePMCArray"
     push $P134, ""
@@ -2316,7 +2316,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexints"  :subid("51_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "hexints"  :subid("51_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx139_tgt
     .local int rx139_pos
@@ -2406,7 +2406,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints"  :subid("52_1279564387.65485") :method
+.sub "!PREFIX__hexints"  :subid("52_1279589159.66297") :method
 .annotate 'line', 33
     new $P141, "ResizablePMCArray"
     push $P141, ""
@@ -2415,7 +2415,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octint"  :subid("53_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "octint"  :subid("53_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx145_tgt
     .local int rx145_pos
@@ -2504,7 +2504,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octint"  :subid("54_1279564387.65485") :method
+.sub "!PREFIX__octint"  :subid("54_1279589159.66297") :method
 .annotate 'line', 33
     new $P147, "ResizablePMCArray"
     push $P147, ""
@@ -2513,7 +2513,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octints"  :subid("55_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "octints"  :subid("55_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx152_tgt
     .local int rx152_pos
@@ -2603,7 +2603,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octints"  :subid("56_1279564387.65485") :method
+.sub "!PREFIX__octints"  :subid("56_1279589159.66297") :method
 .annotate 'line', 33
     new $P154, "ResizablePMCArray"
     push $P154, ""
@@ -2612,7 +2612,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binint"  :subid("57_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "binint"  :subid("57_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx158_tgt
     .local int rx158_pos
@@ -2701,7 +2701,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binint"  :subid("58_1279564387.65485") :method
+.sub "!PREFIX__binint"  :subid("58_1279589159.66297") :method
 .annotate 'line', 33
     new $P160, "ResizablePMCArray"
     push $P160, ""
@@ -2710,7 +2710,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binints"  :subid("59_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "binints"  :subid("59_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx165_tgt
     .local int rx165_pos
@@ -2800,7 +2800,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binints"  :subid("60_1279564387.65485") :method
+.sub "!PREFIX__binints"  :subid("60_1279589159.66297") :method
 .annotate 'line', 33
     new $P167, "ResizablePMCArray"
     push $P167, ""
@@ -2809,7 +2809,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "integer"  :subid("61_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "integer"  :subid("61_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx171_tgt
     .local int rx171_pos
@@ -2961,7 +2961,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__integer"  :subid("62_1279564387.65485") :method
+.sub "!PREFIX__integer"  :subid("62_1279589159.66297") :method
 .annotate 'line', 33
     $P173 = self."!PREFIX__!subrule"("decint", "")
     $P174 = self."!PREFIX__!subrule"("decint", "0d")
@@ -2979,7 +2979,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "dec_number"  :subid("63_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "dec_number"  :subid("63_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx183_tgt
     .local int rx183_pos
@@ -3176,7 +3176,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__dec_number"  :subid("64_1279564387.65485") :method
+.sub "!PREFIX__dec_number"  :subid("64_1279589159.66297") :method
 .annotate 'line', 33
     new $P185, "ResizablePMCArray"
     push $P185, ""
@@ -3187,7 +3187,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "escale"  :subid("65_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "escale"  :subid("65_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx196_tgt
     .local int rx196_pos
@@ -3269,7 +3269,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__escale"  :subid("66_1279564387.65485") :method
+.sub "!PREFIX__escale"  :subid("66_1279589159.66297") :method
 .annotate 'line', 33
     new $P198, "ResizablePMCArray"
     push $P198, "e"
@@ -3279,7 +3279,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape"  :subid("67_1279564387.65485") :method
+.sub "quote_escape"  :subid("67_1279589159.66297") :method
 .annotate 'line', 79
     $P202 = self."!protoregex"("quote_escape")
     .return ($P202)
@@ -3287,7 +3287,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape"  :subid("68_1279564387.65485") :method
+.sub "!PREFIX__quote_escape"  :subid("68_1279589159.66297") :method
 .annotate 'line', 79
     $P204 = self."!PREFIX__!protoregex"("quote_escape")
     .return ($P204)
@@ -3295,7 +3295,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<backslash>"  :subid("69_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<backslash>"  :subid("69_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx206_tgt
     .local int rx206_pos
@@ -3361,7 +3361,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1279589159.66297") :method
 .annotate 'line', 33
     new $P208, "ResizablePMCArray"
     push $P208, "\\\\"
@@ -3370,7 +3370,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<stopper>"  :subid("71_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<stopper>"  :subid("71_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx211_tgt
     .local int rx211_pos
@@ -3443,7 +3443,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1279589159.66297") :method
 .annotate 'line', 33
     new $P213, "ResizablePMCArray"
     push $P213, "\\"
@@ -3452,7 +3452,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<bs>"  :subid("73_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<bs>"  :subid("73_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx216_tgt
     .local int rx216_pos
@@ -3518,7 +3518,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1279589159.66297") :method
 .annotate 'line', 33
     new $P218, "ResizablePMCArray"
     push $P218, "\\b"
@@ -3527,7 +3527,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<nl>"  :subid("75_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<nl>"  :subid("75_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx221_tgt
     .local int rx221_pos
@@ -3593,7 +3593,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1279589159.66297") :method
 .annotate 'line', 33
     new $P223, "ResizablePMCArray"
     push $P223, "\\n"
@@ -3602,7 +3602,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<cr>"  :subid("77_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<cr>"  :subid("77_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx226_tgt
     .local int rx226_pos
@@ -3668,7 +3668,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1279589159.66297") :method
 .annotate 'line', 33
     new $P228, "ResizablePMCArray"
     push $P228, "\\r"
@@ -3677,7 +3677,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<tab>"  :subid("79_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<tab>"  :subid("79_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx231_tgt
     .local int rx231_pos
@@ -3743,7 +3743,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1279589159.66297") :method
 .annotate 'line', 33
     new $P233, "ResizablePMCArray"
     push $P233, "\\t"
@@ -3752,7 +3752,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<ff>"  :subid("81_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<ff>"  :subid("81_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx236_tgt
     .local int rx236_pos
@@ -3818,7 +3818,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<ff>"  :subid("82_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<ff>"  :subid("82_1279589159.66297") :method
 .annotate 'line', 33
     new $P238, "ResizablePMCArray"
     push $P238, "\\f"
@@ -3827,7 +3827,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<esc>"  :subid("83_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<esc>"  :subid("83_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx241_tgt
     .local int rx241_pos
@@ -3893,7 +3893,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<esc>"  :subid("84_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<esc>"  :subid("84_1279589159.66297") :method
 .annotate 'line', 33
     new $P243, "ResizablePMCArray"
     push $P243, "\\e"
@@ -3902,7 +3902,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<hex>"  :subid("85_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<hex>"  :subid("85_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx246_tgt
     .local int rx246_pos
@@ -4004,7 +4004,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<hex>"  :subid("86_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<hex>"  :subid("86_1279589159.66297") :method
 .annotate 'line', 33
     new $P248, "ResizablePMCArray"
     push $P248, unicode:"\\x"
@@ -4013,7 +4013,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<oct>"  :subid("87_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<oct>"  :subid("87_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx252_tgt
     .local int rx252_pos
@@ -4115,7 +4115,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<oct>"  :subid("88_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<oct>"  :subid("88_1279589159.66297") :method
 .annotate 'line', 33
     new $P254, "ResizablePMCArray"
     push $P254, "\\o"
@@ -4124,7 +4124,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<chr>"  :subid("89_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<chr>"  :subid("89_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx258_tgt
     .local int rx258_pos
@@ -4197,7 +4197,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<chr>"  :subid("90_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<chr>"  :subid("90_1279589159.66297") :method
 .annotate 'line', 33
     new $P260, "ResizablePMCArray"
     push $P260, "\\c"
@@ -4206,7 +4206,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<0>"  :subid("91_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<0>"  :subid("91_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx263_tgt
     .local int rx263_pos
@@ -4293,7 +4293,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<0>"  :subid("92_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<0>"  :subid("92_1279589159.66297") :method
 .annotate 'line', 33
     new $P265, "ResizablePMCArray"
     push $P265, "\\0"
@@ -4302,13 +4302,13 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<misc>"  :subid("93_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "quote_escape:sym<misc>"  :subid("93_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
-    .const 'Sub' $P288 = "97_1279564387.65485" 
+    .const 'Sub' $P288 = "97_1279589159.66297" 
     capture_lex $P288
-    .const 'Sub' $P281 = "96_1279564387.65485" 
+    .const 'Sub' $P281 = "96_1279589159.66297" 
     capture_lex $P281
-    .const 'Sub' $P276 = "95_1279564387.65485" 
+    .const 'Sub' $P276 = "95_1279589159.66297" 
     capture_lex $P276
     .local string rx269_tgt
     .local int rx269_pos
@@ -4346,7 +4346,7 @@
     find_lex $P273, unicode:"$\x{a2}"
     $P274 = $P273."MATCH"()
     store_lex "$/", $P274
-    .const 'Sub' $P276 = "95_1279564387.65485" 
+    .const 'Sub' $P276 = "95_1279589159.66297" 
     capture_lex $P276
     $P277 = $P276()
   # rx literal  "\\"
@@ -4372,7 +4372,7 @@
 .annotate 'line', 104
   # rx subrule $P281 subtype=capture negate=
     rx269_cur."!cursor_pos"(rx269_pos)
-    .const 'Sub' $P281 = "96_1279564387.65485" 
+    .const 'Sub' $P281 = "96_1279589159.66297" 
     capture_lex $P281
     $P10 = rx269_cur.$P281()
     unless $P10, rx269_fail
@@ -4406,7 +4406,7 @@
     find_lex $P285, unicode:"$\x{a2}"
     $P286 = $P285."MATCH"()
     store_lex "$/", $P286
-    .const 'Sub' $P288 = "97_1279564387.65485" 
+    .const 'Sub' $P288 = "97_1279589159.66297" 
     capture_lex $P288
     $P298 = $P288()
   alt279_end:
@@ -4454,7 +4454,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<misc>"  :subid("94_1279564387.65485") :method
+.sub "!PREFIX__quote_escape:sym<misc>"  :subid("94_1279589159.66297") :method
 .annotate 'line', 33
     new $P271, "ResizablePMCArray"
     push $P271, ""
@@ -4463,14 +4463,14 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block275"  :anon :subid("95_1279564387.65485") :outer("93_1279564387.65485")
+.sub "_block275"  :anon :subid("95_1279589159.66297") :outer("93_1279589159.66297")
 .annotate 'line', 100
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block280"  :anon :subid("96_1279564387.65485") :method :outer("93_1279564387.65485")
+.sub "_block280"  :anon :subid("96_1279589159.66297") :method :outer("93_1279589159.66297")
 .annotate 'line', 104
     .local string rx282_tgt
     .local int rx282_pos
@@ -4529,7 +4529,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block287"  :anon :subid("97_1279564387.65485") :outer("93_1279564387.65485")
+.sub "_block287"  :anon :subid("97_1279589159.66297") :outer("93_1279589159.66297")
 .annotate 'line', 105
     find_lex $P289, "$/"
     $P290 = $P289."CURSOR"()
@@ -4552,9 +4552,9 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charname"  :subid("98_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "charname"  :subid("98_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
-    .const 'Sub' $P310 = "100_1279564387.65485" 
+    .const 'Sub' $P310 = "100_1279589159.66297" 
     capture_lex $P310
     .local string rx301_tgt
     .local int rx301_pos
@@ -4634,7 +4634,7 @@
 .annotate 'line', 114
   # rx subrule "before" subtype=zerowidth negate=
     rx301_cur."!cursor_pos"(rx301_pos)
-    .const 'Sub' $P310 = "100_1279564387.65485" 
+    .const 'Sub' $P310 = "100_1279589159.66297" 
     capture_lex $P310
     $P10 = rx301_cur."before"($P310)
     unless $P10, rx301_fail
@@ -4661,7 +4661,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charname"  :subid("99_1279564387.65485") :method
+.sub "!PREFIX__charname"  :subid("99_1279589159.66297") :method
 .annotate 'line', 33
     $P303 = self."!PREFIX__!subrule"("integer", "")
     new $P304, "ResizablePMCArray"
@@ -4723,7 +4723,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block309"  :anon :subid("100_1279564387.65485") :method :outer("98_1279564387.65485")
+.sub "_block309"  :anon :subid("100_1279589159.66297") :method :outer("98_1279589159.66297")
 .annotate 'line', 114
     .local string rx311_tgt
     .local int rx311_pos
@@ -4787,7 +4787,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charnames"  :subid("101_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "charnames"  :subid("101_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx314_tgt
     .local int rx314_pos
@@ -4877,7 +4877,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charnames"  :subid("102_1279564387.65485") :method
+.sub "!PREFIX__charnames"  :subid("102_1279589159.66297") :method
 .annotate 'line', 33
     new $P316, "ResizablePMCArray"
     push $P316, ""
@@ -4886,7 +4886,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charspec"  :subid("103_1279564387.65485") :method :outer("11_1279564387.65485")
+.sub "charspec"  :subid("103_1279589159.66297") :method :outer("11_1279589159.66297")
 .annotate 'line', 33
     .local string rx320_tgt
     .local int rx320_pos
@@ -5022,7 +5022,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charspec"  :subid("104_1279564387.65485") :method
+.sub "!PREFIX__charspec"  :subid("104_1279589159.66297") :method
 .annotate 'line', 33
     $P322 = self."!PREFIX__!subrule"("panic", "")
     $P323 = self."!PREFIX__!subrule"("charnames", "[")
@@ -5063,18 +5063,18 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block328" :load :anon :subid("105_1279564387.65485")
+.sub "_block328" :load :anon :subid("105_1279589159.66297")
 .annotate 'line', 5
-    .const 'Sub' $P330 = "11_1279564387.65485" 
+    .const 'Sub' $P330 = "11_1279589159.66297" 
     $P331 = $P330()
     .return ($P331)
 .end
 
 
 .namespace []
-.sub "_block333" :load :anon :subid("106_1279564387.65485")
+.sub "_block333" :load :anon :subid("106_1279589159.66297")
 .annotate 'line', 1
-    .const 'Sub' $P335 = "10_1279564387.65485" 
+    .const 'Sub' $P335 = "10_1279589159.66297" 
     $P336 = $P335()
     .return ($P336)
 .end
@@ -5082,7 +5082,7 @@
 ### .include 'gen/hllgrammar-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1279564388.86214")
+.sub "_block11"  :anon :subid("10_1279589161.01068")
 .annotate 'line', 0
     get_hll_global $P14, ["HLL";"Actions"], "_block13" 
     capture_lex $P14
@@ -5099,15 +5099,15 @@
     $P627 = $P14()
 .annotate 'line', 1
     .return ($P627)
-    .const 'Sub' $P629 = "55_1279564388.86214" 
+    .const 'Sub' $P629 = "55_1279589161.01068" 
     .return ($P629)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post56") :outer("10_1279564388.86214")
+.sub "" :load :init :subid("post56") :outer("10_1279589161.01068")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1279564388.86214" 
+    .const 'Sub' $P12 = "10_1279589161.01068" 
     .local pmc block
     set block, $P12
     $P632 = get_root_global ["parrot"], "P6metaclass"
@@ -5116,75 +5116,75 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block13"  :subid("11_1279564388.86214") :outer("10_1279564388.86214")
+.sub "_block13"  :subid("11_1279589161.01068") :outer("10_1279589161.01068")
 .annotate 'line', 3
-    .const 'Sub' $P605 = "53_1279564388.86214" 
+    .const 'Sub' $P605 = "53_1279589161.01068" 
     capture_lex $P605
-    .const 'Sub' $P580 = "51_1279564388.86214" 
+    .const 'Sub' $P580 = "51_1279589161.01068" 
     capture_lex $P580
-    .const 'Sub' $P550 = "50_1279564388.86214" 
+    .const 'Sub' $P550 = "50_1279589161.01068" 
     capture_lex $P550
-    .const 'Sub' $P531 = "49_1279564388.86214" 
+    .const 'Sub' $P531 = "49_1279589161.01068" 
     capture_lex $P531
-    .const 'Sub' $P524 = "48_1279564388.86214" 
+    .const 'Sub' $P524 = "48_1279589161.01068" 
     capture_lex $P524
-    .const 'Sub' $P514 = "47_1279564388.86214" 
+    .const 'Sub' $P514 = "47_1279589161.01068" 
     capture_lex $P514
-    .const 'Sub' $P497 = "46_1279564388.86214" 
+    .const 'Sub' $P497 = "46_1279589161.01068" 
     capture_lex $P497
-    .const 'Sub' $P480 = "45_1279564388.86214" 
+    .const 'Sub' $P480 = "45_1279589161.01068" 
     capture_lex $P480
-    .const 'Sub' $P473 = "44_1279564388.86214" 
+    .const 'Sub' $P473 = "44_1279589161.01068" 
     capture_lex $P473
-    .const 'Sub' $P466 = "43_1279564388.86214" 
+    .const 'Sub' $P466 = "43_1279589161.01068" 
     capture_lex $P466
-    .const 'Sub' $P459 = "42_1279564388.86214" 
+    .const 'Sub' $P459 = "42_1279589161.01068" 
     capture_lex $P459
-    .const 'Sub' $P452 = "41_1279564388.86214" 
+    .const 'Sub' $P452 = "41_1279589161.01068" 
     capture_lex $P452
-    .const 'Sub' $P445 = "40_1279564388.86214" 
+    .const 'Sub' $P445 = "40_1279589161.01068" 
     capture_lex $P445
-    .const 'Sub' $P438 = "39_1279564388.86214" 
+    .const 'Sub' $P438 = "39_1279589161.01068" 
     capture_lex $P438
-    .const 'Sub' $P428 = "38_1279564388.86214" 
+    .const 'Sub' $P428 = "38_1279589161.01068" 
     capture_lex $P428
-    .const 'Sub' $P421 = "37_1279564388.86214" 
+    .const 'Sub' $P421 = "37_1279589161.01068" 
     capture_lex $P421
-    .const 'Sub' $P405 = "36_1279564388.86214" 
+    .const 'Sub' $P405 = "36_1279589161.01068" 
     capture_lex $P405
-    .const 'Sub' $P330 = "34_1279564388.86214" 
+    .const 'Sub' $P330 = "34_1279589161.01068" 
     capture_lex $P330
-    .const 'Sub' $P267 = "31_1279564388.86214" 
+    .const 'Sub' $P267 = "31_1279589161.01068" 
     capture_lex $P267
-    .const 'Sub' $P258 = "30_1279564388.86214" 
+    .const 'Sub' $P258 = "30_1279589161.01068" 
     capture_lex $P258
-    .const 'Sub' $P249 = "29_1279564388.86214" 
+    .const 'Sub' $P249 = "29_1279589161.01068" 
     capture_lex $P249
-    .const 'Sub' $P240 = "28_1279564388.86214" 
+    .const 'Sub' $P240 = "28_1279589161.01068" 
     capture_lex $P240
-    .const 'Sub' $P231 = "27_1279564388.86214" 
+    .const 'Sub' $P231 = "27_1279589161.01068" 
     capture_lex $P231
-    .const 'Sub' $P222 = "26_1279564388.86214" 
+    .const 'Sub' $P222 = "26_1279589161.01068" 
     capture_lex $P222
-    .const 'Sub' $P212 = "25_1279564388.86214" 
+    .const 'Sub' $P212 = "25_1279589161.01068" 
     capture_lex $P212
-    .const 'Sub' $P202 = "24_1279564388.86214" 
+    .const 'Sub' $P202 = "24_1279589161.01068" 
     capture_lex $P202
-    .const 'Sub' $P194 = "23_1279564388.86214" 
+    .const 'Sub' $P194 = "23_1279589161.01068" 
     capture_lex $P194
-    .const 'Sub' $P184 = "22_1279564388.86214" 
+    .const 'Sub' $P184 = "22_1279589161.01068" 
     capture_lex $P184
-    .const 'Sub' $P174 = "21_1279564388.86214" 
+    .const 'Sub' $P174 = "21_1279589161.01068" 
     capture_lex $P174
-    .const 'Sub' $P73 = "18_1279564388.86214" 
+    .const 'Sub' $P73 = "18_1279589161.01068" 
     capture_lex $P73
-    .const 'Sub' $P35 = "15_1279564388.86214" 
+    .const 'Sub' $P35 = "15_1279589161.01068" 
     capture_lex $P35
-    .const 'Sub' $P28 = "14_1279564388.86214" 
+    .const 'Sub' $P28 = "14_1279589161.01068" 
     capture_lex $P28
-    .const 'Sub' $P22 = "13_1279564388.86214" 
+    .const 'Sub' $P22 = "13_1279589161.01068" 
     capture_lex $P22
-    .const 'Sub' $P15 = "12_1279564388.86214" 
+    .const 'Sub' $P15 = "12_1279589161.01068" 
     capture_lex $P15
     $P0 = find_dynamic_lex "$*CTXSAVE"
     if null $P0 goto ctxsave_done
@@ -5193,18 +5193,18 @@
     $P0."ctxsave"()
   ctxsave_done:
 .annotate 'line', 225
-    .const 'Sub' $P605 = "53_1279564388.86214" 
+    .const 'Sub' $P605 = "53_1279589161.01068" 
     newclosure $P622, $P605
 .annotate 'line', 3
     .return ($P622)
-    .const 'Sub' $P624 = "54_1279564388.86214" 
+    .const 'Sub' $P624 = "54_1279589161.01068" 
     .return ($P624)
 .end
 
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "string_to_int"  :subid("12_1279564388.86214") :outer("11_1279564388.86214")
+.sub "string_to_int"  :subid("12_1279589161.01068") :outer("11_1279589161.01068")
     .param pmc param_18
     .param pmc param_19
 .annotate 'line', 3
@@ -5258,7 +5258,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "ints_to_string"  :subid("13_1279564388.86214") :outer("11_1279564388.86214")
+.sub "ints_to_string"  :subid("13_1279589161.01068") :outer("11_1279589161.01068")
     .param pmc param_25
 .annotate 'line', 37
     new $P24, 'ExceptionHandler'
@@ -5300,7 +5300,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "CTXSAVE"  :subid("14_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "CTXSAVE"  :subid("14_1279589161.01068") :method :outer("11_1279589161.01068")
 .annotate 'line', 62
     new $P30, 'ExceptionHandler'
     set_addr $P30, control_29
@@ -5330,10 +5330,10 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "SET_BLOCK_OUTER_CTX"  :subid("15_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "SET_BLOCK_OUTER_CTX"  :subid("15_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_38
 .annotate 'line', 76
-    .const 'Sub' $P48 = "16_1279564388.86214" 
+    .const 'Sub' $P48 = "16_1279589161.01068" 
     capture_lex $P48
     new $P37, 'ExceptionHandler'
     set_addr $P37, control_36
@@ -5368,7 +5368,7 @@
     set $P43, $I46
     goto if_44_end
   if_44:
-    .const 'Sub' $P48 = "16_1279564388.86214" 
+    .const 'Sub' $P48 = "16_1279589161.01068" 
     capture_lex $P48
     $P71 = $P48()
     set $P43, $P71
@@ -5385,9 +5385,9 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "_block47"  :anon :subid("16_1279564388.86214") :outer("15_1279564388.86214")
+.sub "_block47"  :anon :subid("16_1279589161.01068") :outer("15_1279589161.01068")
 .annotate 'line', 78
-    .const 'Sub' $P62 = "17_1279564388.86214" 
+    .const 'Sub' $P62 = "17_1279589161.01068" 
     capture_lex $P62
 .annotate 'line', 79
     $P49 = root_new ['parrot';'ResizablePMCArray']
@@ -5417,7 +5417,7 @@
     unless $P56, loop68_done
     shift $P60, $P56
   loop68_redo:
-    .const 'Sub' $P62 = "17_1279564388.86214" 
+    .const 'Sub' $P62 = "17_1279589161.01068" 
     capture_lex $P62
     $P62($P60)
   loop68_next:
@@ -5437,7 +5437,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block61"  :anon :subid("17_1279564388.86214") :outer("16_1279564388.86214")
+.sub "_block61"  :anon :subid("17_1279589161.01068") :outer("16_1279589161.01068")
     .param pmc param_63
 .annotate 'line', 82
     .lex "$_", param_63
@@ -5453,14 +5453,14 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "EXPR"  :subid("18_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "EXPR"  :subid("18_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_76
     .param pmc param_77 :optional
     .param int has_param_77 :opt_flag
 .annotate 'line', 89
-    .const 'Sub' $P156 = "20_1279564388.86214" 
+    .const 'Sub' $P156 = "20_1279589161.01068" 
     capture_lex $P156
-    .const 'Sub' $P123 = "19_1279564388.86214" 
+    .const 'Sub' $P123 = "19_1279589161.01068" 
     capture_lex $P123
     new $P75, 'ExceptionHandler'
     set_addr $P75, control_74
@@ -5595,7 +5595,7 @@
     find_lex $P120, "$past"
     $P121 = $P120."name"()
     if $P121, unless_119_end
-    .const 'Sub' $P123 = "19_1279564388.86214" 
+    .const 'Sub' $P123 = "19_1279589161.01068" 
     capture_lex $P123
     $P123()
   unless_119_end:
@@ -5619,7 +5619,7 @@
     unless $P150, loop167_done
     shift $P154, $P150
   loop167_redo:
-    .const 'Sub' $P156 = "20_1279564388.86214" 
+    .const 'Sub' $P156 = "20_1279589161.01068" 
     capture_lex $P156
     $P156($P154)
   loop167_next:
@@ -5664,7 +5664,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block122"  :anon :subid("19_1279564388.86214") :outer("18_1279564388.86214")
+.sub "_block122"  :anon :subid("19_1279589161.01068") :outer("18_1279589161.01068")
 .annotate 'line', 98
     new $P124, "Undef"
     .lex "$name", $P124
@@ -5714,7 +5714,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block155"  :anon :subid("20_1279564388.86214") :outer("18_1279564388.86214")
+.sub "_block155"  :anon :subid("20_1279589161.01068") :outer("18_1279589161.01068")
     .param pmc param_157
 .annotate 'line', 109
     .lex "$_", param_157
@@ -5738,7 +5738,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<circumfix>"  :subid("21_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "term:sym<circumfix>"  :subid("21_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_177
 .annotate 'line', 114
     new $P176, 'ExceptionHandler'
@@ -5769,7 +5769,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "termish"  :subid("22_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "termish"  :subid("22_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_187
 .annotate 'line', 116
     new $P186, 'ExceptionHandler'
@@ -5800,7 +5800,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "nullterm"  :subid("23_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "nullterm"  :subid("23_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_197
 .annotate 'line', 117
     new $P196, 'ExceptionHandler'
@@ -5823,7 +5823,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "nullterm_alt"  :subid("24_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "nullterm_alt"  :subid("24_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_205
 .annotate 'line', 118
     new $P204, 'ExceptionHandler'
@@ -5854,7 +5854,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "integer"  :subid("25_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "integer"  :subid("25_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_215
 .annotate 'line', 120
     new $P214, 'ExceptionHandler'
@@ -5885,7 +5885,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "dec_number"  :subid("26_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "dec_number"  :subid("26_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_225
 .annotate 'line', 122
     new $P224, 'ExceptionHandler'
@@ -5909,7 +5909,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "decint"  :subid("27_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "decint"  :subid("27_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_234
 .annotate 'line', 124
     new $P233, 'ExceptionHandler'
@@ -5933,7 +5933,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "hexint"  :subid("28_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "hexint"  :subid("28_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_243
 .annotate 'line', 125
     new $P242, 'ExceptionHandler'
@@ -5957,7 +5957,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "octint"  :subid("29_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "octint"  :subid("29_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_252
 .annotate 'line', 126
     new $P251, 'ExceptionHandler'
@@ -5981,7 +5981,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "binint"  :subid("30_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "binint"  :subid("30_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_261
 .annotate 'line', 127
     new $P260, 'ExceptionHandler'
@@ -6005,10 +6005,10 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_EXPR"  :subid("31_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_EXPR"  :subid("31_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_270
 .annotate 'line', 129
-    .const 'Sub' $P286 = "32_1279564388.86214" 
+    .const 'Sub' $P286 = "32_1279589161.01068" 
     capture_lex $P286
     new $P269, 'ExceptionHandler'
     set_addr $P269, control_268
@@ -6040,7 +6040,7 @@
     $P282 = $P280."ACCEPTS"($P281)
     if $P282, if_279
 .annotate 'line', 135
-    .const 'Sub' $P286 = "32_1279564388.86214" 
+    .const 'Sub' $P286 = "32_1279589161.01068" 
     capture_lex $P286
     $P286()
     goto if_279_end
@@ -6080,9 +6080,9 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "_block285"  :anon :subid("32_1279564388.86214") :outer("31_1279564388.86214")
+.sub "_block285"  :anon :subid("32_1279589161.01068") :outer("31_1279589161.01068")
 .annotate 'line', 135
-    .const 'Sub' $P305 = "33_1279564388.86214" 
+    .const 'Sub' $P305 = "33_1279589161.01068" 
     capture_lex $P305
 .annotate 'line', 136
     $P287 = root_new ['parrot';'ResizablePMCArray']
@@ -6133,7 +6133,7 @@
     unless $P300, loop310_done
     shift $P303, $P300
   loop310_redo:
-    .const 'Sub' $P305 = "33_1279564388.86214" 
+    .const 'Sub' $P305 = "33_1279589161.01068" 
     capture_lex $P305
     $P305($P303)
   loop310_next:
@@ -6156,7 +6156,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block304"  :anon :subid("33_1279564388.86214") :outer("32_1279564388.86214")
+.sub "_block304"  :anon :subid("33_1279589161.01068") :outer("32_1279589161.01068")
     .param pmc param_306
 .annotate 'line', 139
     .lex "$_", param_306
@@ -6169,10 +6169,10 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_delimited"  :subid("34_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_delimited"  :subid("34_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_333
 .annotate 'line', 152
-    .const 'Sub' $P345 = "35_1279564388.86214" 
+    .const 'Sub' $P345 = "35_1279589161.01068" 
     capture_lex $P345
     new $P332, 'ExceptionHandler'
     set_addr $P332, control_331
@@ -6215,7 +6215,7 @@
     unless $P339, loop377_done
     shift $P343, $P339
   loop377_redo:
-    .const 'Sub' $P345 = "35_1279564388.86214" 
+    .const 'Sub' $P345 = "35_1279589161.01068" 
     capture_lex $P345
     $P345($P343)
   loop377_next:
@@ -6293,7 +6293,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block344"  :anon :subid("35_1279564388.86214") :outer("34_1279564388.86214")
+.sub "_block344"  :anon :subid("35_1279589161.01068") :outer("34_1279589161.01068")
     .param pmc param_347
 .annotate 'line', 156
     new $P346, "Undef"
@@ -6363,7 +6363,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_atom"  :subid("36_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_atom"  :subid("36_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_408
 .annotate 'line', 177
     new $P407, 'ExceptionHandler'
@@ -6413,7 +6413,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<backslash>"  :subid("37_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<backslash>"  :subid("37_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_424
 .annotate 'line', 181
     new $P423, 'ExceptionHandler'
@@ -6435,7 +6435,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<stopper>"  :subid("38_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<stopper>"  :subid("38_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_431
 .annotate 'line', 182
     new $P430, 'ExceptionHandler'
@@ -6466,7 +6466,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<bs>"  :subid("39_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<bs>"  :subid("39_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_441
 .annotate 'line', 184
     new $P440, 'ExceptionHandler'
@@ -6488,7 +6488,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<nl>"  :subid("40_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<nl>"  :subid("40_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_448
 .annotate 'line', 185
     new $P447, 'ExceptionHandler'
@@ -6510,7 +6510,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<cr>"  :subid("41_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<cr>"  :subid("41_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_455
 .annotate 'line', 186
     new $P454, 'ExceptionHandler'
@@ -6532,7 +6532,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<tab>"  :subid("42_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<tab>"  :subid("42_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_462
 .annotate 'line', 187
     new $P461, 'ExceptionHandler'
@@ -6554,7 +6554,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<ff>"  :subid("43_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<ff>"  :subid("43_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_469
 .annotate 'line', 188
     new $P468, 'ExceptionHandler'
@@ -6576,7 +6576,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<esc>"  :subid("44_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<esc>"  :subid("44_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_476
 .annotate 'line', 189
     new $P475, 'ExceptionHandler'
@@ -6598,7 +6598,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<hex>"  :subid("45_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<hex>"  :subid("45_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_483
 .annotate 'line', 191
     new $P482, 'ExceptionHandler'
@@ -6657,7 +6657,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<oct>"  :subid("46_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<oct>"  :subid("46_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_500
 .annotate 'line', 195
     new $P499, 'ExceptionHandler'
@@ -6716,7 +6716,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<chr>"  :subid("47_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<chr>"  :subid("47_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_517
 .annotate 'line', 199
     new $P516, 'ExceptionHandler'
@@ -6749,7 +6749,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<0>"  :subid("48_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<0>"  :subid("48_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_527
 .annotate 'line', 203
     new $P526, 'ExceptionHandler'
@@ -6773,7 +6773,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<misc>"  :subid("49_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "quote_escape:sym<misc>"  :subid("49_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_534
 .annotate 'line', 207
     new $P533, 'ExceptionHandler'
@@ -6832,7 +6832,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "charname"  :subid("50_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "charname"  :subid("50_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_553
 .annotate 'line', 211
     new $P552, 'ExceptionHandler'
@@ -6906,10 +6906,10 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "charnames"  :subid("51_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "charnames"  :subid("51_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_583
 .annotate 'line', 219
-    .const 'Sub' $P592 = "52_1279564388.86214" 
+    .const 'Sub' $P592 = "52_1279589161.01068" 
     capture_lex $P592
     new $P582, 'ExceptionHandler'
     set_addr $P582, control_581
@@ -6943,7 +6943,7 @@
     unless $P586, loop598_done
     shift $P590, $P586
   loop598_redo:
-    .const 'Sub' $P592 = "52_1279564388.86214" 
+    .const 'Sub' $P592 = "52_1279589161.01068" 
     capture_lex $P592
     $P592($P590)
   loop598_next:
@@ -6972,7 +6972,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block591"  :anon :subid("52_1279564388.86214") :outer("51_1279564388.86214")
+.sub "_block591"  :anon :subid("52_1279589161.01068") :outer("51_1279589161.01068")
     .param pmc param_593
 .annotate 'line', 221
     .lex "$_", param_593
@@ -6987,7 +6987,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "charspec"  :subid("53_1279564388.86214") :method :outer("11_1279564388.86214")
+.sub "charspec"  :subid("53_1279589161.01068") :method :outer("11_1279589161.01068")
     .param pmc param_608
 .annotate 'line', 225
     new $P607, 'ExceptionHandler'
@@ -7037,18 +7037,18 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block623" :load :anon :subid("54_1279564388.86214")
+.sub "_block623" :load :anon :subid("54_1279589161.01068")
 .annotate 'line', 3
-    .const 'Sub' $P625 = "11_1279564388.86214" 
+    .const 'Sub' $P625 = "11_1279589161.01068" 
     $P626 = $P625()
     .return ($P626)
 .end
 
 
 .namespace []
-.sub "_block628" :load :anon :subid("55_1279564388.86214")
+.sub "_block628" :load :anon :subid("55_1279589161.01068")
 .annotate 'line', 1
-    .const 'Sub' $P630 = "10_1279564388.86214" 
+    .const 'Sub' $P630 = "10_1279589161.01068" 
     $P631 = $P630()
     .return ($P631)
 .end
@@ -7056,7 +7056,7 @@
 ### .include 'gen/hllcompiler.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1279564389.64843")
+.sub "_block11"  :anon :subid("10_1279589161.87188")
 .annotate 'line', 0
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     capture_lex $P14
@@ -7073,15 +7073,15 @@
     $P497 = $P14()
 .annotate 'line', 1
     .return ($P497)
-    .const 'Sub' $P499 = "36_1279564389.64843" 
+    .const 'Sub' $P499 = "36_1279589161.87188" 
     .return ($P499)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post37") :outer("10_1279564389.64843")
+.sub "" :load :init :subid("post37") :outer("10_1279589161.87188")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1279564389.64843" 
+    .const 'Sub' $P12 = "10_1279589161.87188" 
     .local pmc block
     set block, $P12
 .annotate 'line', 2
@@ -7095,36 +7095,36 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block13"  :subid("11_1279564389.64843") :outer("10_1279564389.64843")
+.sub "_block13"  :subid("11_1279589161.87188") :outer("10_1279589161.87188")
 .annotate 'line', 6
-    .const 'Sub' $P489 = "35_1279564389.64843" 
+    .const 'Sub' $P489 = "35_1279589161.87188" 
     capture_lex $P489
-    .const 'Sub' $P447 = "33_1279564389.64843" 
+    .const 'Sub' $P447 = "33_1279589161.87188" 
     capture_lex $P447
-    .const 'Sub' $P298 = "26_1279564389.64843" 
+    .const 'Sub' $P298 = "26_1279589161.87188" 
     capture_lex $P298
-    .const 'Sub' $P283 = "25_1279564389.64843" 
+    .const 'Sub' $P283 = "25_1279589161.87188" 
     capture_lex $P283
-    .const 'Sub' $P188 = "20_1279564389.64843" 
+    .const 'Sub' $P188 = "20_1279589161.87188" 
     capture_lex $P188
-    .const 'Sub' $P153 = "18_1279564389.64843" 
+    .const 'Sub' $P153 = "18_1279589161.87188" 
     capture_lex $P153
-    .const 'Sub' $P138 = "17_1279564389.64843" 
+    .const 'Sub' $P138 = "17_1279589161.87188" 
     capture_lex $P138
-    .const 'Sub' $P122 = "16_1279564389.64843" 
+    .const 'Sub' $P122 = "16_1279589161.87188" 
     capture_lex $P122
-    .const 'Sub' $P33 = "13_1279564389.64843" 
+    .const 'Sub' $P33 = "13_1279589161.87188" 
     capture_lex $P33
-    .const 'Sub' $P15 = "12_1279564389.64843" 
+    .const 'Sub' $P15 = "12_1279589161.87188" 
     capture_lex $P15
 .annotate 'line', 14
-    .const 'Sub' $P15 = "12_1279564389.64843" 
+    .const 'Sub' $P15 = "12_1279589161.87188" 
     newclosure $P31, $P15
     .lex "value_type", $P31
 .annotate 'line', 10
     find_lex $P32, "value_type"
 .annotate 'line', 165
-    .const 'Sub' $P489 = "35_1279564389.64843" 
+    .const 'Sub' $P489 = "35_1279589161.87188" 
     newclosure $P495, $P489
 .annotate 'line', 6
     .return ($P495)
@@ -7132,7 +7132,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "" :load :init :subid("post38") :outer("11_1279564389.64843")
+.sub "" :load :init :subid("post38") :outer("11_1279589161.87188")
 .annotate 'line', 6
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     .local pmc block
@@ -7145,7 +7145,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "value_type"  :subid("12_1279564389.64843") :outer("11_1279564389.64843")
+.sub "value_type"  :subid("12_1279589161.87188") :outer("11_1279589161.87188")
     .param pmc param_18
 .annotate 'line', 14
     new $P17, 'ExceptionHandler'
@@ -7190,15 +7190,15 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "get_exports"  :subid("13_1279564389.64843") :method :outer("11_1279564389.64843")
+.sub "get_exports"  :subid("13_1279589161.87188") :method :outer("11_1279589161.87188")
     .param pmc param_36
     .param pmc param_39 :slurpy
     .param pmc param_37 :optional :named("tagset")
     .param int has_param_37 :opt_flag
 .annotate 'line', 20
-    .const 'Sub' $P105 = "15_1279564389.64843" 
+    .const 'Sub' $P105 = "15_1279589161.87188" 
     capture_lex $P105
-    .const 'Sub' $P84 = "14_1279564389.64843" 
+    .const 'Sub' $P84 = "14_1279589161.87188" 
     capture_lex $P84
     new $P35, 'ExceptionHandler'
     set_addr $P35, control_34
@@ -7304,7 +7304,7 @@
     unless $P100, loop117_done
     shift $P103, $P100
   loop117_redo:
-    .const 'Sub' $P105 = "15_1279564389.64843" 
+    .const 'Sub' $P105 = "15_1279589161.87188" 
     capture_lex $P105
     $P105($P103)
   loop117_next:
@@ -7334,7 +7334,7 @@
     unless $P79, loop97_done
     shift $P82, $P79
   loop97_redo:
-    .const 'Sub' $P84 = "14_1279564389.64843" 
+    .const 'Sub' $P84 = "14_1279589161.87188" 
     capture_lex $P84
     $P84($P82)
   loop97_next:
@@ -7362,7 +7362,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block104"  :anon :subid("15_1279564389.64843") :outer("13_1279564389.64843")
+.sub "_block104"  :anon :subid("15_1279589161.87188") :outer("13_1279589161.87188")
     .param pmc param_107
 .annotate 'line', 40
     new $P106, "Undef"
@@ -7394,7 +7394,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block83"  :anon :subid("14_1279564389.64843") :outer("13_1279564389.64843")
+.sub "_block83"  :anon :subid("14_1279589161.87188") :outer("13_1279589161.87188")
     .param pmc param_86
 .annotate 'line', 34
     new $P85, "Undef"
@@ -7434,7 +7434,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "get_module"  :subid("16_1279564389.64843") :method :outer("11_1279564389.64843")
+.sub "get_module"  :subid("16_1279589161.87188") :method :outer("11_1279589161.87188")
     .param pmc param_125
 .annotate 'line', 47
     new $P124, 'ExceptionHandler'
@@ -7475,7 +7475,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "language"  :subid("17_1279564389.64843") :method :outer("11_1279564389.64843")
+.sub "language"  :subid("17_1279589161.87188") :method :outer("11_1279589161.87188")
     .param pmc param_141 :optional
     .param int has_param_141 :opt_flag
 .annotate 'line', 53
@@ -7520,10 +7520,10 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "load_module"  :subid("18_1279564389.64843") :method :outer("11_1279564389.64843")
+.sub "load_module"  :subid("18_1279589161.87188") :method :outer("11_1279589161.87188")
     .param pmc param_156
 .annotate 'line', 61
-    .const 'Sub' $P166 = "19_1279564389.64843" 
+    .const 'Sub' $P166 = "19_1279589161.87188" 
     capture_lex $P166
     new $P155, 'ExceptionHandler'
     set_addr $P155, control_154
@@ -7550,7 +7550,7 @@
     assign $P164, 0
     store_lex "$loaded", $P164
 .annotate 'line', 64
-    .const 'Sub' $P166 = "19_1279564389.64843" 
+    .const 'Sub' $P166 = "19_1279589161.87188" 
     capture_lex $P166
     $P166()
 .annotate 'line', 65
@@ -7580,7 +7580,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block165"  :anon :subid("19_1279564389.64843") :outer("18_1279564389.64843")
+.sub "_block165"  :anon :subid("19_1279589161.87188") :outer("18_1279589161.87188")
 .annotate 'line', 64
     new $P173, 'ExceptionHandler'
     set_addr $P173, control_172
@@ -7614,11 +7614,11 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "import"  :subid("20_1279564389.64843") :method :outer("11_1279564389.64843")
+.sub "import"  :subid("20_1279589161.87188") :method :outer("11_1279589161.87188")
     .param pmc param_191
     .param pmc param_192
 .annotate 'line', 69
-    .const 'Sub' $P198 = "21_1279564389.64843" 
+    .const 'Sub' $P198 = "21_1279589161.87188" 
     capture_lex $P198
     new $P190, 'ExceptionHandler'
     set_addr $P190, control_189
@@ -7640,7 +7640,7 @@
     unless $P193, loop279_done
     shift $P196, $P193
   loop279_redo:
-    .const 'Sub' $P198 = "21_1279564389.64843" 
+    .const 'Sub' $P198 = "21_1279589161.87188" 
     capture_lex $P198
     $P198($P196)
   loop279_next:
@@ -7666,14 +7666,14 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block197"  :anon :subid("21_1279564389.64843") :outer("20_1279564389.64843")
+.sub "_block197"  :anon :subid("21_1279589161.87188") :outer("20_1279589161.87188")
     .param pmc param_201
 .annotate 'line', 70
-    .const 'Sub' $P268 = "24_1279564389.64843" 
+    .const 'Sub' $P268 = "24_1279589161.87188" 
     capture_lex $P268
-    .const 'Sub' $P248 = "23_1279564389.64843" 
+    .const 'Sub' $P248 = "23_1279589161.87188" 
     capture_lex $P248
-    .const 'Sub' $P219 = "22_1279564389.64843" 
+    .const 'Sub' $P219 = "22_1279589161.87188" 
     capture_lex $P219
 .annotate 'line', 71
     new $P199, "Undef"
@@ -7721,7 +7721,7 @@
     unless $P263, loop276_done
     shift $P266, $P263
   loop276_redo:
-    .const 'Sub' $P268 = "24_1279564389.64843" 
+    .const 'Sub' $P268 = "24_1279589161.87188" 
     capture_lex $P268
     $P268($P266)
   loop276_next:
@@ -7753,7 +7753,7 @@
     unless $P243, loop260_done
     shift $P246, $P243
   loop260_redo:
-    .const 'Sub' $P248 = "23_1279564389.64843" 
+    .const 'Sub' $P248 = "23_1279589161.87188" 
     capture_lex $P248
     $P248($P246)
   loop260_next:
@@ -7787,7 +7787,7 @@
     unless $P214, loop232_done
     shift $P217, $P214
   loop232_redo:
-    .const 'Sub' $P219 = "22_1279564389.64843" 
+    .const 'Sub' $P219 = "22_1279589161.87188" 
     capture_lex $P219
     $P219($P217)
   loop232_next:
@@ -7810,7 +7810,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block267"  :anon :subid("24_1279564389.64843") :outer("21_1279564389.64843")
+.sub "_block267"  :anon :subid("24_1279589161.87188") :outer("21_1279589161.87188")
     .param pmc param_269
 .annotate 'line', 80
     .lex "$_", param_269
@@ -7830,7 +7830,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block247"  :anon :subid("23_1279564389.64843") :outer("21_1279564389.64843")
+.sub "_block247"  :anon :subid("23_1279589161.87188") :outer("21_1279589161.87188")
     .param pmc param_249
 .annotate 'line', 77
     .lex "$_", param_249
@@ -7850,7 +7850,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block218"  :anon :subid("22_1279564389.64843") :outer("21_1279564389.64843")
+.sub "_block218"  :anon :subid("22_1279589161.87188") :outer("21_1279589161.87188")
     .param pmc param_220
 .annotate 'line', 74
     .lex "$_", param_220
@@ -7872,7 +7872,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "autoprint"  :subid("25_1279564389.64843") :method :outer("11_1279564389.64843")
+.sub "autoprint"  :subid("25_1279589161.87188") :method :outer("11_1279589161.87188")
     .param pmc param_286
 .annotate 'line', 85
     new $P285, 'ExceptionHandler'
@@ -7916,10 +7916,10 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "interactive"  :subid("26_1279564389.64843") :method :outer("11_1279564389.64843")
+.sub "interactive"  :subid("26_1279589161.87188") :method :outer("11_1279589161.87188")
     .param pmc param_301 :slurpy :named
 .annotate 'line', 90
-    .const 'Sub' $P333 = "27_1279564389.64843" 
+    .const 'Sub' $P333 = "27_1279589161.87188" 
     capture_lex $P333
     new $P300, 'ExceptionHandler'
     set_addr $P300, control_299
@@ -8006,7 +8006,7 @@
     assign $P331, 1
     unless $P331, loop443_done
   loop443_redo:
-    .const 'Sub' $P333 = "27_1279564389.64843" 
+    .const 'Sub' $P333 = "27_1279589161.87188" 
     capture_lex $P333
     $P333()
   loop443_next:
@@ -8031,9 +8031,9 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block332"  :anon :subid("27_1279564389.64843") :outer("26_1279564389.64843")
+.sub "_block332"  :anon :subid("27_1279589161.87188") :outer("26_1279589161.87188")
 .annotate 'line', 102
-    .const 'Sub' $P365 = "28_1279564389.64843" 
+    .const 'Sub' $P365 = "28_1279589161.87188" 
     capture_lex $P365
 .annotate 'line', 105
     new $P334, "Undef"
@@ -8101,7 +8101,7 @@
     set $P361, $P363
     goto if_362_end
   if_362:
-    .const 'Sub' $P365 = "28_1279564389.64843" 
+    .const 'Sub' $P365 = "28_1279589161.87188" 
     capture_lex $P365
     $P442 = $P365()
     set $P361, $P442
@@ -8113,11 +8113,11 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block364"  :anon :subid("28_1279564389.64843") :outer("27_1279564389.64843")
+.sub "_block364"  :anon :subid("28_1279589161.87188") :outer("27_1279589161.87188")
 .annotate 'line', 115
-    .const 'Sub' $P398 = "31_1279564389.64843" 
+    .const 'Sub' $P398 = "31_1279589161.87188" 
     capture_lex $P398
-    .const 'Sub' $P371 = "29_1279564389.64843" 
+    .const 'Sub' $P371 = "29_1279589161.87188" 
     capture_lex $P371
 .annotate 'line', 117
     new $P366, "Undef"
@@ -8128,7 +8128,7 @@
     store_lex "$code", $P368
     find_lex $P369, "$output"
 .annotate 'line', 118
-    .const 'Sub' $P371 = "29_1279564389.64843" 
+    .const 'Sub' $P371 = "29_1279589161.87188" 
     capture_lex $P371
     $P371()
 .annotate 'line', 125
@@ -8141,7 +8141,7 @@
   vivify_67:
     defined $I396, $P395
     unless $I396, if_394_end
-    .const 'Sub' $P398 = "31_1279564389.64843" 
+    .const 'Sub' $P398 = "31_1279589161.87188" 
     capture_lex $P398
     $P398()
   if_394_end:
@@ -8195,9 +8195,9 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block370"  :anon :subid("29_1279564389.64843") :outer("28_1279564389.64843")
+.sub "_block370"  :anon :subid("29_1279589161.87188") :outer("28_1279589161.87188")
 .annotate 'line', 118
-    .const 'Sub' $P383 = "30_1279564389.64843" 
+    .const 'Sub' $P383 = "30_1279589161.87188" 
     capture_lex $P383
     new $P379, 'ExceptionHandler'
     set_addr $P379, control_378
@@ -8217,7 +8217,7 @@
 .annotate 'line', 120
     .local pmc exception 
     .get_results (exception) 
-    .const 'Sub' $P383 = "30_1279564389.64843" 
+    .const 'Sub' $P383 = "30_1279589161.87188" 
     newclosure $P391, $P383
     $P391(exception)
     new $P392, 'Integer'
@@ -8237,7 +8237,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block382"  :anon :subid("30_1279564389.64843") :outer("29_1279564389.64843")
+.sub "_block382"  :anon :subid("30_1279589161.87188") :outer("29_1279589161.87188")
     .param pmc param_384
 .annotate 'line', 120
     .lex "$_", param_384
@@ -8260,9 +8260,9 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block397"  :anon :subid("31_1279564389.64843") :outer("28_1279564389.64843")
+.sub "_block397"  :anon :subid("31_1279589161.87188") :outer("28_1279589161.87188")
 .annotate 'line', 125
-    .const 'Sub' $P409 = "32_1279564389.64843" 
+    .const 'Sub' $P409 = "32_1279589161.87188" 
     capture_lex $P409
 .annotate 'line', 126
     get_global $P399, "$interactive_ctx"
@@ -8299,7 +8299,7 @@
     unless $P403, loop416_done
     shift $P407, $P403
   loop416_redo:
-    .const 'Sub' $P409 = "32_1279564389.64843" 
+    .const 'Sub' $P409 = "32_1279589161.87188" 
     capture_lex $P409
     $P409($P407)
   loop416_next:
@@ -8322,7 +8322,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block408"  :anon :subid("32_1279564389.64843") :outer("31_1279564389.64843")
+.sub "_block408"  :anon :subid("32_1279589161.87188") :outer("31_1279589161.87188")
     .param pmc param_410
 .annotate 'line', 128
     .lex "$_", param_410
@@ -8344,12 +8344,12 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "eval"  :subid("33_1279564389.64843") :method :outer("11_1279564389.64843")
+.sub "eval"  :subid("33_1279589161.87188") :method :outer("11_1279589161.87188")
     .param pmc param_450
     .param pmc param_451 :slurpy
     .param pmc param_452 :slurpy :named
 .annotate 'line', 146
-    .const 'Sub' $P471 = "34_1279564389.64843" 
+    .const 'Sub' $P471 = "34_1279589161.87188" 
     capture_lex $P471
     new $P449, 'ExceptionHandler'
     set_addr $P449, control_448
@@ -8396,7 +8396,7 @@
     set $P460, $I469
   if_461_end:
     unless $P460, if_459_end
-    .const 'Sub' $P471 = "34_1279564389.64843" 
+    .const 'Sub' $P471 = "34_1279589161.87188" 
     capture_lex $P471
     $P471()
   if_459_end:
@@ -8413,7 +8413,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block470"  :anon :subid("34_1279564389.64843") :outer("33_1279564389.64843")
+.sub "_block470"  :anon :subid("34_1279589161.87188") :outer("33_1279589161.87188")
 .annotate 'line', 152
     new $P472, "Undef"
     .lex "$outer_ctx", $P472
@@ -8467,7 +8467,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "ctxsave"  :subid("35_1279564389.64843") :method :outer("11_1279564389.64843")
+.sub "ctxsave"  :subid("35_1279589161.87188") :method :outer("11_1279589161.87188")
 .annotate 'line', 165
     new $P491, 'ExceptionHandler'
     set_addr $P491, control_490
@@ -8495,9 +8495,9 @@
 
 
 .namespace []
-.sub "_block498" :load :anon :subid("36_1279564389.64843")
+.sub "_block498" :load :anon :subid("36_1279589161.87188")
 .annotate 'line', 1
-    .const 'Sub' $P500 = "10_1279564389.64843" 
+    .const 'Sub' $P500 = "10_1279589161.87188" 
     $P501 = $P500()
     .return ($P501)
 .end

Modified: branches/gsoc_threads/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- branches/gsoc_threads/ext/nqp-rx/src/stage0/NQP-s0.pir	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/ext/nqp-rx/src/stage0/NQP-s0.pir	Wed Jul 21 04:47:35 2010	(r48157)
@@ -15,7 +15,7 @@
 ### .include 'gen/nqp-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1279564397.22945")
+.sub "_block11"  :anon :subid("10_1279589170.0083")
 .annotate 'line', 0
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     capture_lex $P14
@@ -32,15 +32,15 @@
     $P1423 = $P14()
 .annotate 'line', 1
     .return ($P1423)
-    .const 'Sub' $P1425 = "371_1279564397.22945" 
+    .const 'Sub' $P1425 = "371_1279589170.0083" 
     .return ($P1425)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post372") :outer("10_1279564397.22945")
+.sub "" :load :init :subid("post372") :outer("10_1279589170.0083")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1279564397.22945" 
+    .const 'Sub' $P12 = "10_1279589170.0083" 
     .local pmc block
     set block, $P12
     $P1428 = get_root_global ["parrot"], "P6metaclass"
@@ -49,321 +49,321 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block13"  :subid("11_1279564397.22945") :outer("10_1279564397.22945")
+.sub "_block13"  :subid("11_1279589170.0083") :outer("10_1279589170.0083")
 .annotate 'line', 4
     get_hll_global $P1340, ["NQP";"Regex"], "_block1339" 
     capture_lex $P1340
-    .const 'Sub' $P1326 = "348_1279564397.22945" 
+    .const 'Sub' $P1326 = "348_1279589170.0083" 
     capture_lex $P1326
-    .const 'Sub' $P1320 = "346_1279564397.22945" 
+    .const 'Sub' $P1320 = "346_1279589170.0083" 
     capture_lex $P1320
-    .const 'Sub' $P1314 = "344_1279564397.22945" 
+    .const 'Sub' $P1314 = "344_1279589170.0083" 
     capture_lex $P1314
-    .const 'Sub' $P1308 = "342_1279564397.22945" 
+    .const 'Sub' $P1308 = "342_1279589170.0083" 
     capture_lex $P1308
-    .const 'Sub' $P1302 = "340_1279564397.22945" 
+    .const 'Sub' $P1302 = "340_1279589170.0083" 
     capture_lex $P1302
-    .const 'Sub' $P1296 = "338_1279564397.22945" 
+    .const 'Sub' $P1296 = "338_1279589170.0083" 
     capture_lex $P1296
-    .const 'Sub' $P1289 = "336_1279564397.22945" 
+    .const 'Sub' $P1289 = "336_1279589170.0083" 
     capture_lex $P1289
-    .const 'Sub' $P1282 = "334_1279564397.22945" 
+    .const 'Sub' $P1282 = "334_1279589170.0083" 
     capture_lex $P1282
-    .const 'Sub' $P1275 = "332_1279564397.22945" 
+    .const 'Sub' $P1275 = "332_1279589170.0083" 
     capture_lex $P1275
-    .const 'Sub' $P1268 = "330_1279564397.22945" 
+    .const 'Sub' $P1268 = "330_1279589170.0083" 
     capture_lex $P1268
-    .const 'Sub' $P1262 = "328_1279564397.22945" 
+    .const 'Sub' $P1262 = "328_1279589170.0083" 
     capture_lex $P1262
-    .const 'Sub' $P1255 = "326_1279564397.22945" 
+    .const 'Sub' $P1255 = "326_1279589170.0083" 
     capture_lex $P1255
-    .const 'Sub' $P1248 = "324_1279564397.22945" 
+    .const 'Sub' $P1248 = "324_1279589170.0083" 
     capture_lex $P1248
-    .const 'Sub' $P1241 = "322_1279564397.22945" 
+    .const 'Sub' $P1241 = "322_1279589170.0083" 
     capture_lex $P1241
-    .const 'Sub' $P1234 = "320_1279564397.22945" 
+    .const 'Sub' $P1234 = "320_1279589170.0083" 
     capture_lex $P1234
-    .const 'Sub' $P1227 = "318_1279564397.22945" 
+    .const 'Sub' $P1227 = "318_1279589170.0083" 
     capture_lex $P1227
-    .const 'Sub' $P1220 = "316_1279564397.22945" 
+    .const 'Sub' $P1220 = "316_1279589170.0083" 
     capture_lex $P1220
-    .const 'Sub' $P1213 = "314_1279564397.22945" 
+    .const 'Sub' $P1213 = "314_1279589170.0083" 
     capture_lex $P1213
-    .const 'Sub' $P1206 = "312_1279564397.22945" 
+    .const 'Sub' $P1206 = "312_1279589170.0083" 
     capture_lex $P1206
-    .const 'Sub' $P1199 = "310_1279564397.22945" 
+    .const 'Sub' $P1199 = "310_1279589170.0083" 
     capture_lex $P1199
-    .const 'Sub' $P1192 = "308_1279564397.22945" 
+    .const 'Sub' $P1192 = "308_1279589170.0083" 
     capture_lex $P1192
-    .const 'Sub' $P1185 = "306_1279564397.22945" 
+    .const 'Sub' $P1185 = "306_1279589170.0083" 
     capture_lex $P1185
-    .const 'Sub' $P1178 = "304_1279564397.22945" 
+    .const 'Sub' $P1178 = "304_1279589170.0083" 
     capture_lex $P1178
-    .const 'Sub' $P1171 = "302_1279564397.22945" 
+    .const 'Sub' $P1171 = "302_1279589170.0083" 
     capture_lex $P1171
-    .const 'Sub' $P1164 = "300_1279564397.22945" 
+    .const 'Sub' $P1164 = "300_1279589170.0083" 
     capture_lex $P1164
-    .const 'Sub' $P1157 = "298_1279564397.22945" 
+    .const 'Sub' $P1157 = "298_1279589170.0083" 
     capture_lex $P1157
-    .const 'Sub' $P1150 = "296_1279564397.22945" 
+    .const 'Sub' $P1150 = "296_1279589170.0083" 
     capture_lex $P1150
-    .const 'Sub' $P1143 = "294_1279564397.22945" 
+    .const 'Sub' $P1143 = "294_1279589170.0083" 
     capture_lex $P1143
-    .const 'Sub' $P1136 = "292_1279564397.22945" 
+    .const 'Sub' $P1136 = "292_1279589170.0083" 
     capture_lex $P1136
-    .const 'Sub' $P1129 = "290_1279564397.22945" 
+    .const 'Sub' $P1129 = "290_1279589170.0083" 
     capture_lex $P1129
-    .const 'Sub' $P1122 = "288_1279564397.22945" 
+    .const 'Sub' $P1122 = "288_1279589170.0083" 
     capture_lex $P1122
-    .const 'Sub' $P1115 = "286_1279564397.22945" 
+    .const 'Sub' $P1115 = "286_1279589170.0083" 
     capture_lex $P1115
-    .const 'Sub' $P1108 = "284_1279564397.22945" 
+    .const 'Sub' $P1108 = "284_1279589170.0083" 
     capture_lex $P1108
-    .const 'Sub' $P1101 = "282_1279564397.22945" 
+    .const 'Sub' $P1101 = "282_1279589170.0083" 
     capture_lex $P1101
-    .const 'Sub' $P1094 = "280_1279564397.22945" 
+    .const 'Sub' $P1094 = "280_1279589170.0083" 
     capture_lex $P1094
-    .const 'Sub' $P1087 = "278_1279564397.22945" 
+    .const 'Sub' $P1087 = "278_1279589170.0083" 
     capture_lex $P1087
-    .const 'Sub' $P1080 = "276_1279564397.22945" 
+    .const 'Sub' $P1080 = "276_1279589170.0083" 
     capture_lex $P1080
-    .const 'Sub' $P1073 = "274_1279564397.22945" 
+    .const 'Sub' $P1073 = "274_1279589170.0083" 
     capture_lex $P1073
-    .const 'Sub' $P1066 = "272_1279564397.22945" 
+    .const 'Sub' $P1066 = "272_1279589170.0083" 
     capture_lex $P1066
-    .const 'Sub' $P1059 = "270_1279564397.22945" 
+    .const 'Sub' $P1059 = "270_1279589170.0083" 
     capture_lex $P1059
-    .const 'Sub' $P1053 = "268_1279564397.22945" 
+    .const 'Sub' $P1053 = "268_1279589170.0083" 
     capture_lex $P1053
-    .const 'Sub' $P1046 = "266_1279564397.22945" 
+    .const 'Sub' $P1046 = "266_1279589170.0083" 
     capture_lex $P1046
-    .const 'Sub' $P1039 = "264_1279564397.22945" 
+    .const 'Sub' $P1039 = "264_1279589170.0083" 
     capture_lex $P1039
-    .const 'Sub' $P1032 = "262_1279564397.22945" 
+    .const 'Sub' $P1032 = "262_1279589170.0083" 
     capture_lex $P1032
-    .const 'Sub' $P1025 = "260_1279564397.22945" 
+    .const 'Sub' $P1025 = "260_1279589170.0083" 
     capture_lex $P1025
-    .const 'Sub' $P1018 = "258_1279564397.22945" 
+    .const 'Sub' $P1018 = "258_1279589170.0083" 
     capture_lex $P1018
-    .const 'Sub' $P1011 = "256_1279564397.22945" 
+    .const 'Sub' $P1011 = "256_1279589170.0083" 
     capture_lex $P1011
-    .const 'Sub' $P1004 = "254_1279564397.22945" 
+    .const 'Sub' $P1004 = "254_1279589170.0083" 
     capture_lex $P1004
-    .const 'Sub' $P998 = "252_1279564397.22945" 
+    .const 'Sub' $P998 = "252_1279589170.0083" 
     capture_lex $P998
-    .const 'Sub' $P992 = "250_1279564397.22945" 
+    .const 'Sub' $P992 = "250_1279589170.0083" 
     capture_lex $P992
-    .const 'Sub' $P987 = "248_1279564397.22945" 
+    .const 'Sub' $P987 = "248_1279589170.0083" 
     capture_lex $P987
-    .const 'Sub' $P981 = "246_1279564397.22945" 
+    .const 'Sub' $P981 = "246_1279589170.0083" 
     capture_lex $P981
-    .const 'Sub' $P975 = "244_1279564397.22945" 
+    .const 'Sub' $P975 = "244_1279589170.0083" 
     capture_lex $P975
-    .const 'Sub' $P970 = "242_1279564397.22945" 
+    .const 'Sub' $P970 = "242_1279589170.0083" 
     capture_lex $P970
-    .const 'Sub' $P965 = "240_1279564397.22945" 
+    .const 'Sub' $P965 = "240_1279589170.0083" 
     capture_lex $P965
-    .const 'Sub' $P957 = "238_1279564397.22945" 
+    .const 'Sub' $P957 = "238_1279589170.0083" 
     capture_lex $P957
-    .const 'Sub' $P948 = "236_1279564397.22945" 
+    .const 'Sub' $P948 = "236_1279589170.0083" 
     capture_lex $P948
-    .const 'Sub' $P943 = "234_1279564397.22945" 
+    .const 'Sub' $P943 = "234_1279589170.0083" 
     capture_lex $P943
-    .const 'Sub' $P938 = "232_1279564397.22945" 
+    .const 'Sub' $P938 = "232_1279589170.0083" 
     capture_lex $P938
-    .const 'Sub' $P933 = "230_1279564397.22945" 
+    .const 'Sub' $P933 = "230_1279589170.0083" 
     capture_lex $P933
-    .const 'Sub' $P925 = "228_1279564397.22945" 
+    .const 'Sub' $P925 = "228_1279589170.0083" 
     capture_lex $P925
-    .const 'Sub' $P917 = "226_1279564397.22945" 
+    .const 'Sub' $P917 = "226_1279589170.0083" 
     capture_lex $P917
-    .const 'Sub' $P912 = "224_1279564397.22945" 
+    .const 'Sub' $P912 = "224_1279589170.0083" 
     capture_lex $P912
-    .const 'Sub' $P907 = "222_1279564397.22945" 
+    .const 'Sub' $P907 = "222_1279589170.0083" 
     capture_lex $P907
-    .const 'Sub' $P902 = "220_1279564397.22945" 
+    .const 'Sub' $P902 = "220_1279589170.0083" 
     capture_lex $P902
-    .const 'Sub' $P896 = "218_1279564397.22945" 
+    .const 'Sub' $P896 = "218_1279589170.0083" 
     capture_lex $P896
-    .const 'Sub' $P890 = "216_1279564397.22945" 
+    .const 'Sub' $P890 = "216_1279589170.0083" 
     capture_lex $P890
-    .const 'Sub' $P884 = "214_1279564397.22945" 
+    .const 'Sub' $P884 = "214_1279589170.0083" 
     capture_lex $P884
-    .const 'Sub' $P878 = "212_1279564397.22945" 
+    .const 'Sub' $P878 = "212_1279589170.0083" 
     capture_lex $P878
-    .const 'Sub' $P872 = "210_1279564397.22945" 
+    .const 'Sub' $P872 = "210_1279589170.0083" 
     capture_lex $P872
-    .const 'Sub' $P867 = "208_1279564397.22945" 
+    .const 'Sub' $P867 = "208_1279589170.0083" 
     capture_lex $P867
-    .const 'Sub' $P862 = "206_1279564397.22945" 
+    .const 'Sub' $P862 = "206_1279589170.0083" 
     capture_lex $P862
-    .const 'Sub' $P850 = "202_1279564397.22945" 
+    .const 'Sub' $P850 = "202_1279589170.0083" 
     capture_lex $P850
-    .const 'Sub' $P842 = "200_1279564397.22945" 
+    .const 'Sub' $P842 = "200_1279589170.0083" 
     capture_lex $P842
-    .const 'Sub' $P836 = "198_1279564397.22945" 
+    .const 'Sub' $P836 = "198_1279589170.0083" 
     capture_lex $P836
-    .const 'Sub' $P829 = "196_1279564397.22945" 
+    .const 'Sub' $P829 = "196_1279589170.0083" 
     capture_lex $P829
-    .const 'Sub' $P823 = "194_1279564397.22945" 
+    .const 'Sub' $P823 = "194_1279589170.0083" 
     capture_lex $P823
-    .const 'Sub' $P815 = "192_1279564397.22945" 
+    .const 'Sub' $P815 = "192_1279589170.0083" 
     capture_lex $P815
-    .const 'Sub' $P807 = "190_1279564397.22945" 
+    .const 'Sub' $P807 = "190_1279589170.0083" 
     capture_lex $P807
-    .const 'Sub' $P801 = "188_1279564397.22945" 
+    .const 'Sub' $P801 = "188_1279589170.0083" 
     capture_lex $P801
-    .const 'Sub' $P795 = "186_1279564397.22945" 
+    .const 'Sub' $P795 = "186_1279589170.0083" 
     capture_lex $P795
-    .const 'Sub' $P781 = "182_1279564397.22945" 
+    .const 'Sub' $P781 = "182_1279589170.0083" 
     capture_lex $P781
-    .const 'Sub' $P744 = "180_1279564397.22945" 
+    .const 'Sub' $P744 = "180_1279589170.0083" 
     capture_lex $P744
-    .const 'Sub' $P735 = "178_1279564397.22945" 
+    .const 'Sub' $P735 = "178_1279589170.0083" 
     capture_lex $P735
-    .const 'Sub' $P729 = "176_1279564397.22945" 
+    .const 'Sub' $P729 = "176_1279589170.0083" 
     capture_lex $P729
-    .const 'Sub' $P719 = "174_1279564397.22945" 
+    .const 'Sub' $P719 = "174_1279589170.0083" 
     capture_lex $P719
-    .const 'Sub' $P706 = "172_1279564397.22945" 
+    .const 'Sub' $P706 = "172_1279589170.0083" 
     capture_lex $P706
-    .const 'Sub' $P699 = "170_1279564397.22945" 
+    .const 'Sub' $P699 = "170_1279589170.0083" 
     capture_lex $P699
-    .const 'Sub' $P691 = "168_1279564397.22945" 
+    .const 'Sub' $P691 = "168_1279589170.0083" 
     capture_lex $P691
-    .const 'Sub' $P681 = "166_1279564397.22945" 
+    .const 'Sub' $P681 = "166_1279589170.0083" 
     capture_lex $P681
-    .const 'Sub' $P657 = "162_1279564397.22945" 
+    .const 'Sub' $P657 = "162_1279589170.0083" 
     capture_lex $P657
-    .const 'Sub' $P634 = "160_1279564397.22945" 
+    .const 'Sub' $P634 = "160_1279589170.0083" 
     capture_lex $P634
-    .const 'Sub' $P627 = "158_1279564397.22945" 
+    .const 'Sub' $P627 = "158_1279589170.0083" 
     capture_lex $P627
-    .const 'Sub' $P620 = "156_1279564397.22945" 
+    .const 'Sub' $P620 = "156_1279589170.0083" 
     capture_lex $P620
-    .const 'Sub' $P610 = "152_1279564397.22945" 
+    .const 'Sub' $P610 = "152_1279589170.0083" 
     capture_lex $P610
-    .const 'Sub' $P602 = "150_1279564397.22945" 
+    .const 'Sub' $P602 = "150_1279589170.0083" 
     capture_lex $P602
-    .const 'Sub' $P596 = "148_1279564397.22945" 
+    .const 'Sub' $P596 = "148_1279589170.0083" 
     capture_lex $P596
-    .const 'Sub' $P583 = "146_1279564397.22945" 
+    .const 'Sub' $P583 = "146_1279589170.0083" 
     capture_lex $P583
-    .const 'Sub' $P576 = "144_1279564397.22945" 
+    .const 'Sub' $P576 = "144_1279589170.0083" 
     capture_lex $P576
-    .const 'Sub' $P569 = "142_1279564397.22945" 
+    .const 'Sub' $P569 = "142_1279589170.0083" 
     capture_lex $P569
-    .const 'Sub' $P562 = "140_1279564397.22945" 
+    .const 'Sub' $P562 = "140_1279589170.0083" 
     capture_lex $P562
-    .const 'Sub' $P535 = "136_1279564397.22945" 
+    .const 'Sub' $P535 = "136_1279589170.0083" 
     capture_lex $P535
-    .const 'Sub' $P526 = "134_1279564397.22945" 
+    .const 'Sub' $P526 = "134_1279589170.0083" 
     capture_lex $P526
-    .const 'Sub' $P519 = "132_1279564397.22945" 
+    .const 'Sub' $P519 = "132_1279589170.0083" 
     capture_lex $P519
-    .const 'Sub' $P510 = "128_1279564397.22945" 
+    .const 'Sub' $P510 = "128_1279589170.0083" 
     capture_lex $P510
-    .const 'Sub' $P505 = "126_1279564397.22945" 
+    .const 'Sub' $P505 = "126_1279589170.0083" 
     capture_lex $P505
-    .const 'Sub' $P493 = "124_1279564397.22945" 
+    .const 'Sub' $P493 = "124_1279589170.0083" 
     capture_lex $P493
-    .const 'Sub' $P481 = "122_1279564397.22945" 
+    .const 'Sub' $P481 = "122_1279589170.0083" 
     capture_lex $P481
-    .const 'Sub' $P474 = "120_1279564397.22945" 
+    .const 'Sub' $P474 = "120_1279589170.0083" 
     capture_lex $P474
-    .const 'Sub' $P469 = "118_1279564397.22945" 
+    .const 'Sub' $P469 = "118_1279589170.0083" 
     capture_lex $P469
-    .const 'Sub' $P463 = "116_1279564397.22945" 
+    .const 'Sub' $P463 = "116_1279589170.0083" 
     capture_lex $P463
-    .const 'Sub' $P457 = "114_1279564397.22945" 
+    .const 'Sub' $P457 = "114_1279589170.0083" 
     capture_lex $P457
-    .const 'Sub' $P447 = "111_1279564397.22945" 
+    .const 'Sub' $P447 = "111_1279589170.0083" 
     capture_lex $P447
-    .const 'Sub' $P441 = "109_1279564397.22945" 
+    .const 'Sub' $P441 = "109_1279589170.0083" 
     capture_lex $P441
-    .const 'Sub' $P435 = "107_1279564397.22945" 
+    .const 'Sub' $P435 = "107_1279589170.0083" 
     capture_lex $P435
-    .const 'Sub' $P429 = "105_1279564397.22945" 
+    .const 'Sub' $P429 = "105_1279589170.0083" 
     capture_lex $P429
-    .const 'Sub' $P423 = "103_1279564397.22945" 
+    .const 'Sub' $P423 = "103_1279589170.0083" 
     capture_lex $P423
-    .const 'Sub' $P417 = "101_1279564397.22945" 
+    .const 'Sub' $P417 = "101_1279589170.0083" 
     capture_lex $P417
-    .const 'Sub' $P411 = "99_1279564397.22945" 
+    .const 'Sub' $P411 = "99_1279589170.0083" 
     capture_lex $P411
-    .const 'Sub' $P402 = "97_1279564397.22945" 
+    .const 'Sub' $P402 = "97_1279589170.0083" 
     capture_lex $P402
-    .const 'Sub' $P393 = "95_1279564397.22945" 
+    .const 'Sub' $P393 = "95_1279589170.0083" 
     capture_lex $P393
-    .const 'Sub' $P384 = "93_1279564397.22945" 
+    .const 'Sub' $P384 = "93_1279589170.0083" 
     capture_lex $P384
-    .const 'Sub' $P371 = "89_1279564397.22945" 
+    .const 'Sub' $P371 = "89_1279589170.0083" 
     capture_lex $P371
-    .const 'Sub' $P362 = "87_1279564397.22945" 
+    .const 'Sub' $P362 = "87_1279589170.0083" 
     capture_lex $P362
-    .const 'Sub' $P352 = "83_1279564397.22945" 
+    .const 'Sub' $P352 = "83_1279589170.0083" 
     capture_lex $P352
-    .const 'Sub' $P345 = "81_1279564397.22945" 
+    .const 'Sub' $P345 = "81_1279589170.0083" 
     capture_lex $P345
-    .const 'Sub' $P338 = "79_1279564397.22945" 
+    .const 'Sub' $P338 = "79_1279589170.0083" 
     capture_lex $P338
-    .const 'Sub' $P326 = "75_1279564397.22945" 
+    .const 'Sub' $P326 = "75_1279589170.0083" 
     capture_lex $P326
-    .const 'Sub' $P318 = "73_1279564397.22945" 
+    .const 'Sub' $P318 = "73_1279589170.0083" 
     capture_lex $P318
-    .const 'Sub' $P310 = "71_1279564397.22945" 
+    .const 'Sub' $P310 = "71_1279589170.0083" 
     capture_lex $P310
-    .const 'Sub' $P290 = "69_1279564397.22945" 
+    .const 'Sub' $P290 = "69_1279589170.0083" 
     capture_lex $P290
-    .const 'Sub' $P281 = "67_1279564397.22945" 
+    .const 'Sub' $P281 = "67_1279589170.0083" 
     capture_lex $P281
-    .const 'Sub' $P263 = "64_1279564397.22945" 
+    .const 'Sub' $P263 = "64_1279589170.0083" 
     capture_lex $P263
-    .const 'Sub' $P245 = "62_1279564397.22945" 
+    .const 'Sub' $P245 = "62_1279589170.0083" 
     capture_lex $P245
-    .const 'Sub' $P236 = "58_1279564397.22945" 
+    .const 'Sub' $P236 = "58_1279589170.0083" 
     capture_lex $P236
-    .const 'Sub' $P231 = "56_1279564397.22945" 
+    .const 'Sub' $P231 = "56_1279589170.0083" 
     capture_lex $P231
-    .const 'Sub' $P222 = "52_1279564397.22945" 
+    .const 'Sub' $P222 = "52_1279589170.0083" 
     capture_lex $P222
-    .const 'Sub' $P217 = "50_1279564397.22945" 
+    .const 'Sub' $P217 = "50_1279589170.0083" 
     capture_lex $P217
-    .const 'Sub' $P212 = "48_1279564397.22945" 
+    .const 'Sub' $P212 = "48_1279589170.0083" 
     capture_lex $P212
-    .const 'Sub' $P203 = "46_1279564397.22945" 
+    .const 'Sub' $P203 = "46_1279589170.0083" 
     capture_lex $P203
-    .const 'Sub' $P196 = "44_1279564397.22945" 
+    .const 'Sub' $P196 = "44_1279589170.0083" 
     capture_lex $P196
-    .const 'Sub' $P190 = "42_1279564397.22945" 
+    .const 'Sub' $P190 = "42_1279589170.0083" 
     capture_lex $P190
-    .const 'Sub' $P182 = "40_1279564397.22945" 
+    .const 'Sub' $P182 = "40_1279589170.0083" 
     capture_lex $P182
-    .const 'Sub' $P176 = "38_1279564397.22945" 
+    .const 'Sub' $P176 = "38_1279589170.0083" 
     capture_lex $P176
-    .const 'Sub' $P170 = "36_1279564397.22945" 
+    .const 'Sub' $P170 = "36_1279589170.0083" 
     capture_lex $P170
-    .const 'Sub' $P155 = "33_1279564397.22945" 
+    .const 'Sub' $P155 = "33_1279589170.0083" 
     capture_lex $P155
-    .const 'Sub' $P141 = "31_1279564397.22945" 
+    .const 'Sub' $P141 = "31_1279589170.0083" 
     capture_lex $P141
-    .const 'Sub' $P134 = "29_1279564397.22945" 
+    .const 'Sub' $P134 = "29_1279589170.0083" 
     capture_lex $P134
-    .const 'Sub' $P95 = "26_1279564397.22945" 
+    .const 'Sub' $P95 = "26_1279589170.0083" 
     capture_lex $P95
-    .const 'Sub' $P80 = "23_1279564397.22945" 
+    .const 'Sub' $P80 = "23_1279589170.0083" 
     capture_lex $P80
-    .const 'Sub' $P69 = "21_1279564397.22945" 
+    .const 'Sub' $P69 = "21_1279589170.0083" 
     capture_lex $P69
-    .const 'Sub' $P57 = "19_1279564397.22945" 
+    .const 'Sub' $P57 = "19_1279589170.0083" 
     capture_lex $P57
-    .const 'Sub' $P49 = "17_1279564397.22945" 
+    .const 'Sub' $P49 = "17_1279589170.0083" 
     capture_lex $P49
-    .const 'Sub' $P42 = "15_1279564397.22945" 
+    .const 'Sub' $P42 = "15_1279589170.0083" 
     capture_lex $P42
-    .const 'Sub' $P35 = "13_1279564397.22945" 
+    .const 'Sub' $P35 = "13_1279589170.0083" 
     capture_lex $P35
-    .const 'Sub' $P15 = "12_1279564397.22945" 
+    .const 'Sub' $P15 = "12_1279589170.0083" 
     capture_lex $P15
     $P0 = find_dynamic_lex "$*CTXSAVE"
     if null $P0 goto ctxsave_done
@@ -377,13 +377,13 @@
     $P1402 = $P1340()
 .annotate 'line', 4
     .return ($P1402)
-    .const 'Sub' $P1404 = "370_1279564397.22945" 
+    .const 'Sub' $P1404 = "370_1279589170.0083" 
     .return ($P1404)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "" :load :init :subid("post373") :outer("11_1279564397.22945")
+.sub "" :load :init :subid("post373") :outer("11_1279589170.0083")
 .annotate 'line', 4
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     .local pmc block
@@ -441,7 +441,7 @@
 
 .namespace ["NQP";"Grammar"]
 .include "except_types.pasm"
-.sub "TOP"  :subid("12_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "TOP"  :subid("12_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     new $P17, 'ExceptionHandler'
     set_addr $P17, control_16
@@ -531,7 +531,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "identifier"  :subid("13_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "identifier"  :subid("13_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx36_tgt
     .local int rx36_pos
@@ -613,7 +613,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__identifier"  :subid("14_1279564397.22945") :method
+.sub "!PREFIX__identifier"  :subid("14_1279589170.0083") :method
 .annotate 'line', 4
     $P38 = self."!PREFIX__!subrule"("ident", "")
     new $P39, "ResizablePMCArray"
@@ -623,7 +623,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "name"  :subid("15_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "name"  :subid("15_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx43_tgt
     .local int rx43_pos
@@ -709,7 +709,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__name"  :subid("16_1279564397.22945") :method
+.sub "!PREFIX__name"  :subid("16_1279589170.0083") :method
 .annotate 'line', 4
     new $P45, "ResizablePMCArray"
     push $P45, ""
@@ -718,7 +718,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "deflongname"  :subid("17_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "deflongname"  :subid("17_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx50_tgt
     .local int rx50_pos
@@ -802,7 +802,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__deflongname"  :subid("18_1279564397.22945") :method
+.sub "!PREFIX__deflongname"  :subid("18_1279589170.0083") :method
 .annotate 'line', 4
     $P52 = self."!PREFIX__!subrule"("identifier", "")
     new $P53, "ResizablePMCArray"
@@ -812,7 +812,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ENDSTMT"  :subid("19_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "ENDSTMT"  :subid("19_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx58_tgt
     .local int rx58_pos
@@ -959,7 +959,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ENDSTMT"  :subid("20_1279564397.22945") :method
+.sub "!PREFIX__ENDSTMT"  :subid("20_1279589170.0083") :method
 .annotate 'line', 4
     new $P60, "ResizablePMCArray"
     push $P60, ""
@@ -968,7 +968,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ws"  :subid("21_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "ws"  :subid("21_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx70_tgt
     .local int rx70_pos
@@ -1133,7 +1133,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ws"  :subid("22_1279564397.22945") :method
+.sub "!PREFIX__ws"  :subid("22_1279589170.0083") :method
 .annotate 'line', 4
     new $P72, "ResizablePMCArray"
     push $P72, ""
@@ -1143,9 +1143,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "unv"  :subid("23_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "unv"  :subid("23_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
-    .const 'Sub' $P88 = "25_1279564397.22945" 
+    .const 'Sub' $P88 = "25_1279589170.0083" 
     capture_lex $P88
     .local string rx81_tgt
     .local int rx81_pos
@@ -1193,7 +1193,7 @@
   rxanchor86_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx81_cur."!cursor_pos"(rx81_pos)
-    .const 'Sub' $P88 = "25_1279564397.22945" 
+    .const 'Sub' $P88 = "25_1279589170.0083" 
     capture_lex $P88
     $P10 = rx81_cur."before"($P88)
     unless $P10, rx81_fail
@@ -1278,7 +1278,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__unv"  :subid("24_1279564397.22945") :method
+.sub "!PREFIX__unv"  :subid("24_1279589170.0083") :method
 .annotate 'line', 4
     new $P83, "ResizablePMCArray"
     push $P83, ""
@@ -1289,7 +1289,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block87"  :anon :subid("25_1279564397.22945") :method :outer("23_1279564397.22945")
+.sub "_block87"  :anon :subid("25_1279589170.0083") :method :outer("23_1279589170.0083")
 .annotate 'line', 46
     .local string rx89_tgt
     .local int rx89_pos
@@ -1385,9 +1385,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pod_comment"  :subid("26_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "pod_comment"  :subid("26_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
-    .const 'Sub' $P127 = "28_1279564397.22945" 
+    .const 'Sub' $P127 = "28_1279589170.0083" 
     capture_lex $P127
     .local string rx96_tgt
     .local int rx96_pos
@@ -1893,7 +1893,7 @@
   rxanchor125_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx96_cur."!cursor_pos"(rx96_pos)
-    .const 'Sub' $P127 = "28_1279564397.22945" 
+    .const 'Sub' $P127 = "28_1279589170.0083" 
     capture_lex $P127
     $P10 = rx96_cur."before"($P127)
     unless $P10, rx96_fail
@@ -1946,7 +1946,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pod_comment"  :subid("27_1279564397.22945") :method
+.sub "!PREFIX__pod_comment"  :subid("27_1279589170.0083") :method
 .annotate 'line', 4
     new $P98, "ResizablePMCArray"
     push $P98, ""
@@ -1955,7 +1955,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block126"  :anon :subid("28_1279564397.22945") :method :outer("26_1279564397.22945")
+.sub "_block126"  :anon :subid("28_1279589170.0083") :method :outer("26_1279589170.0083")
 .annotate 'line', 69
     .local string rx128_tgt
     .local int rx128_pos
@@ -2081,7 +2081,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "comp_unit"  :subid("29_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "comp_unit"  :subid("29_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx135_tgt
     .local int rx135_pos
@@ -2170,7 +2170,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__comp_unit"  :subid("30_1279564397.22945") :method
+.sub "!PREFIX__comp_unit"  :subid("30_1279589170.0083") :method
 .annotate 'line', 4
     $P137 = self."!PREFIX__!subrule"("newpad", "")
     new $P138, "ResizablePMCArray"
@@ -2180,7 +2180,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statementlist"  :subid("31_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statementlist"  :subid("31_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx142_tgt
     .local int rx142_pos
@@ -2294,7 +2294,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statementlist"  :subid("32_1279564397.22945") :method
+.sub "!PREFIX__statementlist"  :subid("32_1279589170.0083") :method
 .annotate 'line', 4
     $P144 = self."!PREFIX__!subrule"("ws", "")
     $P145 = self."!PREFIX__!subrule"("ws", "")
@@ -2306,9 +2306,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement"  :subid("33_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement"  :subid("33_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
-    .const 'Sub' $P161 = "35_1279564397.22945" 
+    .const 'Sub' $P161 = "35_1279589170.0083" 
     capture_lex $P161
     .local string rx156_tgt
     .local int rx156_pos
@@ -2345,7 +2345,7 @@
 .annotate 'line', 96
   # rx subrule "before" subtype=zerowidth negate=1
     rx156_cur."!cursor_pos"(rx156_pos)
-    .const 'Sub' $P161 = "35_1279564397.22945" 
+    .const 'Sub' $P161 = "35_1279589170.0083" 
     capture_lex $P161
     $P10 = rx156_cur."before"($P161)
     if $P10, rx156_fail
@@ -2460,7 +2460,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement"  :subid("34_1279564397.22945") :method
+.sub "!PREFIX__statement"  :subid("34_1279589170.0083") :method
 .annotate 'line', 4
     new $P158, "ResizablePMCArray"
     push $P158, ""
@@ -2469,7 +2469,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block160"  :anon :subid("35_1279564397.22945") :method :outer("33_1279564397.22945")
+.sub "_block160"  :anon :subid("35_1279589170.0083") :method :outer("33_1279589170.0083")
 .annotate 'line', 96
     .local string rx162_tgt
     .local int rx162_pos
@@ -2537,7 +2537,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "eat_terminator"  :subid("36_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "eat_terminator"  :subid("36_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx171_tgt
     .local int rx171_pos
@@ -2628,7 +2628,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__eat_terminator"  :subid("37_1279564397.22945") :method
+.sub "!PREFIX__eat_terminator"  :subid("37_1279589170.0083") :method
 .annotate 'line', 4
     new $P173, "ResizablePMCArray"
     push $P173, ""
@@ -2640,7 +2640,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "xblock"  :subid("38_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "xblock"  :subid("38_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx177_tgt
     .local int rx177_pos
@@ -2715,7 +2715,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__xblock"  :subid("39_1279564397.22945") :method
+.sub "!PREFIX__xblock"  :subid("39_1279589170.0083") :method
 .annotate 'line', 4
     $P179 = self."!PREFIX__!subrule"("EXPR", "")
     new $P180, "ResizablePMCArray"
@@ -2725,7 +2725,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pblock"  :subid("40_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "pblock"  :subid("40_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx183_tgt
     .local int rx183_pos
@@ -2848,7 +2848,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pblock"  :subid("41_1279564397.22945") :method
+.sub "!PREFIX__pblock"  :subid("41_1279589170.0083") :method
 .annotate 'line', 4
     $P185 = self."!PREFIX__!subrule"("panic", "")
     $P186 = self."!PREFIX__!subrule"("lambda", "")
@@ -2861,7 +2861,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "lambda"  :subid("42_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "lambda"  :subid("42_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx191_tgt
     .local int rx191_pos
@@ -2936,7 +2936,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__lambda"  :subid("43_1279564397.22945") :method
+.sub "!PREFIX__lambda"  :subid("43_1279589170.0083") :method
 .annotate 'line', 4
     new $P193, "ResizablePMCArray"
     push $P193, "<->"
@@ -2946,7 +2946,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "block"  :subid("44_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "block"  :subid("44_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx197_tgt
     .local int rx197_pos
@@ -3033,7 +3033,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__block"  :subid("45_1279564397.22945") :method
+.sub "!PREFIX__block"  :subid("45_1279589170.0083") :method
 .annotate 'line', 4
     $P199 = self."!PREFIX__!subrule"("panic", "")
     new $P200, "ResizablePMCArray"
@@ -3044,7 +3044,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blockoid"  :subid("46_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "blockoid"  :subid("46_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx204_tgt
     .local int rx204_pos
@@ -3150,7 +3150,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blockoid"  :subid("47_1279564397.22945") :method
+.sub "!PREFIX__blockoid"  :subid("47_1279589170.0083") :method
 .annotate 'line', 4
     $P206 = self."!PREFIX__!subrule"("finishpad", "")
     new $P207, "ResizablePMCArray"
@@ -3160,7 +3160,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "newpad"  :subid("48_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "newpad"  :subid("48_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx213_tgt
     .local int rx213_pos
@@ -3215,7 +3215,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__newpad"  :subid("49_1279564397.22945") :method
+.sub "!PREFIX__newpad"  :subid("49_1279589170.0083") :method
 .annotate 'line', 4
     new $P215, "ResizablePMCArray"
     push $P215, ""
@@ -3224,7 +3224,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "outerctx"  :subid("50_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "outerctx"  :subid("50_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx218_tgt
     .local int rx218_pos
@@ -3279,7 +3279,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__outerctx"  :subid("51_1279564397.22945") :method
+.sub "!PREFIX__outerctx"  :subid("51_1279589170.0083") :method
 .annotate 'line', 4
     new $P220, "ResizablePMCArray"
     push $P220, ""
@@ -3288,7 +3288,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "finishpad"  :subid("52_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "finishpad"  :subid("52_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx223_tgt
     .local int rx223_pos
@@ -3343,7 +3343,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__finishpad"  :subid("53_1279564397.22945") :method
+.sub "!PREFIX__finishpad"  :subid("53_1279589170.0083") :method
 .annotate 'line', 4
     new $P225, "ResizablePMCArray"
     push $P225, ""
@@ -3352,7 +3352,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator"  :subid("54_1279564397.22945") :method
+.sub "terminator"  :subid("54_1279589170.0083") :method
 .annotate 'line', 148
     $P228 = self."!protoregex"("terminator")
     .return ($P228)
@@ -3360,7 +3360,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator"  :subid("55_1279564397.22945") :method
+.sub "!PREFIX__terminator"  :subid("55_1279589170.0083") :method
 .annotate 'line', 148
     $P230 = self."!PREFIX__!protoregex"("terminator")
     .return ($P230)
@@ -3368,7 +3368,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<;>"  :subid("56_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "terminator:sym<;>"  :subid("56_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx232_tgt
     .local int rx232_pos
@@ -3429,7 +3429,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<;>"  :subid("57_1279564397.22945") :method
+.sub "!PREFIX__terminator:sym<;>"  :subid("57_1279589170.0083") :method
 .annotate 'line', 4
     new $P234, "ResizablePMCArray"
     push $P234, ";"
@@ -3438,7 +3438,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<}>"  :subid("58_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "terminator:sym<}>"  :subid("58_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx237_tgt
     .local int rx237_pos
@@ -3499,7 +3499,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<}>"  :subid("59_1279564397.22945") :method
+.sub "!PREFIX__terminator:sym<}>"  :subid("59_1279589170.0083") :method
 .annotate 'line', 4
     new $P239, "ResizablePMCArray"
     push $P239, "}"
@@ -3508,7 +3508,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control"  :subid("60_1279564397.22945") :method
+.sub "statement_control"  :subid("60_1279589170.0083") :method
 .annotate 'line', 155
     $P242 = self."!protoregex"("statement_control")
     .return ($P242)
@@ -3516,7 +3516,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control"  :subid("61_1279564397.22945") :method
+.sub "!PREFIX__statement_control"  :subid("61_1279589170.0083") :method
 .annotate 'line', 155
     $P244 = self."!PREFIX__!protoregex"("statement_control")
     .return ($P244)
@@ -3524,7 +3524,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<if>"  :subid("62_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_control:sym<if>"  :subid("62_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx246_tgt
     .local int rx246_pos
@@ -3533,7 +3533,7 @@
     .local int rx246_rep
     .local pmc rx246_cur
     (rx246_cur, rx246_pos, rx246_tgt, $I10) = self."!cursor_start"()
-    rx246_cur."!cursor_caparray"("xblock", "else")
+    rx246_cur."!cursor_caparray"("else", "xblock")
     .lex unicode:"$\x{a2}", rx246_cur
     .local pmc match
     .lex "$/", match
@@ -3725,7 +3725,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<if>"  :subid("63_1279564397.22945") :method
+.sub "!PREFIX__statement_control:sym<if>"  :subid("63_1279589170.0083") :method
 .annotate 'line', 4
     new $P248, "ResizablePMCArray"
     push $P248, "if"
@@ -3734,9 +3734,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<unless>"  :subid("64_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_control:sym<unless>"  :subid("64_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
-    .const 'Sub' $P274 = "66_1279564397.22945" 
+    .const 'Sub' $P274 = "66_1279589170.0083" 
     capture_lex $P274
     .local string rx264_tgt
     .local int rx264_pos
@@ -3826,7 +3826,7 @@
     rx264_pos = $P10."pos"()
   # rx subrule "before" subtype=zerowidth negate=1
     rx264_cur."!cursor_pos"(rx264_pos)
-    .const 'Sub' $P274 = "66_1279564397.22945" 
+    .const 'Sub' $P274 = "66_1279589170.0083" 
     capture_lex $P274
     $P10 = rx264_cur."before"($P274)
     if $P10, rx264_fail
@@ -3880,7 +3880,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<unless>"  :subid("65_1279564397.22945") :method
+.sub "!PREFIX__statement_control:sym<unless>"  :subid("65_1279589170.0083") :method
 .annotate 'line', 4
     new $P266, "ResizablePMCArray"
     push $P266, "unless"
@@ -3889,7 +3889,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block273"  :anon :subid("66_1279564397.22945") :method :outer("64_1279564397.22945")
+.sub "_block273"  :anon :subid("66_1279589170.0083") :method :outer("64_1279589170.0083")
 .annotate 'line', 167
     .local string rx275_tgt
     .local int rx275_pos
@@ -3949,7 +3949,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<while>"  :subid("67_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_control:sym<while>"  :subid("67_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx282_tgt
     .local int rx282_pos
@@ -4063,7 +4063,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<while>"  :subid("68_1279564397.22945") :method
+.sub "!PREFIX__statement_control:sym<while>"  :subid("68_1279589170.0083") :method
 .annotate 'line', 4
     new $P284, "ResizablePMCArray"
     push $P284, "until"
@@ -4073,7 +4073,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<repeat>"  :subid("69_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_control:sym<repeat>"  :subid("69_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx291_tgt
     .local int rx291_pos
@@ -4312,7 +4312,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<repeat>"  :subid("70_1279564397.22945") :method
+.sub "!PREFIX__statement_control:sym<repeat>"  :subid("70_1279589170.0083") :method
 .annotate 'line', 4
     new $P293, "ResizablePMCArray"
     push $P293, "repeat"
@@ -4321,7 +4321,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<for>"  :subid("71_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_control:sym<for>"  :subid("71_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx311_tgt
     .local int rx311_pos
@@ -4422,7 +4422,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<for>"  :subid("72_1279564397.22945") :method
+.sub "!PREFIX__statement_control:sym<for>"  :subid("72_1279589170.0083") :method
 .annotate 'line', 4
     new $P313, "ResizablePMCArray"
     push $P313, "for"
@@ -4431,7 +4431,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CATCH>"  :subid("73_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_control:sym<CATCH>"  :subid("73_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx319_tgt
     .local int rx319_pos
@@ -4532,7 +4532,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CATCH>"  :subid("74_1279564397.22945") :method
+.sub "!PREFIX__statement_control:sym<CATCH>"  :subid("74_1279589170.0083") :method
 .annotate 'line', 4
     new $P321, "ResizablePMCArray"
     push $P321, "CATCH"
@@ -4541,7 +4541,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CONTROL>"  :subid("75_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_control:sym<CONTROL>"  :subid("75_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx327_tgt
     .local int rx327_pos
@@ -4642,7 +4642,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CONTROL>"  :subid("76_1279564397.22945") :method
+.sub "!PREFIX__statement_control:sym<CONTROL>"  :subid("76_1279589170.0083") :method
 .annotate 'line', 4
     new $P329, "ResizablePMCArray"
     push $P329, "CONTROL"
@@ -4651,7 +4651,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix"  :subid("77_1279564397.22945") :method
+.sub "statement_prefix"  :subid("77_1279589170.0083") :method
 .annotate 'line', 198
     $P335 = self."!protoregex"("statement_prefix")
     .return ($P335)
@@ -4659,7 +4659,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix"  :subid("78_1279564397.22945") :method
+.sub "!PREFIX__statement_prefix"  :subid("78_1279589170.0083") :method
 .annotate 'line', 198
     $P337 = self."!PREFIX__!protoregex"("statement_prefix")
     .return ($P337)
@@ -4667,7 +4667,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<INIT>"  :subid("79_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_prefix:sym<INIT>"  :subid("79_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx339_tgt
     .local int rx339_pos
@@ -4750,7 +4750,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("80_1279564397.22945") :method
+.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("80_1279589170.0083") :method
 .annotate 'line', 4
     $P341 = self."!PREFIX__!subrule"("blorst", "INIT")
     new $P342, "ResizablePMCArray"
@@ -4760,7 +4760,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<try>"  :subid("81_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_prefix:sym<try>"  :subid("81_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx346_tgt
     .local int rx346_pos
@@ -4845,7 +4845,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<try>"  :subid("82_1279564397.22945") :method
+.sub "!PREFIX__statement_prefix:sym<try>"  :subid("82_1279589170.0083") :method
 .annotate 'line', 4
     $P348 = self."!PREFIX__!subrule"("blorst", "try")
     new $P349, "ResizablePMCArray"
@@ -4855,7 +4855,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blorst"  :subid("83_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "blorst"  :subid("83_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx353_tgt
     .local int rx353_pos
@@ -4948,7 +4948,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blorst"  :subid("84_1279564397.22945") :method
+.sub "!PREFIX__blorst"  :subid("84_1279589170.0083") :method
 .annotate 'line', 4
     new $P355, "ResizablePMCArray"
     push $P355, ""
@@ -4957,7 +4957,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond"  :subid("85_1279564397.22945") :method
+.sub "statement_mod_cond"  :subid("85_1279589170.0083") :method
 .annotate 'line', 212
     $P359 = self."!protoregex"("statement_mod_cond")
     .return ($P359)
@@ -4965,7 +4965,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond"  :subid("86_1279564397.22945") :method
+.sub "!PREFIX__statement_mod_cond"  :subid("86_1279589170.0083") :method
 .annotate 'line', 212
     $P361 = self."!PREFIX__!protoregex"("statement_mod_cond")
     .return ($P361)
@@ -4973,7 +4973,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<if>"  :subid("87_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_mod_cond:sym<if>"  :subid("87_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx363_tgt
     .local int rx363_pos
@@ -5066,7 +5066,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("88_1279564397.22945") :method
+.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("88_1279589170.0083") :method
 .annotate 'line', 4
     $P365 = self."!PREFIX__!subrule"("ws", "if")
     new $P366, "ResizablePMCArray"
@@ -5076,7 +5076,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<unless>"  :subid("89_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_mod_cond:sym<unless>"  :subid("89_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx372_tgt
     .local int rx372_pos
@@ -5169,7 +5169,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("90_1279564397.22945") :method
+.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("90_1279589170.0083") :method
 .annotate 'line', 4
     $P374 = self."!PREFIX__!subrule"("ws", "unless")
     new $P375, "ResizablePMCArray"
@@ -5179,7 +5179,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop"  :subid("91_1279564397.22945") :method
+.sub "statement_mod_loop"  :subid("91_1279589170.0083") :method
 .annotate 'line', 217
     $P381 = self."!protoregex"("statement_mod_loop")
     .return ($P381)
@@ -5187,7 +5187,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop"  :subid("92_1279564397.22945") :method
+.sub "!PREFIX__statement_mod_loop"  :subid("92_1279589170.0083") :method
 .annotate 'line', 217
     $P383 = self."!PREFIX__!protoregex"("statement_mod_loop")
     .return ($P383)
@@ -5195,7 +5195,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<while>"  :subid("93_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_mod_loop:sym<while>"  :subid("93_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx385_tgt
     .local int rx385_pos
@@ -5288,7 +5288,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("94_1279564397.22945") :method
+.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("94_1279589170.0083") :method
 .annotate 'line', 4
     $P387 = self."!PREFIX__!subrule"("ws", "while")
     new $P388, "ResizablePMCArray"
@@ -5298,7 +5298,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<until>"  :subid("95_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_mod_loop:sym<until>"  :subid("95_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx394_tgt
     .local int rx394_pos
@@ -5391,7 +5391,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("96_1279564397.22945") :method
+.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("96_1279589170.0083") :method
 .annotate 'line', 4
     $P396 = self."!PREFIX__!subrule"("ws", "until")
     new $P397, "ResizablePMCArray"
@@ -5401,7 +5401,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<for>"  :subid("97_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "statement_mod_loop:sym<for>"  :subid("97_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx403_tgt
     .local int rx403_pos
@@ -5494,7 +5494,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<for>"  :subid("98_1279564397.22945") :method
+.sub "!PREFIX__statement_mod_loop:sym<for>"  :subid("98_1279589170.0083") :method
 .annotate 'line', 4
     $P405 = self."!PREFIX__!subrule"("ws", "for")
     new $P406, "ResizablePMCArray"
@@ -5504,7 +5504,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<fatarrow>"  :subid("99_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<fatarrow>"  :subid("99_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx412_tgt
     .local int rx412_pos
@@ -5566,7 +5566,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<fatarrow>"  :subid("100_1279564397.22945") :method
+.sub "!PREFIX__term:sym<fatarrow>"  :subid("100_1279589170.0083") :method
 .annotate 'line', 4
     $P414 = self."!PREFIX__!subrule"("fatarrow", "")
     new $P415, "ResizablePMCArray"
@@ -5576,7 +5576,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<colonpair>"  :subid("101_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<colonpair>"  :subid("101_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx418_tgt
     .local int rx418_pos
@@ -5638,7 +5638,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<colonpair>"  :subid("102_1279564397.22945") :method
+.sub "!PREFIX__term:sym<colonpair>"  :subid("102_1279589170.0083") :method
 .annotate 'line', 4
     $P420 = self."!PREFIX__!subrule"("colonpair", "")
     new $P421, "ResizablePMCArray"
@@ -5648,7 +5648,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<variable>"  :subid("103_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<variable>"  :subid("103_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx424_tgt
     .local int rx424_pos
@@ -5710,7 +5710,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<variable>"  :subid("104_1279564397.22945") :method
+.sub "!PREFIX__term:sym<variable>"  :subid("104_1279589170.0083") :method
 .annotate 'line', 4
     $P426 = self."!PREFIX__!subrule"("variable", "")
     new $P427, "ResizablePMCArray"
@@ -5720,7 +5720,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<package_declarator>"  :subid("105_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<package_declarator>"  :subid("105_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx430_tgt
     .local int rx430_pos
@@ -5782,7 +5782,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<package_declarator>"  :subid("106_1279564397.22945") :method
+.sub "!PREFIX__term:sym<package_declarator>"  :subid("106_1279589170.0083") :method
 .annotate 'line', 4
     $P432 = self."!PREFIX__!subrule"("package_declarator", "")
     new $P433, "ResizablePMCArray"
@@ -5792,7 +5792,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<scope_declarator>"  :subid("107_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<scope_declarator>"  :subid("107_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx436_tgt
     .local int rx436_pos
@@ -5854,7 +5854,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<scope_declarator>"  :subid("108_1279564397.22945") :method
+.sub "!PREFIX__term:sym<scope_declarator>"  :subid("108_1279589170.0083") :method
 .annotate 'line', 4
     $P438 = self."!PREFIX__!subrule"("scope_declarator", "")
     new $P439, "ResizablePMCArray"
@@ -5864,7 +5864,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<routine_declarator>"  :subid("109_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<routine_declarator>"  :subid("109_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx442_tgt
     .local int rx442_pos
@@ -5926,7 +5926,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<routine_declarator>"  :subid("110_1279564397.22945") :method
+.sub "!PREFIX__term:sym<routine_declarator>"  :subid("110_1279589170.0083") :method
 .annotate 'line', 4
     $P444 = self."!PREFIX__!subrule"("routine_declarator", "")
     new $P445, "ResizablePMCArray"
@@ -5936,9 +5936,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<multi_declarator>"  :subid("111_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<multi_declarator>"  :subid("111_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
-    .const 'Sub' $P453 = "113_1279564397.22945" 
+    .const 'Sub' $P453 = "113_1279589170.0083" 
     capture_lex $P453
     .local string rx448_tgt
     .local int rx448_pos
@@ -5974,7 +5974,7 @@
 .annotate 'line', 231
   # rx subrule "before" subtype=zerowidth negate=
     rx448_cur."!cursor_pos"(rx448_pos)
-    .const 'Sub' $P453 = "113_1279564397.22945" 
+    .const 'Sub' $P453 = "113_1279589170.0083" 
     capture_lex $P453
     $P10 = rx448_cur."before"($P453)
     unless $P10, rx448_fail
@@ -6006,7 +6006,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<multi_declarator>"  :subid("112_1279564397.22945") :method
+.sub "!PREFIX__term:sym<multi_declarator>"  :subid("112_1279589170.0083") :method
 .annotate 'line', 4
     new $P450, "ResizablePMCArray"
     push $P450, ""
@@ -6015,7 +6015,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block452"  :anon :subid("113_1279564397.22945") :method :outer("111_1279564397.22945")
+.sub "_block452"  :anon :subid("113_1279589170.0083") :method :outer("111_1279589170.0083")
 .annotate 'line', 231
     .local string rx454_tgt
     .local int rx454_pos
@@ -6099,7 +6099,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<regex_declarator>"  :subid("114_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<regex_declarator>"  :subid("114_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx458_tgt
     .local int rx458_pos
@@ -6161,7 +6161,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<regex_declarator>"  :subid("115_1279564397.22945") :method
+.sub "!PREFIX__term:sym<regex_declarator>"  :subid("115_1279589170.0083") :method
 .annotate 'line', 4
     $P460 = self."!PREFIX__!subrule"("regex_declarator", "")
     new $P461, "ResizablePMCArray"
@@ -6171,7 +6171,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<statement_prefix>"  :subid("116_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<statement_prefix>"  :subid("116_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx464_tgt
     .local int rx464_pos
@@ -6233,7 +6233,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<statement_prefix>"  :subid("117_1279564397.22945") :method
+.sub "!PREFIX__term:sym<statement_prefix>"  :subid("117_1279589170.0083") :method
 .annotate 'line', 4
     $P466 = self."!PREFIX__!subrule"("statement_prefix", "")
     new $P467, "ResizablePMCArray"
@@ -6243,7 +6243,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<lambda>"  :subid("118_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<lambda>"  :subid("118_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx470_tgt
     .local int rx470_pos
@@ -6309,7 +6309,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<lambda>"  :subid("119_1279564397.22945") :method
+.sub "!PREFIX__term:sym<lambda>"  :subid("119_1279589170.0083") :method
 .annotate 'line', 4
     new $P472, "ResizablePMCArray"
     push $P472, ""
@@ -6318,7 +6318,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "fatarrow"  :subid("120_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "fatarrow"  :subid("120_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx475_tgt
     .local int rx475_pos
@@ -6417,7 +6417,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__fatarrow"  :subid("121_1279564397.22945") :method
+.sub "!PREFIX__fatarrow"  :subid("121_1279589170.0083") :method
 .annotate 'line', 4
     $P477 = self."!PREFIX__!subrule"("identifier", "")
     new $P478, "ResizablePMCArray"
@@ -6427,7 +6427,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "colonpair"  :subid("122_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "colonpair"  :subid("122_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx482_tgt
     .local int rx482_pos
@@ -6567,7 +6567,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__colonpair"  :subid("123_1279564397.22945") :method
+.sub "!PREFIX__colonpair"  :subid("123_1279589170.0083") :method
 .annotate 'line', 4
     $P484 = self."!PREFIX__!subrule"("circumfix", ":")
     $P485 = self."!PREFIX__!subrule"("identifier", ":")
@@ -6581,7 +6581,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable"  :subid("124_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "variable"  :subid("124_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx494_tgt
     .local int rx494_pos
@@ -6747,7 +6747,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable"  :subid("125_1279564397.22945") :method
+.sub "!PREFIX__variable"  :subid("125_1279589170.0083") :method
 .annotate 'line', 4
     $P496 = self."!PREFIX__!subrule"("sigil", "")
     $P497 = self."!PREFIX__!subrule"("sigil", "")
@@ -6762,7 +6762,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "sigil"  :subid("126_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "sigil"  :subid("126_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx506_tgt
     .local int rx506_pos
@@ -6824,7 +6824,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__sigil"  :subid("127_1279564397.22945") :method
+.sub "!PREFIX__sigil"  :subid("127_1279589170.0083") :method
 .annotate 'line', 4
     new $P508, "ResizablePMCArray"
     push $P508, "&"
@@ -6836,7 +6836,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "twigil"  :subid("128_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "twigil"  :subid("128_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx511_tgt
     .local int rx511_pos
@@ -6898,7 +6898,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__twigil"  :subid("129_1279564397.22945") :method
+.sub "!PREFIX__twigil"  :subid("129_1279589170.0083") :method
 .annotate 'line', 4
     new $P513, "ResizablePMCArray"
     push $P513, "?"
@@ -6909,7 +6909,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator"  :subid("130_1279564397.22945") :method
+.sub "package_declarator"  :subid("130_1279589170.0083") :method
 .annotate 'line', 259
     $P516 = self."!protoregex"("package_declarator")
     .return ($P516)
@@ -6917,7 +6917,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator"  :subid("131_1279564397.22945") :method
+.sub "!PREFIX__package_declarator"  :subid("131_1279589170.0083") :method
 .annotate 'line', 259
     $P518 = self."!PREFIX__!protoregex"("package_declarator")
     .return ($P518)
@@ -6925,7 +6925,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<module>"  :subid("132_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "package_declarator:sym<module>"  :subid("132_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx520_tgt
     .local int rx520_pos
@@ -7008,7 +7008,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<module>"  :subid("133_1279564397.22945") :method
+.sub "!PREFIX__package_declarator:sym<module>"  :subid("133_1279589170.0083") :method
 .annotate 'line', 4
     $P522 = self."!PREFIX__!subrule"("package_def", "module")
     new $P523, "ResizablePMCArray"
@@ -7018,7 +7018,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<class>"  :subid("134_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "package_declarator:sym<class>"  :subid("134_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx527_tgt
     .local int rx527_pos
@@ -7114,7 +7114,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<class>"  :subid("135_1279564397.22945") :method
+.sub "!PREFIX__package_declarator:sym<class>"  :subid("135_1279589170.0083") :method
 .annotate 'line', 4
     $P529 = self."!PREFIX__!subrule"("package_def", "grammar")
     $P530 = self."!PREFIX__!subrule"("package_def", "class")
@@ -7126,7 +7126,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_def"  :subid("136_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "package_def"  :subid("136_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx536_tgt
     .local int rx536_pos
@@ -7335,7 +7335,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_def"  :subid("137_1279564397.22945") :method
+.sub "!PREFIX__package_def"  :subid("137_1279589170.0083") :method
 .annotate 'line', 4
     $P538 = self."!PREFIX__!subrule"("ws", "")
     new $P539, "ResizablePMCArray"
@@ -7345,7 +7345,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator"  :subid("138_1279564397.22945") :method
+.sub "scope_declarator"  :subid("138_1279589170.0083") :method
 .annotate 'line', 273
     $P559 = self."!protoregex"("scope_declarator")
     .return ($P559)
@@ -7353,7 +7353,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator"  :subid("139_1279564397.22945") :method
+.sub "!PREFIX__scope_declarator"  :subid("139_1279589170.0083") :method
 .annotate 'line', 273
     $P561 = self."!PREFIX__!protoregex"("scope_declarator")
     .return ($P561)
@@ -7361,7 +7361,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<my>"  :subid("140_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "scope_declarator:sym<my>"  :subid("140_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx563_tgt
     .local int rx563_pos
@@ -7444,7 +7444,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<my>"  :subid("141_1279564397.22945") :method
+.sub "!PREFIX__scope_declarator:sym<my>"  :subid("141_1279589170.0083") :method
 .annotate 'line', 4
     $P565 = self."!PREFIX__!subrule"("scoped", "my")
     new $P566, "ResizablePMCArray"
@@ -7454,7 +7454,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<our>"  :subid("142_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "scope_declarator:sym<our>"  :subid("142_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx570_tgt
     .local int rx570_pos
@@ -7537,7 +7537,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<our>"  :subid("143_1279564397.22945") :method
+.sub "!PREFIX__scope_declarator:sym<our>"  :subid("143_1279589170.0083") :method
 .annotate 'line', 4
     $P572 = self."!PREFIX__!subrule"("scoped", "our")
     new $P573, "ResizablePMCArray"
@@ -7547,7 +7547,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<has>"  :subid("144_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "scope_declarator:sym<has>"  :subid("144_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx577_tgt
     .local int rx577_pos
@@ -7630,7 +7630,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<has>"  :subid("145_1279564397.22945") :method
+.sub "!PREFIX__scope_declarator:sym<has>"  :subid("145_1279589170.0083") :method
 .annotate 'line', 4
     $P579 = self."!PREFIX__!subrule"("scoped", "has")
     new $P580, "ResizablePMCArray"
@@ -7640,7 +7640,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scoped"  :subid("146_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "scoped"  :subid("146_1279589170.0083") :method :outer("11_1279589170.0083")
     .param pmc param_584
 .annotate 'line', 278
     .lex "$*SCOPE", param_584
@@ -7741,7 +7741,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scoped"  :subid("147_1279564397.22945") :method
+.sub "!PREFIX__scoped"  :subid("147_1279589170.0083") :method
 .annotate 'line', 4
     $P587 = self."!PREFIX__!subrule"("ws", "")
     $P588 = self."!PREFIX__!subrule"("ws", "")
@@ -7753,7 +7753,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "typename"  :subid("148_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "typename"  :subid("148_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx597_tgt
     .local int rx597_pos
@@ -7815,7 +7815,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__typename"  :subid("149_1279564397.22945") :method
+.sub "!PREFIX__typename"  :subid("149_1279589170.0083") :method
 .annotate 'line', 4
     $P599 = self."!PREFIX__!subrule"("name", "")
     new $P600, "ResizablePMCArray"
@@ -7825,7 +7825,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "declarator"  :subid("150_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "declarator"  :subid("150_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx603_tgt
     .local int rx603_pos
@@ -7903,7 +7903,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__declarator"  :subid("151_1279564397.22945") :method
+.sub "!PREFIX__declarator"  :subid("151_1279589170.0083") :method
 .annotate 'line', 4
     $P605 = self."!PREFIX__!subrule"("routine_declarator", "")
     $P606 = self."!PREFIX__!subrule"("variable_declarator", "")
@@ -7915,7 +7915,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable_declarator"  :subid("152_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "variable_declarator"  :subid("152_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx611_tgt
     .local int rx611_pos
@@ -7977,7 +7977,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable_declarator"  :subid("153_1279564397.22945") :method
+.sub "!PREFIX__variable_declarator"  :subid("153_1279589170.0083") :method
 .annotate 'line', 4
     $P613 = self."!PREFIX__!subrule"("variable", "")
     new $P614, "ResizablePMCArray"
@@ -7987,7 +7987,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator"  :subid("154_1279564397.22945") :method
+.sub "routine_declarator"  :subid("154_1279589170.0083") :method
 .annotate 'line', 292
     $P617 = self."!protoregex"("routine_declarator")
     .return ($P617)
@@ -7995,7 +7995,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator"  :subid("155_1279564397.22945") :method
+.sub "!PREFIX__routine_declarator"  :subid("155_1279589170.0083") :method
 .annotate 'line', 292
     $P619 = self."!PREFIX__!protoregex"("routine_declarator")
     .return ($P619)
@@ -8003,7 +8003,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<sub>"  :subid("156_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "routine_declarator:sym<sub>"  :subid("156_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx621_tgt
     .local int rx621_pos
@@ -8086,7 +8086,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("157_1279564397.22945") :method
+.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("157_1279589170.0083") :method
 .annotate 'line', 4
     $P623 = self."!PREFIX__!subrule"("routine_def", "sub")
     new $P624, "ResizablePMCArray"
@@ -8096,7 +8096,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<method>"  :subid("158_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "routine_declarator:sym<method>"  :subid("158_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx628_tgt
     .local int rx628_pos
@@ -8179,7 +8179,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<method>"  :subid("159_1279564397.22945") :method
+.sub "!PREFIX__routine_declarator:sym<method>"  :subid("159_1279589170.0083") :method
 .annotate 'line', 4
     $P630 = self."!PREFIX__!subrule"("method_def", "method")
     new $P631, "ResizablePMCArray"
@@ -8189,7 +8189,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_def"  :subid("160_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "routine_def"  :subid("160_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx635_tgt
     .local int rx635_pos
@@ -8402,7 +8402,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_def"  :subid("161_1279564397.22945") :method
+.sub "!PREFIX__routine_def"  :subid("161_1279589170.0083") :method
 .annotate 'line', 4
     $P637 = self."!PREFIX__!subrule"("ws", "")
     new $P638, "ResizablePMCArray"
@@ -8412,7 +8412,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "method_def"  :subid("162_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "method_def"  :subid("162_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx658_tgt
     .local int rx658_pos
@@ -8593,7 +8593,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__method_def"  :subid("163_1279564397.22945") :method
+.sub "!PREFIX__method_def"  :subid("163_1279589170.0083") :method
 .annotate 'line', 4
     $P660 = self."!PREFIX__!subrule"("ws", "")
     new $P661, "ResizablePMCArray"
@@ -8603,7 +8603,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "multi_declarator"  :subid("164_1279564397.22945") :method
+.sub "multi_declarator"  :subid("164_1279589170.0083") :method
 .annotate 'line', 312
     $P678 = self."!protoregex"("multi_declarator")
     .return ($P678)
@@ -8611,7 +8611,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__multi_declarator"  :subid("165_1279564397.22945") :method
+.sub "!PREFIX__multi_declarator"  :subid("165_1279589170.0083") :method
 .annotate 'line', 312
     $P680 = self."!PREFIX__!protoregex"("multi_declarator")
     .return ($P680)
@@ -8619,7 +8619,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "multi_declarator:sym<multi>"  :subid("166_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "multi_declarator:sym<multi>"  :subid("166_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 314
     new $P682, "Undef"
     .lex "$*MULTINESS", $P682
@@ -8739,7 +8739,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__multi_declarator:sym<multi>"  :subid("167_1279564397.22945") :method
+.sub "!PREFIX__multi_declarator:sym<multi>"  :subid("167_1279589170.0083") :method
 .annotate 'line', 4
     $P685 = self."!PREFIX__!subrule"("ws", "multi")
     new $P686, "ResizablePMCArray"
@@ -8749,7 +8749,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "multi_declarator:sym<null>"  :subid("168_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "multi_declarator:sym<null>"  :subid("168_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 319
     new $P692, "Undef"
     .lex "$*MULTINESS", $P692
@@ -8820,7 +8820,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__multi_declarator:sym<null>"  :subid("169_1279564397.22945") :method
+.sub "!PREFIX__multi_declarator:sym<null>"  :subid("169_1279589170.0083") :method
 .annotate 'line', 4
     $P695 = self."!PREFIX__!subrule"("declarator", "")
     new $P696, "ResizablePMCArray"
@@ -8830,7 +8830,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "signature"  :subid("170_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "signature"  :subid("170_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx700_tgt
     .local int rx700_pos
@@ -8927,7 +8927,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__signature"  :subid("171_1279564397.22945") :method
+.sub "!PREFIX__signature"  :subid("171_1279589170.0083") :method
 .annotate 'line', 4
     new $P702, "ResizablePMCArray"
     push $P702, ""
@@ -8936,7 +8936,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "parameter"  :subid("172_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "parameter"  :subid("172_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx707_tgt
     .local int rx707_pos
@@ -8945,7 +8945,7 @@
     .local int rx707_rep
     .local pmc rx707_cur
     (rx707_cur, rx707_pos, rx707_tgt, $I10) = self."!cursor_start"()
-    rx707_cur."!cursor_caparray"("typename", "default_value")
+    rx707_cur."!cursor_caparray"("default_value", "typename")
     .lex unicode:"$\x{a2}", rx707_cur
     .local pmc match
     .lex "$/", match
@@ -9131,7 +9131,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__parameter"  :subid("173_1279564397.22945") :method
+.sub "!PREFIX__parameter"  :subid("173_1279589170.0083") :method
 .annotate 'line', 4
     new $P709, "ResizablePMCArray"
     push $P709, ""
@@ -9140,7 +9140,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "param_var"  :subid("174_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "param_var"  :subid("174_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx720_tgt
     .local int rx720_pos
@@ -9259,7 +9259,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__param_var"  :subid("175_1279564397.22945") :method
+.sub "!PREFIX__param_var"  :subid("175_1279589170.0083") :method
 .annotate 'line', 4
     $P722 = self."!PREFIX__!subrule"("sigil", "")
     new $P723, "ResizablePMCArray"
@@ -9269,7 +9269,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "named_param"  :subid("176_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "named_param"  :subid("176_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx730_tgt
     .local int rx730_pos
@@ -9339,7 +9339,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__named_param"  :subid("177_1279564397.22945") :method
+.sub "!PREFIX__named_param"  :subid("177_1279589170.0083") :method
 .annotate 'line', 4
     $P732 = self."!PREFIX__!subrule"("param_var", ":")
     new $P733, "ResizablePMCArray"
@@ -9349,7 +9349,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "default_value"  :subid("178_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "default_value"  :subid("178_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx736_tgt
     .local int rx736_pos
@@ -9433,7 +9433,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__default_value"  :subid("179_1279564397.22945") :method
+.sub "!PREFIX__default_value"  :subid("179_1279589170.0083") :method
 .annotate 'line', 4
     $P738 = self."!PREFIX__!subrule"("ws", "")
     new $P739, "ResizablePMCArray"
@@ -9443,7 +9443,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "regex_declarator"  :subid("180_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "regex_declarator"  :subid("180_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx745_tgt
     .local int rx745_pos
@@ -9849,7 +9849,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__regex_declarator"  :subid("181_1279564397.22945") :method
+.sub "!PREFIX__regex_declarator"  :subid("181_1279589170.0083") :method
 .annotate 'line', 4
     $P747 = self."!PREFIX__!subrule"("ws", "")
     new $P748, "ResizablePMCArray"
@@ -9859,7 +9859,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "dotty"  :subid("182_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "dotty"  :subid("182_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx782_tgt
     .local int rx782_pos
@@ -10020,7 +10020,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__dotty"  :subid("183_1279564397.22945") :method
+.sub "!PREFIX__dotty"  :subid("183_1279589170.0083") :method
 .annotate 'line', 4
     $P784 = self."!PREFIX__!subrule"("deflongname", ".")
     new $P785, "ResizablePMCArray"
@@ -10032,7 +10032,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term"  :subid("184_1279564397.22945") :method
+.sub "term"  :subid("184_1279589170.0083") :method
 .annotate 'line', 376
     $P792 = self."!protoregex"("term")
     .return ($P792)
@@ -10040,7 +10040,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term"  :subid("185_1279564397.22945") :method
+.sub "!PREFIX__term"  :subid("185_1279589170.0083") :method
 .annotate 'line', 376
     $P794 = self."!PREFIX__!protoregex"("term")
     .return ($P794)
@@ -10048,7 +10048,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<self>"  :subid("186_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<self>"  :subid("186_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx796_tgt
     .local int rx796_pos
@@ -10132,7 +10132,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<self>"  :subid("187_1279564397.22945") :method
+.sub "!PREFIX__term:sym<self>"  :subid("187_1279589170.0083") :method
 .annotate 'line', 4
     new $P798, "ResizablePMCArray"
     push $P798, "self"
@@ -10141,7 +10141,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<identifier>"  :subid("188_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<identifier>"  :subid("188_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx802_tgt
     .local int rx802_pos
@@ -10217,7 +10217,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<identifier>"  :subid("189_1279564397.22945") :method
+.sub "!PREFIX__term:sym<identifier>"  :subid("189_1279589170.0083") :method
 .annotate 'line', 4
     $P804 = self."!PREFIX__!subrule"("deflongname", "")
     new $P805, "ResizablePMCArray"
@@ -10227,7 +10227,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<name>"  :subid("190_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<name>"  :subid("190_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx808_tgt
     .local int rx808_pos
@@ -10311,7 +10311,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<name>"  :subid("191_1279564397.22945") :method
+.sub "!PREFIX__term:sym<name>"  :subid("191_1279589170.0083") :method
 .annotate 'line', 4
     $P810 = self."!PREFIX__!subrule"("name", "")
     new $P811, "ResizablePMCArray"
@@ -10321,7 +10321,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<pir::op>"  :subid("192_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<pir::op>"  :subid("192_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx816_tgt
     .local int rx816_pos
@@ -10425,7 +10425,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<pir::op>"  :subid("193_1279564397.22945") :method
+.sub "!PREFIX__term:sym<pir::op>"  :subid("193_1279589170.0083") :method
 .annotate 'line', 4
     new $P818, "ResizablePMCArray"
     push $P818, "pir::"
@@ -10434,7 +10434,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "args"  :subid("194_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "args"  :subid("194_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx824_tgt
     .local int rx824_pos
@@ -10510,7 +10510,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__args"  :subid("195_1279564397.22945") :method
+.sub "!PREFIX__args"  :subid("195_1279589170.0083") :method
 .annotate 'line', 4
     $P826 = self."!PREFIX__!subrule"("arglist", "(")
     new $P827, "ResizablePMCArray"
@@ -10520,7 +10520,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "arglist"  :subid("196_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "arglist"  :subid("196_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx830_tgt
     .local int rx830_pos
@@ -10596,7 +10596,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("197_1279564397.22945") :method
+.sub "!PREFIX__arglist"  :subid("197_1279589170.0083") :method
 .annotate 'line', 4
     $P832 = self."!PREFIX__!subrule"("ws", "")
     new $P833, "ResizablePMCArray"
@@ -10606,7 +10606,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<value>"  :subid("198_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<value>"  :subid("198_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx837_tgt
     .local int rx837_pos
@@ -10668,7 +10668,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<value>"  :subid("199_1279564397.22945") :method
+.sub "!PREFIX__term:sym<value>"  :subid("199_1279589170.0083") :method
 .annotate 'line', 4
     $P839 = self."!PREFIX__!subrule"("value", "")
     new $P840, "ResizablePMCArray"
@@ -10678,7 +10678,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "value"  :subid("200_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "value"  :subid("200_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx843_tgt
     .local int rx843_pos
@@ -10756,7 +10756,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__value"  :subid("201_1279564397.22945") :method
+.sub "!PREFIX__value"  :subid("201_1279589170.0083") :method
 .annotate 'line', 4
     $P845 = self."!PREFIX__!subrule"("number", "")
     $P846 = self."!PREFIX__!subrule"("quote", "")
@@ -10768,7 +10768,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "number"  :subid("202_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "number"  :subid("202_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx851_tgt
     .local int rx851_pos
@@ -10873,7 +10873,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__number"  :subid("203_1279564397.22945") :method
+.sub "!PREFIX__number"  :subid("203_1279589170.0083") :method
 .annotate 'line', 4
     new $P853, "ResizablePMCArray"
     push $P853, ""
@@ -10882,7 +10882,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote"  :subid("204_1279564397.22945") :method
+.sub "quote"  :subid("204_1279589170.0083") :method
 .annotate 'line', 417
     $P859 = self."!protoregex"("quote")
     .return ($P859)
@@ -10890,7 +10890,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote"  :subid("205_1279564397.22945") :method
+.sub "!PREFIX__quote"  :subid("205_1279589170.0083") :method
 .annotate 'line', 417
     $P861 = self."!PREFIX__!protoregex"("quote")
     .return ($P861)
@@ -10898,7 +10898,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<apos>"  :subid("206_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "quote:sym<apos>"  :subid("206_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx863_tgt
     .local int rx863_pos
@@ -10966,7 +10966,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<apos>"  :subid("207_1279564397.22945") :method
+.sub "!PREFIX__quote:sym<apos>"  :subid("207_1279589170.0083") :method
 .annotate 'line', 4
     new $P865, "ResizablePMCArray"
     push $P865, "'"
@@ -10975,7 +10975,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<dblq>"  :subid("208_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "quote:sym<dblq>"  :subid("208_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx868_tgt
     .local int rx868_pos
@@ -11043,7 +11043,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<dblq>"  :subid("209_1279564397.22945") :method
+.sub "!PREFIX__quote:sym<dblq>"  :subid("209_1279589170.0083") :method
 .annotate 'line', 4
     new $P870, "ResizablePMCArray"
     push $P870, "\""
@@ -11052,7 +11052,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<q>"  :subid("210_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "quote:sym<q>"  :subid("210_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx873_tgt
     .local int rx873_pos
@@ -11140,7 +11140,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<q>"  :subid("211_1279564397.22945") :method
+.sub "!PREFIX__quote:sym<q>"  :subid("211_1279589170.0083") :method
 .annotate 'line', 4
     $P875 = self."!PREFIX__!subrule"("ws", "q")
     new $P876, "ResizablePMCArray"
@@ -11150,7 +11150,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<qq>"  :subid("212_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "quote:sym<qq>"  :subid("212_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx879_tgt
     .local int rx879_pos
@@ -11238,7 +11238,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<qq>"  :subid("213_1279564397.22945") :method
+.sub "!PREFIX__quote:sym<qq>"  :subid("213_1279589170.0083") :method
 .annotate 'line', 4
     $P881 = self."!PREFIX__!subrule"("ws", "qq")
     new $P882, "ResizablePMCArray"
@@ -11248,7 +11248,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q>"  :subid("214_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "quote:sym<Q>"  :subid("214_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx885_tgt
     .local int rx885_pos
@@ -11336,7 +11336,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q>"  :subid("215_1279564397.22945") :method
+.sub "!PREFIX__quote:sym<Q>"  :subid("215_1279589170.0083") :method
 .annotate 'line', 4
     $P887 = self."!PREFIX__!subrule"("ws", "Q")
     new $P888, "ResizablePMCArray"
@@ -11346,7 +11346,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q:PIR>"  :subid("216_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "quote:sym<Q:PIR>"  :subid("216_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx891_tgt
     .local int rx891_pos
@@ -11420,7 +11420,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("217_1279564397.22945") :method
+.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("217_1279589170.0083") :method
 .annotate 'line', 4
     $P893 = self."!PREFIX__!subrule"("ws", "Q:PIR")
     new $P894, "ResizablePMCArray"
@@ -11430,7 +11430,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym</ />"  :subid("218_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "quote:sym</ />"  :subid("218_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx897_tgt
     .local int rx897_pos
@@ -11519,7 +11519,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym</ />"  :subid("219_1279564397.22945") :method
+.sub "!PREFIX__quote:sym</ />"  :subid("219_1279589170.0083") :method
 .annotate 'line', 4
     $P899 = self."!PREFIX__!subrule"("newpad", "/")
     new $P900, "ResizablePMCArray"
@@ -11529,7 +11529,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<$>"  :subid("220_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "quote_escape:sym<$>"  :subid("220_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx903_tgt
     .local int rx903_pos
@@ -11601,7 +11601,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<$>"  :subid("221_1279564397.22945") :method
+.sub "!PREFIX__quote_escape:sym<$>"  :subid("221_1279589170.0083") :method
 .annotate 'line', 4
     new $P905, "ResizablePMCArray"
     push $P905, "$"
@@ -11610,7 +11610,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<{ }>"  :subid("222_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "quote_escape:sym<{ }>"  :subid("222_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx908_tgt
     .local int rx908_pos
@@ -11682,7 +11682,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("223_1279564397.22945") :method
+.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("223_1279589170.0083") :method
 .annotate 'line', 4
     new $P910, "ResizablePMCArray"
     push $P910, "{"
@@ -11691,7 +11691,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<esc>"  :subid("224_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "quote_escape:sym<esc>"  :subid("224_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx913_tgt
     .local int rx913_pos
@@ -11757,7 +11757,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<esc>"  :subid("225_1279564397.22945") :method
+.sub "!PREFIX__quote_escape:sym<esc>"  :subid("225_1279589170.0083") :method
 .annotate 'line', 4
     new $P915, "ResizablePMCArray"
     push $P915, "\\e"
@@ -11766,7 +11766,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<( )>"  :subid("226_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "circumfix:sym<( )>"  :subid("226_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx918_tgt
     .local int rx918_pos
@@ -11861,7 +11861,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<( )>"  :subid("227_1279564397.22945") :method
+.sub "!PREFIX__circumfix:sym<( )>"  :subid("227_1279589170.0083") :method
 .annotate 'line', 4
     $P920 = self."!PREFIX__!subrule"("ws", "(")
     new $P921, "ResizablePMCArray"
@@ -11871,7 +11871,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<[ ]>"  :subid("228_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "circumfix:sym<[ ]>"  :subid("228_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx926_tgt
     .local int rx926_pos
@@ -11966,7 +11966,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("229_1279564397.22945") :method
+.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("229_1279589170.0083") :method
 .annotate 'line', 4
     $P928 = self."!PREFIX__!subrule"("ws", "[")
     new $P929, "ResizablePMCArray"
@@ -11976,7 +11976,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<ang>"  :subid("230_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "circumfix:sym<ang>"  :subid("230_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx934_tgt
     .local int rx934_pos
@@ -12044,7 +12044,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<ang>"  :subid("231_1279564397.22945") :method
+.sub "!PREFIX__circumfix:sym<ang>"  :subid("231_1279589170.0083") :method
 .annotate 'line', 4
     new $P936, "ResizablePMCArray"
     push $P936, "<"
@@ -12053,7 +12053,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("232_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("232_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx939_tgt
     .local int rx939_pos
@@ -12121,7 +12121,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>"  :subid("233_1279564397.22945") :method
+.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>"  :subid("233_1279589170.0083") :method
 .annotate 'line', 4
     new $P941, "ResizablePMCArray"
     push $P941, unicode:"\x{ab}"
@@ -12130,7 +12130,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<{ }>"  :subid("234_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "circumfix:sym<{ }>"  :subid("234_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx944_tgt
     .local int rx944_pos
@@ -12198,7 +12198,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<{ }>"  :subid("235_1279564397.22945") :method
+.sub "!PREFIX__circumfix:sym<{ }>"  :subid("235_1279589170.0083") :method
 .annotate 'line', 4
     new $P946, "ResizablePMCArray"
     push $P946, "{"
@@ -12207,7 +12207,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<sigil>"  :subid("236_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "circumfix:sym<sigil>"  :subid("236_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx949_tgt
     .local int rx949_pos
@@ -12308,7 +12308,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<sigil>"  :subid("237_1279564397.22945") :method
+.sub "!PREFIX__circumfix:sym<sigil>"  :subid("237_1279589170.0083") :method
 .annotate 'line', 4
     $P951 = self."!PREFIX__!subrule"("sigil", "")
     new $P952, "ResizablePMCArray"
@@ -12318,7 +12318,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "semilist"  :subid("238_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "semilist"  :subid("238_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 4
     .local string rx958_tgt
     .local int rx958_pos
@@ -12390,7 +12390,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__semilist"  :subid("239_1279564397.22945") :method
+.sub "!PREFIX__semilist"  :subid("239_1279589170.0083") :method
 .annotate 'line', 4
     $P960 = self."!PREFIX__!subrule"("ws", "")
     new $P961, "ResizablePMCArray"
@@ -12400,7 +12400,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixish"  :subid("240_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infixish"  :subid("240_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx966_tgt
     .local int rx966_pos
@@ -12466,7 +12466,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("241_1279564397.22945") :method
+.sub "!PREFIX__infixish"  :subid("241_1279589170.0083") :method
 .annotate 'line', 447
     new $P968, "ResizablePMCArray"
     push $P968, ""
@@ -12475,7 +12475,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixstopper"  :subid("242_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infixstopper"  :subid("242_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx971_tgt
     .local int rx971_pos
@@ -12534,7 +12534,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixstopper"  :subid("243_1279564397.22945") :method
+.sub "!PREFIX__infixstopper"  :subid("243_1279589170.0083") :method
 .annotate 'line', 447
     new $P973, "ResizablePMCArray"
     push $P973, ""
@@ -12543,7 +12543,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<[ ]>"  :subid("244_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "postcircumfix:sym<[ ]>"  :subid("244_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx976_tgt
     .local int rx976_pos
@@ -12633,7 +12633,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("245_1279564397.22945") :method
+.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("245_1279589170.0083") :method
 .annotate 'line', 447
     $P978 = self."!PREFIX__!subrule"("ws", "[")
     new $P979, "ResizablePMCArray"
@@ -12643,7 +12643,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<{ }>"  :subid("246_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "postcircumfix:sym<{ }>"  :subid("246_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx982_tgt
     .local int rx982_pos
@@ -12733,7 +12733,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("247_1279564397.22945") :method
+.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("247_1279589170.0083") :method
 .annotate 'line', 447
     $P984 = self."!PREFIX__!subrule"("ws", "{")
     new $P985, "ResizablePMCArray"
@@ -12743,7 +12743,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<ang>"  :subid("248_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "postcircumfix:sym<ang>"  :subid("248_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx988_tgt
     .local int rx988_pos
@@ -12820,7 +12820,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("249_1279564397.22945") :method
+.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("249_1279589170.0083") :method
 .annotate 'line', 447
     new $P990, "ResizablePMCArray"
     push $P990, "<"
@@ -12829,7 +12829,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<( )>"  :subid("250_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "postcircumfix:sym<( )>"  :subid("250_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx993_tgt
     .local int rx993_pos
@@ -12919,7 +12919,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("251_1279564397.22945") :method
+.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("251_1279589170.0083") :method
 .annotate 'line', 447
     $P995 = self."!PREFIX__!subrule"("ws", "(")
     new $P996, "ResizablePMCArray"
@@ -12929,7 +12929,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<.>"  :subid("252_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "postfix:sym<.>"  :subid("252_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx999_tgt
     .local int rx999_pos
@@ -12998,7 +12998,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<.>"  :subid("253_1279564397.22945") :method
+.sub "!PREFIX__postfix:sym<.>"  :subid("253_1279589170.0083") :method
 .annotate 'line', 447
     $P1001 = self."!PREFIX__!subrule"("dotty", "")
     new $P1002, "ResizablePMCArray"
@@ -13008,7 +13008,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<++>"  :subid("254_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "prefix:sym<++>"  :subid("254_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1005_tgt
     .local int rx1005_pos
@@ -13091,7 +13091,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<++>"  :subid("255_1279564397.22945") :method
+.sub "!PREFIX__prefix:sym<++>"  :subid("255_1279589170.0083") :method
 .annotate 'line', 447
     $P1007 = self."!PREFIX__!subrule"("O", "++")
     new $P1008, "ResizablePMCArray"
@@ -13101,7 +13101,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<-->"  :subid("256_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "prefix:sym<-->"  :subid("256_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1012_tgt
     .local int rx1012_pos
@@ -13184,7 +13184,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<-->"  :subid("257_1279564397.22945") :method
+.sub "!PREFIX__prefix:sym<-->"  :subid("257_1279589170.0083") :method
 .annotate 'line', 447
     $P1014 = self."!PREFIX__!subrule"("O", "--")
     new $P1015, "ResizablePMCArray"
@@ -13194,7 +13194,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<++>"  :subid("258_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "postfix:sym<++>"  :subid("258_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1019_tgt
     .local int rx1019_pos
@@ -13277,7 +13277,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<++>"  :subid("259_1279564397.22945") :method
+.sub "!PREFIX__postfix:sym<++>"  :subid("259_1279589170.0083") :method
 .annotate 'line', 447
     $P1021 = self."!PREFIX__!subrule"("O", "++")
     new $P1022, "ResizablePMCArray"
@@ -13287,7 +13287,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<-->"  :subid("260_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "postfix:sym<-->"  :subid("260_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1026_tgt
     .local int rx1026_pos
@@ -13370,7 +13370,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<-->"  :subid("261_1279564397.22945") :method
+.sub "!PREFIX__postfix:sym<-->"  :subid("261_1279589170.0083") :method
 .annotate 'line', 447
     $P1028 = self."!PREFIX__!subrule"("O", "--")
     new $P1029, "ResizablePMCArray"
@@ -13380,7 +13380,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<**>"  :subid("262_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<**>"  :subid("262_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1033_tgt
     .local int rx1033_pos
@@ -13463,7 +13463,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<**>"  :subid("263_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<**>"  :subid("263_1279589170.0083") :method
 .annotate 'line', 447
     $P1035 = self."!PREFIX__!subrule"("O", "**")
     new $P1036, "ResizablePMCArray"
@@ -13473,7 +13473,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<+>"  :subid("264_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "prefix:sym<+>"  :subid("264_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1040_tgt
     .local int rx1040_pos
@@ -13556,7 +13556,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<+>"  :subid("265_1279564397.22945") :method
+.sub "!PREFIX__prefix:sym<+>"  :subid("265_1279589170.0083") :method
 .annotate 'line', 447
     $P1042 = self."!PREFIX__!subrule"("O", "+")
     new $P1043, "ResizablePMCArray"
@@ -13566,7 +13566,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<~>"  :subid("266_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "prefix:sym<~>"  :subid("266_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1047_tgt
     .local int rx1047_pos
@@ -13649,7 +13649,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<~>"  :subid("267_1279564397.22945") :method
+.sub "!PREFIX__prefix:sym<~>"  :subid("267_1279589170.0083") :method
 .annotate 'line', 447
     $P1049 = self."!PREFIX__!subrule"("O", "~")
     new $P1050, "ResizablePMCArray"
@@ -13659,7 +13659,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<->"  :subid("268_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "prefix:sym<->"  :subid("268_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1054_tgt
     .local int rx1054_pos
@@ -13752,7 +13752,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<->"  :subid("269_1279564397.22945") :method
+.sub "!PREFIX__prefix:sym<->"  :subid("269_1279589170.0083") :method
 .annotate 'line', 447
     new $P1056, "ResizablePMCArray"
     push $P1056, "-"
@@ -13761,7 +13761,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<?>"  :subid("270_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "prefix:sym<?>"  :subid("270_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1060_tgt
     .local int rx1060_pos
@@ -13844,7 +13844,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<?>"  :subid("271_1279564397.22945") :method
+.sub "!PREFIX__prefix:sym<?>"  :subid("271_1279589170.0083") :method
 .annotate 'line', 447
     $P1062 = self."!PREFIX__!subrule"("O", "?")
     new $P1063, "ResizablePMCArray"
@@ -13854,7 +13854,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<!>"  :subid("272_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "prefix:sym<!>"  :subid("272_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1067_tgt
     .local int rx1067_pos
@@ -13937,7 +13937,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<!>"  :subid("273_1279564397.22945") :method
+.sub "!PREFIX__prefix:sym<!>"  :subid("273_1279589170.0083") :method
 .annotate 'line', 447
     $P1069 = self."!PREFIX__!subrule"("O", "!")
     new $P1070, "ResizablePMCArray"
@@ -13947,7 +13947,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<|>"  :subid("274_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "prefix:sym<|>"  :subid("274_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1074_tgt
     .local int rx1074_pos
@@ -14030,7 +14030,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<|>"  :subid("275_1279564397.22945") :method
+.sub "!PREFIX__prefix:sym<|>"  :subid("275_1279589170.0083") :method
 .annotate 'line', 447
     $P1076 = self."!PREFIX__!subrule"("O", "|")
     new $P1077, "ResizablePMCArray"
@@ -14040,7 +14040,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<*>"  :subid("276_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<*>"  :subid("276_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1081_tgt
     .local int rx1081_pos
@@ -14123,7 +14123,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<*>"  :subid("277_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<*>"  :subid("277_1279589170.0083") :method
 .annotate 'line', 447
     $P1083 = self."!PREFIX__!subrule"("O", "*")
     new $P1084, "ResizablePMCArray"
@@ -14133,7 +14133,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym</>"  :subid("278_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym</>"  :subid("278_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1088_tgt
     .local int rx1088_pos
@@ -14216,7 +14216,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym</>"  :subid("279_1279564397.22945") :method
+.sub "!PREFIX__infix:sym</>"  :subid("279_1279589170.0083") :method
 .annotate 'line', 447
     $P1090 = self."!PREFIX__!subrule"("O", "/")
     new $P1091, "ResizablePMCArray"
@@ -14226,7 +14226,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<%>"  :subid("280_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<%>"  :subid("280_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1095_tgt
     .local int rx1095_pos
@@ -14309,7 +14309,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<%>"  :subid("281_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<%>"  :subid("281_1279589170.0083") :method
 .annotate 'line', 447
     $P1097 = self."!PREFIX__!subrule"("O", "%")
     new $P1098, "ResizablePMCArray"
@@ -14319,7 +14319,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<+&>"  :subid("282_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<+&>"  :subid("282_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1102_tgt
     .local int rx1102_pos
@@ -14402,7 +14402,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<+&>"  :subid("283_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<+&>"  :subid("283_1279589170.0083") :method
 .annotate 'line', 447
     $P1104 = self."!PREFIX__!subrule"("O", "+&")
     new $P1105, "ResizablePMCArray"
@@ -14412,7 +14412,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<+>"  :subid("284_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<+>"  :subid("284_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1109_tgt
     .local int rx1109_pos
@@ -14495,7 +14495,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<+>"  :subid("285_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<+>"  :subid("285_1279589170.0083") :method
 .annotate 'line', 447
     $P1111 = self."!PREFIX__!subrule"("O", "+")
     new $P1112, "ResizablePMCArray"
@@ -14505,7 +14505,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<->"  :subid("286_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<->"  :subid("286_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1116_tgt
     .local int rx1116_pos
@@ -14588,7 +14588,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<->"  :subid("287_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<->"  :subid("287_1279589170.0083") :method
 .annotate 'line', 447
     $P1118 = self."!PREFIX__!subrule"("O", "-")
     new $P1119, "ResizablePMCArray"
@@ -14598,7 +14598,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<+|>"  :subid("288_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<+|>"  :subid("288_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1123_tgt
     .local int rx1123_pos
@@ -14681,7 +14681,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<+|>"  :subid("289_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<+|>"  :subid("289_1279589170.0083") :method
 .annotate 'line', 447
     $P1125 = self."!PREFIX__!subrule"("O", "+|")
     new $P1126, "ResizablePMCArray"
@@ -14691,7 +14691,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<+^>"  :subid("290_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<+^>"  :subid("290_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1130_tgt
     .local int rx1130_pos
@@ -14774,7 +14774,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<+^>"  :subid("291_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<+^>"  :subid("291_1279589170.0083") :method
 .annotate 'line', 447
     $P1132 = self."!PREFIX__!subrule"("O", "+^")
     new $P1133, "ResizablePMCArray"
@@ -14784,7 +14784,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~>"  :subid("292_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<~>"  :subid("292_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1137_tgt
     .local int rx1137_pos
@@ -14867,7 +14867,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~>"  :subid("293_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<~>"  :subid("293_1279589170.0083") :method
 .annotate 'line', 447
     $P1139 = self."!PREFIX__!subrule"("O", "~")
     new $P1140, "ResizablePMCArray"
@@ -14877,7 +14877,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<==>"  :subid("294_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<==>"  :subid("294_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1144_tgt
     .local int rx1144_pos
@@ -14960,7 +14960,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<==>"  :subid("295_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<==>"  :subid("295_1279589170.0083") :method
 .annotate 'line', 447
     $P1146 = self."!PREFIX__!subrule"("O", "==")
     new $P1147, "ResizablePMCArray"
@@ -14970,7 +14970,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<!=>"  :subid("296_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<!=>"  :subid("296_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1151_tgt
     .local int rx1151_pos
@@ -15053,7 +15053,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<!=>"  :subid("297_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<!=>"  :subid("297_1279589170.0083") :method
 .annotate 'line', 447
     $P1153 = self."!PREFIX__!subrule"("O", "!=")
     new $P1154, "ResizablePMCArray"
@@ -15063,7 +15063,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<=>"  :subid("298_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<<=>"  :subid("298_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1158_tgt
     .local int rx1158_pos
@@ -15146,7 +15146,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<=>"  :subid("299_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<<=>"  :subid("299_1279589170.0083") :method
 .annotate 'line', 447
     $P1160 = self."!PREFIX__!subrule"("O", "<=")
     new $P1161, "ResizablePMCArray"
@@ -15156,7 +15156,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>=>"  :subid("300_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<>=>"  :subid("300_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1165_tgt
     .local int rx1165_pos
@@ -15239,7 +15239,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>=>"  :subid("301_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<>=>"  :subid("301_1279589170.0083") :method
 .annotate 'line', 447
     $P1167 = self."!PREFIX__!subrule"("O", ">=")
     new $P1168, "ResizablePMCArray"
@@ -15249,7 +15249,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<>"  :subid("302_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<<>"  :subid("302_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1172_tgt
     .local int rx1172_pos
@@ -15332,7 +15332,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<>"  :subid("303_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<<>"  :subid("303_1279589170.0083") :method
 .annotate 'line', 447
     $P1174 = self."!PREFIX__!subrule"("O", "<")
     new $P1175, "ResizablePMCArray"
@@ -15342,7 +15342,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>>"  :subid("304_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<>>"  :subid("304_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1179_tgt
     .local int rx1179_pos
@@ -15425,7 +15425,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>>"  :subid("305_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<>>"  :subid("305_1279589170.0083") :method
 .annotate 'line', 447
     $P1181 = self."!PREFIX__!subrule"("O", ">")
     new $P1182, "ResizablePMCArray"
@@ -15435,7 +15435,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<eq>"  :subid("306_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<eq>"  :subid("306_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1186_tgt
     .local int rx1186_pos
@@ -15518,7 +15518,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<eq>"  :subid("307_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<eq>"  :subid("307_1279589170.0083") :method
 .annotate 'line', 447
     $P1188 = self."!PREFIX__!subrule"("O", "eq")
     new $P1189, "ResizablePMCArray"
@@ -15528,7 +15528,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ne>"  :subid("308_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<ne>"  :subid("308_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1193_tgt
     .local int rx1193_pos
@@ -15611,7 +15611,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ne>"  :subid("309_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<ne>"  :subid("309_1279589170.0083") :method
 .annotate 'line', 447
     $P1195 = self."!PREFIX__!subrule"("O", "ne")
     new $P1196, "ResizablePMCArray"
@@ -15621,7 +15621,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<le>"  :subid("310_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<le>"  :subid("310_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1200_tgt
     .local int rx1200_pos
@@ -15704,7 +15704,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<le>"  :subid("311_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<le>"  :subid("311_1279589170.0083") :method
 .annotate 'line', 447
     $P1202 = self."!PREFIX__!subrule"("O", "le")
     new $P1203, "ResizablePMCArray"
@@ -15714,7 +15714,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ge>"  :subid("312_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<ge>"  :subid("312_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1207_tgt
     .local int rx1207_pos
@@ -15797,7 +15797,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ge>"  :subid("313_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<ge>"  :subid("313_1279589170.0083") :method
 .annotate 'line', 447
     $P1209 = self."!PREFIX__!subrule"("O", "ge")
     new $P1210, "ResizablePMCArray"
@@ -15807,7 +15807,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<lt>"  :subid("314_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<lt>"  :subid("314_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1214_tgt
     .local int rx1214_pos
@@ -15890,7 +15890,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<lt>"  :subid("315_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<lt>"  :subid("315_1279589170.0083") :method
 .annotate 'line', 447
     $P1216 = self."!PREFIX__!subrule"("O", "lt")
     new $P1217, "ResizablePMCArray"
@@ -15900,7 +15900,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<gt>"  :subid("316_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<gt>"  :subid("316_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1221_tgt
     .local int rx1221_pos
@@ -15983,7 +15983,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<gt>"  :subid("317_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<gt>"  :subid("317_1279589170.0083") :method
 .annotate 'line', 447
     $P1223 = self."!PREFIX__!subrule"("O", "gt")
     new $P1224, "ResizablePMCArray"
@@ -15993,7 +15993,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=:=>"  :subid("318_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<=:=>"  :subid("318_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1228_tgt
     .local int rx1228_pos
@@ -16076,7 +16076,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=:=>"  :subid("319_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<=:=>"  :subid("319_1279589170.0083") :method
 .annotate 'line', 447
     $P1230 = self."!PREFIX__!subrule"("O", "=:=")
     new $P1231, "ResizablePMCArray"
@@ -16086,7 +16086,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~~>"  :subid("320_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<~~>"  :subid("320_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1235_tgt
     .local int rx1235_pos
@@ -16169,7 +16169,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~~>"  :subid("321_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<~~>"  :subid("321_1279589170.0083") :method
 .annotate 'line', 447
     $P1237 = self."!PREFIX__!subrule"("O", "~~")
     new $P1238, "ResizablePMCArray"
@@ -16179,7 +16179,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<&&>"  :subid("322_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<&&>"  :subid("322_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1242_tgt
     .local int rx1242_pos
@@ -16262,7 +16262,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<&&>"  :subid("323_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<&&>"  :subid("323_1279589170.0083") :method
 .annotate 'line', 447
     $P1244 = self."!PREFIX__!subrule"("O", "&&")
     new $P1245, "ResizablePMCArray"
@@ -16272,7 +16272,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<||>"  :subid("324_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<||>"  :subid("324_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1249_tgt
     .local int rx1249_pos
@@ -16355,7 +16355,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<||>"  :subid("325_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<||>"  :subid("325_1279589170.0083") :method
 .annotate 'line', 447
     $P1251 = self."!PREFIX__!subrule"("O", "||")
     new $P1252, "ResizablePMCArray"
@@ -16365,7 +16365,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<//>"  :subid("326_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<//>"  :subid("326_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1256_tgt
     .local int rx1256_pos
@@ -16448,7 +16448,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<//>"  :subid("327_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<//>"  :subid("327_1279589170.0083") :method
 .annotate 'line', 447
     $P1258 = self."!PREFIX__!subrule"("O", "//")
     new $P1259, "ResizablePMCArray"
@@ -16458,7 +16458,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<?? !!>"  :subid("328_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<?? !!>"  :subid("328_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1263_tgt
     .local int rx1263_pos
@@ -16551,7 +16551,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<?? !!>"  :subid("329_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<?? !!>"  :subid("329_1279589170.0083") :method
 .annotate 'line', 447
     $P1265 = self."!PREFIX__!subrule"("ws", "??")
     new $P1266, "ResizablePMCArray"
@@ -16561,7 +16561,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=>"  :subid("330_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<=>"  :subid("330_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1269_tgt
     .local int rx1269_pos
@@ -16643,7 +16643,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=>"  :subid("331_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<=>"  :subid("331_1279589170.0083") :method
 .annotate 'line', 447
     $P1271 = self."!PREFIX__!subrule"("panic", "=")
     new $P1272, "ResizablePMCArray"
@@ -16653,7 +16653,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<:=>"  :subid("332_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<:=>"  :subid("332_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1276_tgt
     .local int rx1276_pos
@@ -16736,7 +16736,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<:=>"  :subid("333_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<:=>"  :subid("333_1279589170.0083") :method
 .annotate 'line', 447
     $P1278 = self."!PREFIX__!subrule"("O", ":=")
     new $P1279, "ResizablePMCArray"
@@ -16746,7 +16746,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<::=>"  :subid("334_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<::=>"  :subid("334_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1283_tgt
     .local int rx1283_pos
@@ -16829,7 +16829,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<::=>"  :subid("335_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<::=>"  :subid("335_1279589170.0083") :method
 .annotate 'line', 447
     $P1285 = self."!PREFIX__!subrule"("O", "::=")
     new $P1286, "ResizablePMCArray"
@@ -16839,7 +16839,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<,>"  :subid("336_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "infix:sym<,>"  :subid("336_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1290_tgt
     .local int rx1290_pos
@@ -16922,7 +16922,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<,>"  :subid("337_1279564397.22945") :method
+.sub "!PREFIX__infix:sym<,>"  :subid("337_1279589170.0083") :method
 .annotate 'line', 447
     $P1292 = self."!PREFIX__!subrule"("O", ",")
     new $P1293, "ResizablePMCArray"
@@ -16932,7 +16932,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<return>"  :subid("338_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "prefix:sym<return>"  :subid("338_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1297_tgt
     .local int rx1297_pos
@@ -17021,7 +17021,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<return>"  :subid("339_1279564397.22945") :method
+.sub "!PREFIX__prefix:sym<return>"  :subid("339_1279589170.0083") :method
 .annotate 'line', 447
     new $P1299, "ResizablePMCArray"
     push $P1299, "return"
@@ -17030,7 +17030,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<make>"  :subid("340_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "prefix:sym<make>"  :subid("340_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1303_tgt
     .local int rx1303_pos
@@ -17119,7 +17119,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<make>"  :subid("341_1279564397.22945") :method
+.sub "!PREFIX__prefix:sym<make>"  :subid("341_1279589170.0083") :method
 .annotate 'line', 447
     new $P1305, "ResizablePMCArray"
     push $P1305, "make"
@@ -17128,7 +17128,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<last>"  :subid("342_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<last>"  :subid("342_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1309_tgt
     .local int rx1309_pos
@@ -17204,7 +17204,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<last>"  :subid("343_1279564397.22945") :method
+.sub "!PREFIX__term:sym<last>"  :subid("343_1279589170.0083") :method
 .annotate 'line', 447
     new $P1311, "ResizablePMCArray"
     push $P1311, "last"
@@ -17213,7 +17213,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<next>"  :subid("344_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<next>"  :subid("344_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1315_tgt
     .local int rx1315_pos
@@ -17289,7 +17289,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<next>"  :subid("345_1279564397.22945") :method
+.sub "!PREFIX__term:sym<next>"  :subid("345_1279589170.0083") :method
 .annotate 'line', 447
     new $P1317, "ResizablePMCArray"
     push $P1317, "next"
@@ -17298,7 +17298,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<redo>"  :subid("346_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "term:sym<redo>"  :subid("346_1279589170.0083") :method :outer("11_1279589170.0083")
 .annotate 'line', 447
     .local string rx1321_tgt
     .local int rx1321_pos
@@ -17374,7 +17374,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<redo>"  :subid("347_1279564397.22945") :method
+.sub "!PREFIX__term:sym<redo>"  :subid("347_1279589170.0083") :method
 .annotate 'line', 447
     new $P1323, "ResizablePMCArray"
     push $P1323, "redo"
@@ -17384,7 +17384,7 @@
 
 .namespace ["NQP";"Grammar"]
 .include "except_types.pasm"
-.sub "smartmatch"  :subid("348_1279564397.22945") :method :outer("11_1279564397.22945")
+.sub "smartmatch"  :subid("348_1279589170.0083") :method :outer("11_1279589170.0083")
     .param pmc param_1329
 .annotate 'line', 561
     new $P1328, 'ExceptionHandler'
@@ -17437,34 +17437,34 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1339"  :subid("349_1279564397.22945") :outer("11_1279564397.22945")
+.sub "_block1339"  :subid("349_1279589170.0083") :outer("11_1279589170.0083")
 .annotate 'line', 567
-    .const 'Sub' $P1396 = "368_1279564397.22945" 
+    .const 'Sub' $P1396 = "368_1279589170.0083" 
     capture_lex $P1396
-    .const 'Sub' $P1391 = "366_1279564397.22945" 
+    .const 'Sub' $P1391 = "366_1279589170.0083" 
     capture_lex $P1391
-    .const 'Sub' $P1379 = "363_1279564397.22945" 
+    .const 'Sub' $P1379 = "363_1279589170.0083" 
     capture_lex $P1379
-    .const 'Sub' $P1369 = "360_1279564397.22945" 
+    .const 'Sub' $P1369 = "360_1279589170.0083" 
     capture_lex $P1369
-    .const 'Sub' $P1364 = "358_1279564397.22945" 
+    .const 'Sub' $P1364 = "358_1279589170.0083" 
     capture_lex $P1364
-    .const 'Sub' $P1355 = "355_1279564397.22945" 
+    .const 'Sub' $P1355 = "355_1279589170.0083" 
     capture_lex $P1355
-    .const 'Sub' $P1350 = "353_1279564397.22945" 
+    .const 'Sub' $P1350 = "353_1279589170.0083" 
     capture_lex $P1350
-    .const 'Sub' $P1341 = "350_1279564397.22945" 
+    .const 'Sub' $P1341 = "350_1279589170.0083" 
     capture_lex $P1341
-    .const 'Sub' $P1396 = "368_1279564397.22945" 
+    .const 'Sub' $P1396 = "368_1279589170.0083" 
     capture_lex $P1396
     .return ($P1396)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<:my>"  :subid("350_1279564397.22945") :method :outer("349_1279564397.22945")
+.sub "metachar:sym<:my>"  :subid("350_1279589170.0083") :method :outer("349_1279589170.0083")
 .annotate 'line', 567
-    .const 'Sub' $P1347 = "352_1279564397.22945" 
+    .const 'Sub' $P1347 = "352_1279589170.0083" 
     capture_lex $P1347
     .local string rx1342_tgt
     .local int rx1342_pos
@@ -17507,7 +17507,7 @@
     add rx1342_pos, 1
   # rx subrule "before" subtype=zerowidth negate=
     rx1342_cur."!cursor_pos"(rx1342_pos)
-    .const 'Sub' $P1347 = "352_1279564397.22945" 
+    .const 'Sub' $P1347 = "352_1279589170.0083" 
     capture_lex $P1347
     $P10 = rx1342_cur."before"($P1347)
     unless $P10, rx1342_fail
@@ -17552,7 +17552,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<:my>"  :subid("351_1279564397.22945") :method
+.sub "!PREFIX__metachar:sym<:my>"  :subid("351_1279589170.0083") :method
 .annotate 'line', 567
     new $P1344, "ResizablePMCArray"
     push $P1344, ":"
@@ -17561,7 +17561,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1346"  :anon :subid("352_1279564397.22945") :method :outer("350_1279564397.22945")
+.sub "_block1346"  :anon :subid("352_1279589170.0083") :method :outer("350_1279589170.0083")
 .annotate 'line', 569
     .local string rx1348_tgt
     .local int rx1348_pos
@@ -17621,7 +17621,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<{ }>"  :subid("353_1279564397.22945") :method :outer("349_1279564397.22945")
+.sub "metachar:sym<{ }>"  :subid("353_1279589170.0083") :method :outer("349_1279589170.0083")
 .annotate 'line', 567
     .local string rx1351_tgt
     .local int rx1351_pos
@@ -17690,7 +17690,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<{ }>"  :subid("354_1279564397.22945") :method
+.sub "!PREFIX__metachar:sym<{ }>"  :subid("354_1279589170.0083") :method
 .annotate 'line', 567
     new $P1353, "ResizablePMCArray"
     push $P1353, "{"
@@ -17699,9 +17699,9 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<nqpvar>"  :subid("355_1279564397.22945") :method :outer("349_1279564397.22945")
+.sub "metachar:sym<nqpvar>"  :subid("355_1279589170.0083") :method :outer("349_1279589170.0083")
 .annotate 'line', 567
-    .const 'Sub' $P1361 = "357_1279564397.22945" 
+    .const 'Sub' $P1361 = "357_1279589170.0083" 
     capture_lex $P1361
     .local string rx1356_tgt
     .local int rx1356_pos
@@ -17743,7 +17743,7 @@
     lt $I11, 0, rx1356_fail
   # rx subrule "before" subtype=zerowidth negate=
     rx1356_cur."!cursor_pos"(rx1356_pos)
-    .const 'Sub' $P1361 = "357_1279564397.22945" 
+    .const 'Sub' $P1361 = "357_1279589170.0083" 
     capture_lex $P1361
     $P10 = rx1356_cur."before"($P1361)
     unless $P10, rx1356_fail
@@ -17776,7 +17776,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<nqpvar>"  :subid("356_1279564397.22945") :method
+.sub "!PREFIX__metachar:sym<nqpvar>"  :subid("356_1279589170.0083") :method
 .annotate 'line', 567
     new $P1358, "ResizablePMCArray"
     push $P1358, "$"
@@ -17786,7 +17786,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1360"  :anon :subid("357_1279564397.22945") :method :outer("355_1279564397.22945")
+.sub "_block1360"  :anon :subid("357_1279589170.0083") :method :outer("355_1279589170.0083")
 .annotate 'line', 577
     .local string rx1362_tgt
     .local int rx1362_pos
@@ -17848,7 +17848,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<{ }>"  :subid("358_1279564397.22945") :method :outer("349_1279564397.22945")
+.sub "assertion:sym<{ }>"  :subid("358_1279589170.0083") :method :outer("349_1279589170.0083")
 .annotate 'line', 567
     .local string rx1365_tgt
     .local int rx1365_pos
@@ -17917,7 +17917,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<{ }>"  :subid("359_1279564397.22945") :method
+.sub "!PREFIX__assertion:sym<{ }>"  :subid("359_1279589170.0083") :method
 .annotate 'line', 567
     new $P1367, "ResizablePMCArray"
     push $P1367, "{"
@@ -17926,9 +17926,9 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<?{ }>"  :subid("360_1279564397.22945") :method :outer("349_1279564397.22945")
+.sub "assertion:sym<?{ }>"  :subid("360_1279589170.0083") :method :outer("349_1279589170.0083")
 .annotate 'line', 567
-    .const 'Sub' $P1375 = "362_1279564397.22945" 
+    .const 'Sub' $P1375 = "362_1279589170.0083" 
     capture_lex $P1375
     .local string rx1370_tgt
     .local int rx1370_pos
@@ -17974,7 +17974,7 @@
     inc rx1370_pos
   # rx subrule "before" subtype=zerowidth negate=
     rx1370_cur."!cursor_pos"(rx1370_pos)
-    .const 'Sub' $P1375 = "362_1279564397.22945" 
+    .const 'Sub' $P1375 = "362_1279589170.0083" 
     capture_lex $P1375
     $P10 = rx1370_cur."before"($P1375)
     unless $P10, rx1370_fail
@@ -18018,7 +18018,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<?{ }>"  :subid("361_1279564397.22945") :method
+.sub "!PREFIX__assertion:sym<?{ }>"  :subid("361_1279589170.0083") :method
 .annotate 'line', 567
     new $P1372, "ResizablePMCArray"
     push $P1372, "!"
@@ -18028,7 +18028,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1374"  :anon :subid("362_1279564397.22945") :method :outer("360_1279564397.22945")
+.sub "_block1374"  :anon :subid("362_1279589170.0083") :method :outer("360_1279589170.0083")
 .annotate 'line', 585
     .local string rx1376_tgt
     .local int rx1376_pos
@@ -18088,9 +18088,9 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<name>"  :subid("363_1279564397.22945") :method :outer("349_1279564397.22945")
+.sub "assertion:sym<name>"  :subid("363_1279589170.0083") :method :outer("349_1279589170.0083")
 .annotate 'line', 567
-    .const 'Sub' $P1388 = "365_1279564397.22945" 
+    .const 'Sub' $P1388 = "365_1279589170.0083" 
     capture_lex $P1388
     .local string rx1380_tgt
     .local int rx1380_pos
@@ -18144,7 +18144,7 @@
 .annotate 'line', 591
   # rx subrule "before" subtype=zerowidth negate=
     rx1380_cur."!cursor_pos"(rx1380_pos)
-    .const 'Sub' $P1388 = "365_1279564397.22945" 
+    .const 'Sub' $P1388 = "365_1279589170.0083" 
     capture_lex $P1388
     $P10 = rx1380_cur."before"($P1388)
     unless $P10, rx1380_fail
@@ -18254,7 +18254,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<name>"  :subid("364_1279564397.22945") :method
+.sub "!PREFIX__assertion:sym<name>"  :subid("364_1279589170.0083") :method
 .annotate 'line', 567
     $P1382 = self."!PREFIX__!subrule"("identifier", "")
     new $P1383, "ResizablePMCArray"
@@ -18264,7 +18264,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1387"  :anon :subid("365_1279564397.22945") :method :outer("363_1279564397.22945")
+.sub "_block1387"  :anon :subid("365_1279589170.0083") :method :outer("363_1279589170.0083")
 .annotate 'line', 591
     .local string rx1389_tgt
     .local int rx1389_pos
@@ -18324,7 +18324,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<var>"  :subid("366_1279564397.22945") :method :outer("349_1279564397.22945")
+.sub "assertion:sym<var>"  :subid("366_1279589170.0083") :method :outer("349_1279589170.0083")
 .annotate 'line', 567
     .local string rx1392_tgt
     .local int rx1392_pos
@@ -18393,7 +18393,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<var>"  :subid("367_1279564397.22945") :method
+.sub "!PREFIX__assertion:sym<var>"  :subid("367_1279589170.0083") :method
 .annotate 'line', 567
     new $P1394, "ResizablePMCArray"
     push $P1394, "$"
@@ -18403,7 +18403,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "codeblock"  :subid("368_1279564397.22945") :method :outer("349_1279564397.22945")
+.sub "codeblock"  :subid("368_1279589170.0083") :method :outer("349_1279589170.0083")
 .annotate 'line', 567
     .local string rx1397_tgt
     .local int rx1397_pos
@@ -18466,7 +18466,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__codeblock"  :subid("369_1279564397.22945") :method
+.sub "!PREFIX__codeblock"  :subid("369_1279589170.0083") :method
 .annotate 'line', 567
     $P1399 = self."!PREFIX__!subrule"("LANG", "")
     new $P1400, "ResizablePMCArray"
@@ -18476,18 +18476,18 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block1403" :load :anon :subid("370_1279564397.22945")
+.sub "_block1403" :load :anon :subid("370_1279589170.0083")
 .annotate 'line', 4
-    .const 'Sub' $P1405 = "11_1279564397.22945" 
+    .const 'Sub' $P1405 = "11_1279589170.0083" 
     $P1406 = $P1405()
     .return ($P1406)
 .end
 
 
 .namespace []
-.sub "_block1424" :load :anon :subid("371_1279564397.22945")
+.sub "_block1424" :load :anon :subid("371_1279589170.0083")
 .annotate 'line', 1
-    .const 'Sub' $P1426 = "10_1279564397.22945" 
+    .const 'Sub' $P1426 = "10_1279589170.0083" 
     $P1427 = $P1426()
     .return ($P1427)
 .end
@@ -18495,7 +18495,7 @@
 ### .include 'gen/nqp-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1279564403.05061")
+.sub "_block11"  :anon :subid("10_1279589176.27948")
 .annotate 'line', 0
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     capture_lex $P14
@@ -18512,15 +18512,15 @@
     $P2447 = $P14()
 .annotate 'line', 1
     .return ($P2447)
-    .const 'Sub' $P2449 = "143_1279564403.05061" 
+    .const 'Sub' $P2449 = "143_1279589176.27948" 
     .return ($P2449)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post144") :outer("10_1279564403.05061")
+.sub "" :load :init :subid("post144") :outer("10_1279589176.27948")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1279564403.05061" 
+    .const 'Sub' $P12 = "10_1279589176.27948" 
     .local pmc block
     set block, $P12
     $P2452 = get_root_global ["parrot"], "P6metaclass"
@@ -18529,217 +18529,217 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block13"  :subid("11_1279564403.05061") :outer("10_1279564403.05061")
+.sub "_block13"  :subid("11_1279589176.27948") :outer("10_1279589176.27948")
 .annotate 'line', 3
-    .const 'Sub' $P2443 = "142_1279564403.05061" 
+    .const 'Sub' $P2443 = "142_1279589176.27948" 
     capture_lex $P2443
     get_hll_global $P2326, ["NQP";"RegexActions"], "_block2325" 
     capture_lex $P2326
-    .const 'Sub' $P2315 = "132_1279564403.05061" 
+    .const 'Sub' $P2315 = "132_1279589176.27948" 
     capture_lex $P2315
-    .const 'Sub' $P2308 = "131_1279564403.05061" 
+    .const 'Sub' $P2308 = "131_1279589176.27948" 
     capture_lex $P2308
-    .const 'Sub' $P2301 = "130_1279564403.05061" 
+    .const 'Sub' $P2301 = "130_1279589176.27948" 
     capture_lex $P2301
-    .const 'Sub' $P2294 = "129_1279564403.05061" 
+    .const 'Sub' $P2294 = "129_1279589176.27948" 
     capture_lex $P2294
-    .const 'Sub' $P2281 = "128_1279564403.05061" 
+    .const 'Sub' $P2281 = "128_1279589176.27948" 
     capture_lex $P2281
-    .const 'Sub' $P2271 = "127_1279564403.05061" 
+    .const 'Sub' $P2271 = "127_1279589176.27948" 
     capture_lex $P2271
-    .const 'Sub' $P2261 = "126_1279564403.05061" 
+    .const 'Sub' $P2261 = "126_1279589176.27948" 
     capture_lex $P2261
-    .const 'Sub' $P2251 = "125_1279564403.05061" 
+    .const 'Sub' $P2251 = "125_1279589176.27948" 
     capture_lex $P2251
-    .const 'Sub' $P2244 = "124_1279564403.05061" 
+    .const 'Sub' $P2244 = "124_1279589176.27948" 
     capture_lex $P2244
-    .const 'Sub' $P2230 = "123_1279564403.05061" 
+    .const 'Sub' $P2230 = "123_1279589176.27948" 
     capture_lex $P2230
-    .const 'Sub' $P2220 = "122_1279564403.05061" 
+    .const 'Sub' $P2220 = "122_1279589176.27948" 
     capture_lex $P2220
-    .const 'Sub' $P2183 = "121_1279564403.05061" 
+    .const 'Sub' $P2183 = "121_1279589176.27948" 
     capture_lex $P2183
-    .const 'Sub' $P2169 = "120_1279564403.05061" 
+    .const 'Sub' $P2169 = "120_1279589176.27948" 
     capture_lex $P2169
-    .const 'Sub' $P2159 = "119_1279564403.05061" 
+    .const 'Sub' $P2159 = "119_1279589176.27948" 
     capture_lex $P2159
-    .const 'Sub' $P2149 = "118_1279564403.05061" 
+    .const 'Sub' $P2149 = "118_1279589176.27948" 
     capture_lex $P2149
-    .const 'Sub' $P2139 = "117_1279564403.05061" 
+    .const 'Sub' $P2139 = "117_1279589176.27948" 
     capture_lex $P2139
-    .const 'Sub' $P2129 = "116_1279564403.05061" 
+    .const 'Sub' $P2129 = "116_1279589176.27948" 
     capture_lex $P2129
-    .const 'Sub' $P2119 = "115_1279564403.05061" 
+    .const 'Sub' $P2119 = "115_1279589176.27948" 
     capture_lex $P2119
-    .const 'Sub' $P2091 = "114_1279564403.05061" 
+    .const 'Sub' $P2091 = "114_1279589176.27948" 
     capture_lex $P2091
-    .const 'Sub' $P2074 = "113_1279564403.05061" 
+    .const 'Sub' $P2074 = "113_1279589176.27948" 
     capture_lex $P2074
-    .const 'Sub' $P2064 = "112_1279564403.05061" 
+    .const 'Sub' $P2064 = "112_1279589176.27948" 
     capture_lex $P2064
-    .const 'Sub' $P2051 = "111_1279564403.05061" 
+    .const 'Sub' $P2051 = "111_1279589176.27948" 
     capture_lex $P2051
-    .const 'Sub' $P2038 = "110_1279564403.05061" 
+    .const 'Sub' $P2038 = "110_1279589176.27948" 
     capture_lex $P2038
-    .const 'Sub' $P2025 = "109_1279564403.05061" 
+    .const 'Sub' $P2025 = "109_1279589176.27948" 
     capture_lex $P2025
-    .const 'Sub' $P2015 = "108_1279564403.05061" 
+    .const 'Sub' $P2015 = "108_1279589176.27948" 
     capture_lex $P2015
-    .const 'Sub' $P1986 = "107_1279564403.05061" 
+    .const 'Sub' $P1986 = "107_1279589176.27948" 
     capture_lex $P1986
-    .const 'Sub' $P1962 = "106_1279564403.05061" 
+    .const 'Sub' $P1962 = "106_1279589176.27948" 
     capture_lex $P1962
-    .const 'Sub' $P1952 = "105_1279564403.05061" 
+    .const 'Sub' $P1952 = "105_1279589176.27948" 
     capture_lex $P1952
-    .const 'Sub' $P1942 = "104_1279564403.05061" 
+    .const 'Sub' $P1942 = "104_1279589176.27948" 
     capture_lex $P1942
-    .const 'Sub' $P1915 = "103_1279564403.05061" 
+    .const 'Sub' $P1915 = "103_1279589176.27948" 
     capture_lex $P1915
-    .const 'Sub' $P1897 = "102_1279564403.05061" 
+    .const 'Sub' $P1897 = "102_1279589176.27948" 
     capture_lex $P1897
-    .const 'Sub' $P1887 = "101_1279564403.05061" 
+    .const 'Sub' $P1887 = "101_1279589176.27948" 
     capture_lex $P1887
-    .const 'Sub' $P1783 = "98_1279564403.05061" 
+    .const 'Sub' $P1783 = "98_1279589176.27948" 
     capture_lex $P1783
-    .const 'Sub' $P1773 = "97_1279564403.05061" 
+    .const 'Sub' $P1773 = "97_1279589176.27948" 
     capture_lex $P1773
-    .const 'Sub' $P1744 = "96_1279564403.05061" 
+    .const 'Sub' $P1744 = "96_1279589176.27948" 
     capture_lex $P1744
-    .const 'Sub' $P1702 = "95_1279564403.05061" 
+    .const 'Sub' $P1702 = "95_1279589176.27948" 
     capture_lex $P1702
-    .const 'Sub' $P1686 = "94_1279564403.05061" 
+    .const 'Sub' $P1686 = "94_1279589176.27948" 
     capture_lex $P1686
-    .const 'Sub' $P1677 = "93_1279564403.05061" 
+    .const 'Sub' $P1677 = "93_1279589176.27948" 
     capture_lex $P1677
-    .const 'Sub' $P1645 = "92_1279564403.05061" 
+    .const 'Sub' $P1645 = "92_1279589176.27948" 
     capture_lex $P1645
-    .const 'Sub' $P1546 = "89_1279564403.05061" 
+    .const 'Sub' $P1546 = "89_1279589176.27948" 
     capture_lex $P1546
-    .const 'Sub' $P1529 = "88_1279564403.05061" 
+    .const 'Sub' $P1529 = "88_1279589176.27948" 
     capture_lex $P1529
-    .const 'Sub' $P1509 = "87_1279564403.05061" 
+    .const 'Sub' $P1509 = "87_1279589176.27948" 
     capture_lex $P1509
-    .const 'Sub' $P1397 = "84_1279564403.05061" 
+    .const 'Sub' $P1397 = "84_1279589176.27948" 
     capture_lex $P1397
-    .const 'Sub' $P1340 = "80_1279564403.05061" 
+    .const 'Sub' $P1340 = "80_1279589176.27948" 
     capture_lex $P1340
-    .const 'Sub' $P1300 = "78_1279564403.05061" 
+    .const 'Sub' $P1300 = "78_1279589176.27948" 
     capture_lex $P1300
-    .const 'Sub' $P1250 = "76_1279564403.05061" 
+    .const 'Sub' $P1250 = "76_1279589176.27948" 
     capture_lex $P1250
-    .const 'Sub' $P1240 = "75_1279564403.05061" 
+    .const 'Sub' $P1240 = "75_1279589176.27948" 
     capture_lex $P1240
-    .const 'Sub' $P1230 = "74_1279564403.05061" 
+    .const 'Sub' $P1230 = "74_1279589176.27948" 
     capture_lex $P1230
-    .const 'Sub' $P1159 = "72_1279564403.05061" 
+    .const 'Sub' $P1159 = "72_1279589176.27948" 
     capture_lex $P1159
-    .const 'Sub' $P1149 = "71_1279564403.05061" 
+    .const 'Sub' $P1149 = "71_1279589176.27948" 
     capture_lex $P1149
-    .const 'Sub' $P1132 = "70_1279564403.05061" 
+    .const 'Sub' $P1132 = "70_1279589176.27948" 
     capture_lex $P1132
-    .const 'Sub' $P1115 = "69_1279564403.05061" 
+    .const 'Sub' $P1115 = "69_1279589176.27948" 
     capture_lex $P1115
-    .const 'Sub' $P1098 = "68_1279564403.05061" 
+    .const 'Sub' $P1098 = "68_1279589176.27948" 
     capture_lex $P1098
-    .const 'Sub' $P1088 = "67_1279564403.05061" 
+    .const 'Sub' $P1088 = "67_1279589176.27948" 
     capture_lex $P1088
-    .const 'Sub' $P1078 = "66_1279564403.05061" 
+    .const 'Sub' $P1078 = "66_1279589176.27948" 
     capture_lex $P1078
-    .const 'Sub' $P1068 = "65_1279564403.05061" 
+    .const 'Sub' $P1068 = "65_1279589176.27948" 
     capture_lex $P1068
-    .const 'Sub' $P1044 = "64_1279564403.05061" 
+    .const 'Sub' $P1044 = "64_1279589176.27948" 
     capture_lex $P1044
-    .const 'Sub' $P991 = "63_1279564403.05061" 
+    .const 'Sub' $P991 = "63_1279589176.27948" 
     capture_lex $P991
-    .const 'Sub' $P981 = "62_1279564403.05061" 
+    .const 'Sub' $P981 = "62_1279589176.27948" 
     capture_lex $P981
-    .const 'Sub' $P892 = "60_1279564403.05061" 
+    .const 'Sub' $P892 = "60_1279589176.27948" 
     capture_lex $P892
-    .const 'Sub' $P866 = "59_1279564403.05061" 
+    .const 'Sub' $P866 = "59_1279589176.27948" 
     capture_lex $P866
-    .const 'Sub' $P850 = "58_1279564403.05061" 
+    .const 'Sub' $P850 = "58_1279589176.27948" 
     capture_lex $P850
-    .const 'Sub' $P840 = "57_1279564403.05061" 
+    .const 'Sub' $P840 = "57_1279589176.27948" 
     capture_lex $P840
-    .const 'Sub' $P830 = "56_1279564403.05061" 
+    .const 'Sub' $P830 = "56_1279589176.27948" 
     capture_lex $P830
-    .const 'Sub' $P820 = "55_1279564403.05061" 
+    .const 'Sub' $P820 = "55_1279589176.27948" 
     capture_lex $P820
-    .const 'Sub' $P810 = "54_1279564403.05061" 
+    .const 'Sub' $P810 = "54_1279589176.27948" 
     capture_lex $P810
-    .const 'Sub' $P800 = "53_1279564403.05061" 
+    .const 'Sub' $P800 = "53_1279589176.27948" 
     capture_lex $P800
-    .const 'Sub' $P790 = "52_1279564403.05061" 
+    .const 'Sub' $P790 = "52_1279589176.27948" 
     capture_lex $P790
-    .const 'Sub' $P780 = "51_1279564403.05061" 
+    .const 'Sub' $P780 = "51_1279589176.27948" 
     capture_lex $P780
-    .const 'Sub' $P770 = "50_1279564403.05061" 
+    .const 'Sub' $P770 = "50_1279589176.27948" 
     capture_lex $P770
-    .const 'Sub' $P760 = "49_1279564403.05061" 
+    .const 'Sub' $P760 = "49_1279589176.27948" 
     capture_lex $P760
-    .const 'Sub' $P750 = "48_1279564403.05061" 
+    .const 'Sub' $P750 = "48_1279589176.27948" 
     capture_lex $P750
-    .const 'Sub' $P740 = "47_1279564403.05061" 
+    .const 'Sub' $P740 = "47_1279589176.27948" 
     capture_lex $P740
-    .const 'Sub' $P730 = "46_1279564403.05061" 
+    .const 'Sub' $P730 = "46_1279589176.27948" 
     capture_lex $P730
-    .const 'Sub' $P720 = "45_1279564403.05061" 
+    .const 'Sub' $P720 = "45_1279589176.27948" 
     capture_lex $P720
-    .const 'Sub' $P702 = "44_1279564403.05061" 
+    .const 'Sub' $P702 = "44_1279589176.27948" 
     capture_lex $P702
-    .const 'Sub' $P667 = "43_1279564403.05061" 
+    .const 'Sub' $P667 = "43_1279589176.27948" 
     capture_lex $P667
-    .const 'Sub' $P651 = "42_1279564403.05061" 
+    .const 'Sub' $P651 = "42_1279589176.27948" 
     capture_lex $P651
-    .const 'Sub' $P630 = "41_1279564403.05061" 
+    .const 'Sub' $P630 = "41_1279589176.27948" 
     capture_lex $P630
-    .const 'Sub' $P610 = "40_1279564403.05061" 
+    .const 'Sub' $P610 = "40_1279589176.27948" 
     capture_lex $P610
-    .const 'Sub' $P597 = "39_1279564403.05061" 
+    .const 'Sub' $P597 = "39_1279589176.27948" 
     capture_lex $P597
-    .const 'Sub' $P571 = "38_1279564403.05061" 
+    .const 'Sub' $P571 = "38_1279589176.27948" 
     capture_lex $P571
-    .const 'Sub' $P535 = "37_1279564403.05061" 
+    .const 'Sub' $P535 = "37_1279589176.27948" 
     capture_lex $P535
-    .const 'Sub' $P518 = "36_1279564403.05061" 
+    .const 'Sub' $P518 = "36_1279589176.27948" 
     capture_lex $P518
-    .const 'Sub' $P504 = "35_1279564403.05061" 
+    .const 'Sub' $P504 = "35_1279589176.27948" 
     capture_lex $P504
-    .const 'Sub' $P451 = "33_1279564403.05061" 
+    .const 'Sub' $P451 = "33_1279589176.27948" 
     capture_lex $P451
-    .const 'Sub' $P440 = "32_1279564403.05061" 
+    .const 'Sub' $P440 = "32_1279589176.27948" 
     capture_lex $P440
-    .const 'Sub' $P427 = "31_1279564403.05061" 
+    .const 'Sub' $P427 = "31_1279589176.27948" 
     capture_lex $P427
-    .const 'Sub' $P407 = "30_1279564403.05061" 
+    .const 'Sub' $P407 = "30_1279589176.27948" 
     capture_lex $P407
-    .const 'Sub' $P397 = "29_1279564403.05061" 
+    .const 'Sub' $P397 = "29_1279589176.27948" 
     capture_lex $P397
-    .const 'Sub' $P387 = "28_1279564403.05061" 
+    .const 'Sub' $P387 = "28_1279589176.27948" 
     capture_lex $P387
-    .const 'Sub' $P371 = "27_1279564403.05061" 
+    .const 'Sub' $P371 = "27_1279589176.27948" 
     capture_lex $P371
-    .const 'Sub' $P288 = "25_1279564403.05061" 
+    .const 'Sub' $P288 = "25_1279589176.27948" 
     capture_lex $P288
-    .const 'Sub' $P245 = "23_1279564403.05061" 
+    .const 'Sub' $P245 = "23_1279589176.27948" 
     capture_lex $P245
-    .const 'Sub' $P213 = "22_1279564403.05061" 
+    .const 'Sub' $P213 = "22_1279589176.27948" 
     capture_lex $P213
-    .const 'Sub' $P180 = "21_1279564403.05061" 
+    .const 'Sub' $P180 = "21_1279589176.27948" 
     capture_lex $P180
-    .const 'Sub' $P170 = "20_1279564403.05061" 
+    .const 'Sub' $P170 = "20_1279589176.27948" 
     capture_lex $P170
-    .const 'Sub' $P151 = "19_1279564403.05061" 
+    .const 'Sub' $P151 = "19_1279589176.27948" 
     capture_lex $P151
-    .const 'Sub' $P100 = "18_1279564403.05061" 
+    .const 'Sub' $P100 = "18_1279589176.27948" 
     capture_lex $P100
-    .const 'Sub' $P84 = "17_1279564403.05061" 
+    .const 'Sub' $P84 = "17_1279589176.27948" 
     capture_lex $P84
-    .const 'Sub' $P63 = "16_1279564403.05061" 
+    .const 'Sub' $P63 = "16_1279589176.27948" 
     capture_lex $P63
-    .const 'Sub' $P27 = "13_1279564403.05061" 
+    .const 'Sub' $P27 = "13_1279589176.27948" 
     capture_lex $P27
-    .const 'Sub' $P16 = "12_1279564403.05061" 
+    .const 'Sub' $P16 = "12_1279589176.27948" 
     capture_lex $P16
     get_global $P15, "@BLOCK"
     unless_null $P15, vivify_147
@@ -18747,27 +18747,27 @@
     set_global "@BLOCK", $P15
   vivify_147:
 .annotate 'line', 9
-    .const 'Sub' $P16 = "12_1279564403.05061" 
+    .const 'Sub' $P16 = "12_1279589176.27948" 
     newclosure $P26, $P16
     .lex "xblock_immediate", $P26
 .annotate 'line', 14
-    .const 'Sub' $P27 = "13_1279564403.05061" 
+    .const 'Sub' $P27 = "13_1279589176.27948" 
     newclosure $P62, $P27
     .lex "block_immediate", $P62
 .annotate 'line', 24
-    .const 'Sub' $P63 = "16_1279564403.05061" 
+    .const 'Sub' $P63 = "16_1279589176.27948" 
     newclosure $P83, $P63
     .lex "vivitype", $P83
 .annotate 'line', 43
-    .const 'Sub' $P84 = "17_1279564403.05061" 
+    .const 'Sub' $P84 = "17_1279589176.27948" 
     newclosure $P99, $P84
     .lex "colonpair_str", $P99
 .annotate 'line', 223
-    .const 'Sub' $P100 = "18_1279564403.05061" 
+    .const 'Sub' $P100 = "18_1279589176.27948" 
     newclosure $P150, $P100
     .lex "push_block_handler", $P150
 .annotate 'line', 832
-    .const 'Sub' $P151 = "19_1279564403.05061" 
+    .const 'Sub' $P151 = "19_1279589176.27948" 
     newclosure $P165, $P151
     .lex "control", $P165
 .annotate 'line', 3
@@ -18794,19 +18794,19 @@
     $P2437 = $P2326()
 .annotate 'line', 3
     .return ($P2437)
-    .const 'Sub' $P2439 = "141_1279564403.05061" 
+    .const 'Sub' $P2439 = "141_1279589176.27948" 
     .return ($P2439)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "" :load :init :subid("post145") :outer("11_1279564403.05061")
+.sub "" :load :init :subid("post145") :outer("11_1279589176.27948")
 .annotate 'line', 3
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     .local pmc block
     set block, $P14
 .annotate 'line', 5
-    .const 'Sub' $P2443 = "142_1279564403.05061" 
+    .const 'Sub' $P2443 = "142_1279589176.27948" 
     capture_lex $P2443
     $P2443()
     $P2446 = get_root_global ["parrot"], "P6metaclass"
@@ -18815,7 +18815,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block2442"  :anon :subid("142_1279564403.05061") :outer("11_1279564403.05061")
+.sub "_block2442"  :anon :subid("142_1279589176.27948") :outer("11_1279589176.27948")
 .annotate 'line', 6
     get_global $P2444, "@BLOCK"
     unless_null $P2444, vivify_146
@@ -18831,7 +18831,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "xblock_immediate"  :subid("12_1279564403.05061") :outer("11_1279564403.05061")
+.sub "xblock_immediate"  :subid("12_1279589176.27948") :outer("11_1279589176.27948")
     .param pmc param_19
 .annotate 'line', 9
     new $P18, 'ExceptionHandler'
@@ -18868,10 +18868,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "block_immediate"  :subid("13_1279564403.05061") :outer("11_1279564403.05061")
+.sub "block_immediate"  :subid("13_1279589176.27948") :outer("11_1279589176.27948")
     .param pmc param_30
 .annotate 'line', 14
-    .const 'Sub' $P40 = "14_1279564403.05061" 
+    .const 'Sub' $P40 = "14_1279589176.27948" 
     capture_lex $P40
     new $P29, 'ExceptionHandler'
     set_addr $P29, control_28
@@ -18893,7 +18893,7 @@
     set $P33, $P38
   unless_34_end:
     if $P33, unless_32_end
-    .const 'Sub' $P40 = "14_1279564403.05061" 
+    .const 'Sub' $P40 = "14_1279589176.27948" 
     capture_lex $P40
     $P40()
   unless_32_end:
@@ -18910,9 +18910,9 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "_block39"  :anon :subid("14_1279564403.05061") :outer("13_1279564403.05061")
+.sub "_block39"  :anon :subid("14_1279589176.27948") :outer("13_1279589176.27948")
 .annotate 'line', 16
-    .const 'Sub' $P51 = "15_1279564403.05061" 
+    .const 'Sub' $P51 = "15_1279589176.27948" 
     capture_lex $P51
 .annotate 'line', 17
     new $P41, "Undef"
@@ -18935,7 +18935,7 @@
     unless $P45, loop56_done
     shift $P49, $P45
   loop56_redo:
-    .const 'Sub' $P51 = "15_1279564403.05061" 
+    .const 'Sub' $P51 = "15_1279589176.27948" 
     capture_lex $P51
     $P51($P49)
   loop56_next:
@@ -18958,7 +18958,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block50"  :anon :subid("15_1279564403.05061") :outer("14_1279564403.05061")
+.sub "_block50"  :anon :subid("15_1279589176.27948") :outer("14_1279589176.27948")
     .param pmc param_52
 .annotate 'line', 18
     .lex "$_", param_52
@@ -18971,7 +18971,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "vivitype"  :subid("16_1279564403.05061") :outer("11_1279564403.05061")
+.sub "vivitype"  :subid("16_1279589176.27948") :outer("11_1279589176.27948")
     .param pmc param_66
 .annotate 'line', 24
     new $P65, 'ExceptionHandler'
@@ -19020,7 +19020,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "colonpair_str"  :subid("17_1279564403.05061") :outer("11_1279564403.05061")
+.sub "colonpair_str"  :subid("17_1279589176.27948") :outer("11_1279589176.27948")
     .param pmc param_87
 .annotate 'line', 43
     new $P86, 'ExceptionHandler'
@@ -19059,7 +19059,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "push_block_handler"  :subid("18_1279564403.05061") :outer("11_1279564403.05061")
+.sub "push_block_handler"  :subid("18_1279589176.27948") :outer("11_1279589176.27948")
     .param pmc param_103
     .param pmc param_104
 .annotate 'line', 223
@@ -19177,7 +19177,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "control"  :subid("19_1279564403.05061") :outer("11_1279564403.05061")
+.sub "control"  :subid("19_1279589176.27948") :outer("11_1279589176.27948")
     .param pmc param_154
     .param pmc param_155
 .annotate 'line', 832
@@ -19210,7 +19210,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "TOP"  :subid("20_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "TOP"  :subid("20_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_173
 .annotate 'line', 33
     new $P172, 'ExceptionHandler'
@@ -19241,7 +19241,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "deflongname"  :subid("21_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "deflongname"  :subid("21_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_183
 .annotate 'line', 35
     new $P182, 'ExceptionHandler'
@@ -19331,7 +19331,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "comp_unit"  :subid("22_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "comp_unit"  :subid("22_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_216
 .annotate 'line', 49
     new $P215, 'ExceptionHandler'
@@ -19406,10 +19406,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statementlist"  :subid("23_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statementlist"  :subid("23_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_248
 .annotate 'line', 76
-    .const 'Sub' $P262 = "24_1279564403.05061" 
+    .const 'Sub' $P262 = "24_1279589176.27948" 
     capture_lex $P262
     new $P247, 'ExceptionHandler'
     set_addr $P247, control_246
@@ -19454,7 +19454,7 @@
     unless $P256, loop281_done
     shift $P260, $P256
   loop281_redo:
-    .const 'Sub' $P262 = "24_1279564403.05061" 
+    .const 'Sub' $P262 = "24_1279589176.27948" 
     capture_lex $P262
     $P262($P260)
   loop281_next:
@@ -19484,7 +19484,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block261"  :anon :subid("24_1279564403.05061") :outer("23_1279564403.05061")
+.sub "_block261"  :anon :subid("24_1279589176.27948") :outer("23_1279589176.27948")
     .param pmc param_264
 .annotate 'line', 80
     new $P263, "Undef"
@@ -19539,12 +19539,12 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement"  :subid("25_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement"  :subid("25_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_291
     .param pmc param_292 :optional
     .param int has_param_292 :opt_flag
 .annotate 'line', 89
-    .const 'Sub' $P300 = "26_1279564403.05061" 
+    .const 'Sub' $P300 = "26_1279589176.27948" 
     capture_lex $P300
     new $P290, 'ExceptionHandler'
     set_addr $P290, control_289
@@ -19603,7 +19603,7 @@
     goto if_296_end
   if_296:
 .annotate 'line', 91
-    .const 'Sub' $P300 = "26_1279564403.05061" 
+    .const 'Sub' $P300 = "26_1279589176.27948" 
     capture_lex $P300
     $P300()
   if_296_end:
@@ -19622,7 +19622,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block299"  :anon :subid("26_1279564403.05061") :outer("25_1279564403.05061")
+.sub "_block299"  :anon :subid("26_1279589176.27948") :outer("25_1279589176.27948")
 .annotate 'line', 92
     new $P301, "Undef"
     .lex "$mc", $P301
@@ -19795,7 +19795,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "xblock"  :subid("27_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "xblock"  :subid("27_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_374
 .annotate 'line', 117
     new $P373, 'ExceptionHandler'
@@ -19840,7 +19840,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "pblock"  :subid("28_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "pblock"  :subid("28_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_390
 .annotate 'line', 121
     new $P389, 'ExceptionHandler'
@@ -19873,7 +19873,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "block"  :subid("29_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "block"  :subid("29_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_400
 .annotate 'line', 125
     new $P399, 'ExceptionHandler'
@@ -19906,7 +19906,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "blockoid"  :subid("30_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "blockoid"  :subid("30_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_410
 .annotate 'line', 129
     new $P409, 'ExceptionHandler'
@@ -19963,7 +19963,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "newpad"  :subid("31_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "newpad"  :subid("31_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_430
 .annotate 'line', 138
     new $P429, 'ExceptionHandler'
@@ -19999,7 +19999,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "outerctx"  :subid("32_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "outerctx"  :subid("32_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_443
 .annotate 'line', 143
     new $P442, 'ExceptionHandler'
@@ -20039,10 +20039,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<if>"  :subid("33_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_control:sym<if>"  :subid("33_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_454
 .annotate 'line', 150
-    .const 'Sub' $P482 = "34_1279564403.05061" 
+    .const 'Sub' $P482 = "34_1279589176.27948" 
     capture_lex $P482
     new $P453, 'ExceptionHandler'
     set_addr $P453, control_452
@@ -20127,7 +20127,7 @@
     isgt $I480, $N479, 0.0
     unless $I480, loop497_done
   loop497_redo:
-    .const 'Sub' $P482 = "34_1279564403.05061" 
+    .const 'Sub' $P482 = "34_1279589176.27948" 
     capture_lex $P482
     $P482()
   loop497_next:
@@ -20155,7 +20155,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block481"  :anon :subid("34_1279564403.05061") :outer("33_1279564403.05061")
+.sub "_block481"  :anon :subid("34_1279589176.27948") :outer("33_1279589176.27948")
 .annotate 'line', 159
     new $P483, "Undef"
     .lex "$else", $P483
@@ -20195,7 +20195,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<unless>"  :subid("35_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_control:sym<unless>"  :subid("35_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_507
 .annotate 'line', 166
     new $P506, 'ExceptionHandler'
@@ -20237,7 +20237,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<while>"  :subid("36_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_control:sym<while>"  :subid("36_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_521
 .annotate 'line', 172
     new $P520, 'ExceptionHandler'
@@ -20288,7 +20288,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<repeat>"  :subid("37_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_control:sym<repeat>"  :subid("37_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_538
 .annotate 'line', 178
     new $P537, 'ExceptionHandler'
@@ -20389,7 +20389,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<for>"  :subid("38_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_control:sym<for>"  :subid("38_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_574
 .annotate 'line', 192
     new $P573, 'ExceptionHandler'
@@ -20470,7 +20470,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<return>"  :subid("39_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_control:sym<return>"  :subid("39_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_600
 .annotate 'line', 205
     new $P599, 'ExceptionHandler'
@@ -20506,7 +20506,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<CATCH>"  :subid("40_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_control:sym<CATCH>"  :subid("40_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_613
 .annotate 'line', 209
     new $P612, 'ExceptionHandler'
@@ -20565,7 +20565,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<CONTROL>"  :subid("41_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_control:sym<CONTROL>"  :subid("41_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_633
 .annotate 'line', 216
     new $P632, 'ExceptionHandler'
@@ -20624,7 +20624,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_prefix:sym<INIT>"  :subid("42_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_prefix:sym<INIT>"  :subid("42_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_654
 .annotate 'line', 260
     new $P653, 'ExceptionHandler'
@@ -20671,7 +20671,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_prefix:sym<try>"  :subid("43_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_prefix:sym<try>"  :subid("43_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_670
 .annotate 'line', 265
     new $P669, 'ExceptionHandler'
@@ -20749,7 +20749,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "blorst"  :subid("44_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "blorst"  :subid("44_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_705
 .annotate 'line', 288
     new $P704, 'ExceptionHandler'
@@ -20809,7 +20809,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_mod_cond:sym<if>"  :subid("45_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_mod_cond:sym<if>"  :subid("45_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_723
 .annotate 'line', 296
     new $P722, 'ExceptionHandler'
@@ -20840,7 +20840,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_mod_cond:sym<unless>"  :subid("46_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_mod_cond:sym<unless>"  :subid("46_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_733
 .annotate 'line', 297
     new $P732, 'ExceptionHandler'
@@ -20871,7 +20871,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_mod_loop:sym<while>"  :subid("47_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_mod_loop:sym<while>"  :subid("47_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_743
 .annotate 'line', 299
     new $P742, 'ExceptionHandler'
@@ -20902,7 +20902,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_mod_loop:sym<until>"  :subid("48_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "statement_mod_loop:sym<until>"  :subid("48_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_753
 .annotate 'line', 300
     new $P752, 'ExceptionHandler'
@@ -20933,7 +20933,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<fatarrow>"  :subid("49_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<fatarrow>"  :subid("49_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_763
 .annotate 'line', 304
     new $P762, 'ExceptionHandler'
@@ -20964,7 +20964,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<colonpair>"  :subid("50_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<colonpair>"  :subid("50_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_773
 .annotate 'line', 305
     new $P772, 'ExceptionHandler'
@@ -20995,7 +20995,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<variable>"  :subid("51_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<variable>"  :subid("51_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_783
 .annotate 'line', 306
     new $P782, 'ExceptionHandler'
@@ -21026,7 +21026,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<package_declarator>"  :subid("52_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<package_declarator>"  :subid("52_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_793
 .annotate 'line', 307
     new $P792, 'ExceptionHandler'
@@ -21057,7 +21057,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<scope_declarator>"  :subid("53_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<scope_declarator>"  :subid("53_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_803
 .annotate 'line', 308
     new $P802, 'ExceptionHandler'
@@ -21088,7 +21088,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<routine_declarator>"  :subid("54_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<routine_declarator>"  :subid("54_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_813
 .annotate 'line', 309
     new $P812, 'ExceptionHandler'
@@ -21119,7 +21119,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<regex_declarator>"  :subid("55_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<regex_declarator>"  :subid("55_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_823
 .annotate 'line', 310
     new $P822, 'ExceptionHandler'
@@ -21150,7 +21150,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<statement_prefix>"  :subid("56_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<statement_prefix>"  :subid("56_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_833
 .annotate 'line', 311
     new $P832, 'ExceptionHandler'
@@ -21181,7 +21181,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<lambda>"  :subid("57_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<lambda>"  :subid("57_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_843
 .annotate 'line', 312
     new $P842, 'ExceptionHandler'
@@ -21212,7 +21212,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "fatarrow"  :subid("58_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "fatarrow"  :subid("58_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_853
 .annotate 'line', 314
     new $P852, 'ExceptionHandler'
@@ -21262,7 +21262,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "colonpair"  :subid("59_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "colonpair"  :subid("59_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_869
 .annotate 'line', 320
     new $P868, 'ExceptionHandler'
@@ -21344,10 +21344,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "variable"  :subid("60_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "variable"  :subid("60_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_895
 .annotate 'line', 328
-    .const 'Sub' $P908 = "61_1279564403.05061" 
+    .const 'Sub' $P908 = "61_1279589176.27948" 
     capture_lex $P908
     new $P894, 'ExceptionHandler'
     set_addr $P894, control_893
@@ -21371,7 +21371,7 @@
   vivify_325:
     if $P900, if_898
 .annotate 'line', 334
-    .const 'Sub' $P908 = "61_1279564403.05061" 
+    .const 'Sub' $P908 = "61_1279589176.27948" 
     capture_lex $P908
     $P908()
     goto if_898_end
@@ -21408,7 +21408,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block907"  :anon :subid("61_1279564403.05061") :outer("60_1279564403.05061")
+.sub "_block907"  :anon :subid("61_1279589176.27948") :outer("60_1279589176.27948")
 .annotate 'line', 335
     $P909 = root_new ['parrot';'ResizablePMCArray']
     .lex "@name", $P909
@@ -21578,7 +21578,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "package_declarator:sym<module>"  :subid("62_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "package_declarator:sym<module>"  :subid("62_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_984
 .annotate 'line', 366
     new $P983, 'ExceptionHandler'
@@ -21609,7 +21609,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "package_declarator:sym<class>"  :subid("63_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "package_declarator:sym<class>"  :subid("63_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_994
 .annotate 'line', 367
     new $P993, 'ExceptionHandler'
@@ -21767,7 +21767,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "package_def"  :subid("64_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "package_def"  :subid("64_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1047
 .annotate 'line', 390
     new $P1046, 'ExceptionHandler'
@@ -21846,7 +21846,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "scope_declarator:sym<my>"  :subid("65_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "scope_declarator:sym<my>"  :subid("65_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1071
 .annotate 'line', 397
     new $P1070, 'ExceptionHandler'
@@ -21877,7 +21877,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "scope_declarator:sym<our>"  :subid("66_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "scope_declarator:sym<our>"  :subid("66_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1081
 .annotate 'line', 398
     new $P1080, 'ExceptionHandler'
@@ -21908,7 +21908,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "scope_declarator:sym<has>"  :subid("67_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "scope_declarator:sym<has>"  :subid("67_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1091
 .annotate 'line', 399
     new $P1090, 'ExceptionHandler'
@@ -21939,7 +21939,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "scoped"  :subid("68_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "scoped"  :subid("68_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1101
 .annotate 'line', 401
     new $P1100, 'ExceptionHandler'
@@ -21998,7 +21998,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "declarator"  :subid("69_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "declarator"  :subid("69_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1118
 .annotate 'line', 407
     new $P1117, 'ExceptionHandler'
@@ -22057,7 +22057,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "multi_declarator:sym<multi>"  :subid("70_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "multi_declarator:sym<multi>"  :subid("70_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1135
 .annotate 'line', 413
     new $P1134, 'ExceptionHandler'
@@ -22111,7 +22111,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "multi_declarator:sym<null>"  :subid("71_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "multi_declarator:sym<null>"  :subid("71_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1152
 .annotate 'line', 414
     new $P1151, 'ExceptionHandler'
@@ -22142,10 +22142,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "variable_declarator"  :subid("72_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "variable_declarator"  :subid("72_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1162
 .annotate 'line', 417
-    .const 'Sub' $P1202 = "73_1279564403.05061" 
+    .const 'Sub' $P1202 = "73_1279589176.27948" 
     capture_lex $P1202
     new $P1161, 'ExceptionHandler'
     set_addr $P1161, control_1160
@@ -22227,7 +22227,7 @@
     iseq $I1187, $S1186, "has"
     if $I1187, if_1184
 .annotate 'line', 434
-    .const 'Sub' $P1202 = "73_1279564403.05061" 
+    .const 'Sub' $P1202 = "73_1279589176.27948" 
     capture_lex $P1202
     $P1202()
     goto if_1184_end
@@ -22287,7 +22287,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1201"  :anon :subid("73_1279564403.05061") :outer("72_1279564403.05061")
+.sub "_block1201"  :anon :subid("73_1279589176.27948") :outer("72_1279589176.27948")
 .annotate 'line', 435
     new $P1203, "Undef"
     .lex "$scope", $P1203
@@ -22349,7 +22349,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "routine_declarator:sym<sub>"  :subid("74_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "routine_declarator:sym<sub>"  :subid("74_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1233
 .annotate 'line', 445
     new $P1232, 'ExceptionHandler'
@@ -22380,7 +22380,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "routine_declarator:sym<method>"  :subid("75_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "routine_declarator:sym<method>"  :subid("75_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1243
 .annotate 'line', 446
     new $P1242, 'ExceptionHandler'
@@ -22411,10 +22411,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "routine_def"  :subid("76_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "routine_def"  :subid("76_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1253
 .annotate 'line', 448
-    .const 'Sub' $P1264 = "77_1279564403.05061" 
+    .const 'Sub' $P1264 = "77_1279589176.27948" 
     capture_lex $P1264
     new $P1252, 'ExceptionHandler'
     set_addr $P1252, control_1251
@@ -22451,7 +22451,7 @@
     new $P1262, "Undef"
   vivify_423:
     unless $P1262, if_1260_end
-    .const 'Sub' $P1264 = "77_1279564403.05061" 
+    .const 'Sub' $P1264 = "77_1279589176.27948" 
     capture_lex $P1264
     $P1264()
   if_1260_end:
@@ -22470,7 +22470,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1263"  :anon :subid("77_1279564403.05061") :outer("76_1279564403.05061")
+.sub "_block1263"  :anon :subid("77_1279589176.27948") :outer("76_1279589176.27948")
 .annotate 'line', 453
     new $P1265, "Undef"
     .lex "$name", $P1265
@@ -22567,10 +22567,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "method_def"  :subid("78_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "method_def"  :subid("78_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1303
 .annotate 'line', 466
-    .const 'Sub' $P1319 = "79_1279564403.05061" 
+    .const 'Sub' $P1319 = "79_1279589176.27948" 
     capture_lex $P1319
     new $P1302, 'ExceptionHandler'
     set_addr $P1302, control_1301
@@ -22622,7 +22622,7 @@
     new $P1317, "Undef"
   vivify_442:
     unless $P1317, if_1315_end
-    .const 'Sub' $P1319 = "79_1279564403.05061" 
+    .const 'Sub' $P1319 = "79_1279589176.27948" 
     capture_lex $P1319
     $P1319()
   if_1315_end:
@@ -22656,7 +22656,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1318"  :anon :subid("79_1279564403.05061") :outer("78_1279564403.05061")
+.sub "_block1318"  :anon :subid("79_1279589176.27948") :outer("78_1279589176.27948")
 .annotate 'line', 473
     new $P1320, "Undef"
     .lex "$name", $P1320
@@ -22688,12 +22688,12 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "signature"  :subid("80_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "signature"  :subid("80_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1343
 .annotate 'line', 481
-    .const 'Sub' $P1369 = "82_1279564403.05061" 
+    .const 'Sub' $P1369 = "82_1279589176.27948" 
     capture_lex $P1369
-    .const 'Sub' $P1354 = "81_1279564403.05061" 
+    .const 'Sub' $P1354 = "81_1279589176.27948" 
     capture_lex $P1354
     new $P1342, 'ExceptionHandler'
     set_addr $P1342, control_1341
@@ -22737,7 +22737,7 @@
     unless $P1348, loop1360_done
     shift $P1352, $P1348
   loop1360_redo:
-    .const 'Sub' $P1354 = "81_1279564403.05061" 
+    .const 'Sub' $P1354 = "81_1279589176.27948" 
     capture_lex $P1354
     $P1354($P1352)
   loop1360_next:
@@ -22766,7 +22766,7 @@
     set $P1363, $I1367
     goto if_1364_end
   if_1364:
-    .const 'Sub' $P1369 = "82_1279564403.05061" 
+    .const 'Sub' $P1369 = "82_1279589176.27948" 
     capture_lex $P1369
     $P1395 = $P1369()
     set $P1363, $P1395
@@ -22782,7 +22782,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1353"  :anon :subid("81_1279564403.05061") :outer("80_1279564403.05061")
+.sub "_block1353"  :anon :subid("81_1279589176.27948") :outer("80_1279589176.27948")
     .param pmc param_1355
 .annotate 'line', 484
     .lex "$_", param_1355
@@ -22796,9 +22796,9 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "_block1368"  :anon :subid("82_1279564403.05061") :outer("80_1279564403.05061")
+.sub "_block1368"  :anon :subid("82_1279589176.27948") :outer("80_1279589176.27948")
 .annotate 'line', 487
-    .const 'Sub' $P1378 = "83_1279564403.05061" 
+    .const 'Sub' $P1378 = "83_1279589176.27948" 
     capture_lex $P1378
 .annotate 'line', 488
     $P1370 = root_new ['parrot';'ResizablePMCArray']
@@ -22819,7 +22819,7 @@
     unless $P1372, loop1388_done
     shift $P1376, $P1372
   loop1388_redo:
-    .const 'Sub' $P1378 = "83_1279564403.05061" 
+    .const 'Sub' $P1378 = "83_1279589176.27948" 
     capture_lex $P1378
     $P1378($P1376)
   loop1388_next:
@@ -22850,7 +22850,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1377"  :anon :subid("83_1279564403.05061") :outer("82_1279564403.05061")
+.sub "_block1377"  :anon :subid("83_1279589176.27948") :outer("82_1279589176.27948")
     .param pmc param_1379
 .annotate 'line', 489
     .lex "$_", param_1379
@@ -22873,10 +22873,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "parameter"  :subid("84_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "parameter"  :subid("84_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1400
 .annotate 'line', 496
-    .const 'Sub' $P1481 = "85_1279564403.05061" 
+    .const 'Sub' $P1481 = "85_1279589176.27948" 
     capture_lex $P1481
     new $P1399, 'ExceptionHandler'
     set_addr $P1399, control_1398
@@ -23102,7 +23102,7 @@
     new $P1479, "Undef"
   vivify_488:
     unless $P1479, if_1477_end
-    .const 'Sub' $P1481 = "85_1279564403.05061" 
+    .const 'Sub' $P1481 = "85_1279589176.27948" 
     capture_lex $P1481
     $P1481()
   if_1477_end:
@@ -23122,9 +23122,9 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "_block1480"  :anon :subid("85_1279564403.05061") :outer("84_1279564403.05061")
+.sub "_block1480"  :anon :subid("85_1279589176.27948") :outer("84_1279589176.27948")
 .annotate 'line', 527
-    .const 'Sub' $P1493 = "86_1279564403.05061" 
+    .const 'Sub' $P1493 = "86_1279589176.27948" 
     capture_lex $P1493
 .annotate 'line', 528
     $P1482 = root_new ['parrot';'ResizablePMCArray']
@@ -23163,7 +23163,7 @@
     unless $P1484, loop1499_done
     shift $P1491, $P1484
   loop1499_redo:
-    .const 'Sub' $P1493 = "86_1279564403.05061" 
+    .const 'Sub' $P1493 = "86_1279589176.27948" 
     capture_lex $P1493
     $P1493($P1491)
   loop1499_next:
@@ -23187,7 +23187,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1492"  :anon :subid("86_1279564403.05061") :outer("85_1279564403.05061")
+.sub "_block1492"  :anon :subid("86_1279589176.27948") :outer("85_1279589176.27948")
     .param pmc param_1494
 .annotate 'line', 529
     .lex "$_", param_1494
@@ -23201,7 +23201,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "param_var"  :subid("87_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "param_var"  :subid("87_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1512
 .annotate 'line', 536
     new $P1511, 'ExceptionHandler'
@@ -23255,7 +23255,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "named_param"  :subid("88_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "named_param"  :subid("88_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1532
 .annotate 'line', 544
     new $P1531, 'ExceptionHandler'
@@ -23309,14 +23309,14 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "regex_declarator"  :subid("89_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "regex_declarator"  :subid("89_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1549
     .param pmc param_1550 :optional
     .param int has_param_1550 :opt_flag
 .annotate 'line', 550
-    .const 'Sub' $P1620 = "91_1279564403.05061" 
+    .const 'Sub' $P1620 = "91_1279589176.27948" 
     capture_lex $P1620
-    .const 'Sub' $P1592 = "90_1279564403.05061" 
+    .const 'Sub' $P1592 = "90_1279589176.27948" 
     capture_lex $P1592
     new $P1548, 'ExceptionHandler'
     set_addr $P1548, control_1547
@@ -23374,13 +23374,13 @@
     iseq $I1590, $S1589, "open"
     if $I1590, if_1587
 .annotate 'line', 596
-    .const 'Sub' $P1620 = "91_1279564403.05061" 
+    .const 'Sub' $P1620 = "91_1279589176.27948" 
     capture_lex $P1620
     $P1620()
     goto if_1587_end
   if_1587:
 .annotate 'line', 583
-    .const 'Sub' $P1592 = "90_1279564403.05061" 
+    .const 'Sub' $P1592 = "90_1279589176.27948" 
     capture_lex $P1592
     $P1592()
   if_1587_end:
@@ -23437,7 +23437,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1619"  :anon :subid("91_1279564403.05061") :outer("89_1279564403.05061")
+.sub "_block1619"  :anon :subid("91_1279589176.27948") :outer("89_1279589176.27948")
 .annotate 'line', 597
     new $P1621, "Undef"
     .lex "$regex", $P1621
@@ -23489,7 +23489,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "_block1591"  :anon :subid("90_1279564403.05061") :outer("89_1279564403.05061")
+.sub "_block1591"  :anon :subid("90_1279589176.27948") :outer("89_1279589176.27948")
 .annotate 'line', 584
     $P1593 = root_new ['parrot';'Hash']
     .lex "%h", $P1593
@@ -23588,7 +23588,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "dotty"  :subid("92_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "dotty"  :subid("92_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1648
 .annotate 'line', 614
     new $P1647, 'ExceptionHandler'
@@ -23686,7 +23686,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<self>"  :subid("93_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<self>"  :subid("93_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1680
 .annotate 'line', 623
     new $P1679, 'ExceptionHandler'
@@ -23712,7 +23712,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<identifier>"  :subid("94_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<identifier>"  :subid("94_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1689
 .annotate 'line', 627
     new $P1688, 'ExceptionHandler'
@@ -23762,7 +23762,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<name>"  :subid("95_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<name>"  :subid("95_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1705
 .annotate 'line', 633
     new $P1704, 'ExceptionHandler'
@@ -23881,7 +23881,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<pir::op>"  :subid("96_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<pir::op>"  :subid("96_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1747
 .annotate 'line', 647
     new $P1746, 'ExceptionHandler'
@@ -23973,7 +23973,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "args"  :subid("97_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "args"  :subid("97_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1776
 .annotate 'line', 662
     new $P1775, 'ExceptionHandler'
@@ -24004,10 +24004,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "arglist"  :subid("98_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "arglist"  :subid("98_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1786
 .annotate 'line', 664
-    .const 'Sub' $P1797 = "99_1279564403.05061" 
+    .const 'Sub' $P1797 = "99_1279589176.27948" 
     capture_lex $P1797
     new $P1785, 'ExceptionHandler'
     set_addr $P1785, control_1784
@@ -24039,7 +24039,7 @@
     new $P1795, "Undef"
   vivify_556:
     unless $P1795, if_1793_end
-    .const 'Sub' $P1797 = "99_1279564403.05061" 
+    .const 'Sub' $P1797 = "99_1279589176.27948" 
     capture_lex $P1797
     $P1797()
   if_1793_end:
@@ -24196,9 +24196,9 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "_block1796"  :anon :subid("99_1279564403.05061") :outer("98_1279564403.05061")
+.sub "_block1796"  :anon :subid("99_1279589176.27948") :outer("98_1279589176.27948")
 .annotate 'line', 666
-    .const 'Sub' $P1818 = "100_1279564403.05061" 
+    .const 'Sub' $P1818 = "100_1279589176.27948" 
     capture_lex $P1818
 .annotate 'line', 667
     new $P1798, "Undef"
@@ -24251,7 +24251,7 @@
     unless $P1812, loop1823_done
     shift $P1816, $P1812
   loop1823_redo:
-    .const 'Sub' $P1818 = "100_1279564403.05061" 
+    .const 'Sub' $P1818 = "100_1279589176.27948" 
     capture_lex $P1818
     $P1818($P1816)
   loop1823_next:
@@ -24274,7 +24274,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1817"  :anon :subid("100_1279564403.05061") :outer("99_1279564403.05061")
+.sub "_block1817"  :anon :subid("100_1279589176.27948") :outer("99_1279589176.27948")
     .param pmc param_1819
 .annotate 'line', 669
     .lex "$_", param_1819
@@ -24287,7 +24287,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<value>"  :subid("101_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<value>"  :subid("101_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1890
 .annotate 'line', 690
     new $P1889, 'ExceptionHandler'
@@ -24318,7 +24318,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "circumfix:sym<( )>"  :subid("102_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "circumfix:sym<( )>"  :subid("102_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1900
 .annotate 'line', 692
     new $P1899, 'ExceptionHandler'
@@ -24375,7 +24375,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "circumfix:sym<[ ]>"  :subid("103_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "circumfix:sym<[ ]>"  :subid("103_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1918
 .annotate 'line', 698
     new $P1917, 'ExceptionHandler'
@@ -24452,7 +24452,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "circumfix:sym<ang>"  :subid("104_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "circumfix:sym<ang>"  :subid("104_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1945
 .annotate 'line', 713
     new $P1944, 'ExceptionHandler'
@@ -24483,7 +24483,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("105_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("105_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1955
 .annotate 'line', 714
     new $P1954, 'ExceptionHandler'
@@ -24514,7 +24514,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "circumfix:sym<{ }>"  :subid("106_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "circumfix:sym<{ }>"  :subid("106_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1965
 .annotate 'line', 716
     new $P1964, 'ExceptionHandler'
@@ -24593,7 +24593,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "circumfix:sym<sigil>"  :subid("107_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "circumfix:sym<sigil>"  :subid("107_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_1989
 .annotate 'line', 724
     new $P1988, 'ExceptionHandler'
@@ -24673,7 +24673,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "semilist"  :subid("108_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "semilist"  :subid("108_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2018
 .annotate 'line', 731
     new $P2017, 'ExceptionHandler'
@@ -24704,7 +24704,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postcircumfix:sym<[ ]>"  :subid("109_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "postcircumfix:sym<[ ]>"  :subid("109_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2028
 .annotate 'line', 733
     new $P2027, 'ExceptionHandler'
@@ -24742,7 +24742,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postcircumfix:sym<{ }>"  :subid("110_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "postcircumfix:sym<{ }>"  :subid("110_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2041
 .annotate 'line', 739
     new $P2040, 'ExceptionHandler'
@@ -24780,7 +24780,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postcircumfix:sym<ang>"  :subid("111_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "postcircumfix:sym<ang>"  :subid("111_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2054
 .annotate 'line', 745
     new $P2053, 'ExceptionHandler'
@@ -24818,7 +24818,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postcircumfix:sym<( )>"  :subid("112_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "postcircumfix:sym<( )>"  :subid("112_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2067
 .annotate 'line', 751
     new $P2066, 'ExceptionHandler'
@@ -24851,7 +24851,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "value"  :subid("113_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "value"  :subid("113_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2077
 .annotate 'line', 755
     new $P2076, 'ExceptionHandler'
@@ -24907,7 +24907,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "number"  :subid("114_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "number"  :subid("114_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2094
 .annotate 'line', 759
     new $P2093, 'ExceptionHandler'
@@ -24986,7 +24986,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym<apos>"  :subid("115_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "quote:sym<apos>"  :subid("115_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2122
 .annotate 'line', 765
     new $P2121, 'ExceptionHandler'
@@ -25017,7 +25017,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym<dblq>"  :subid("116_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "quote:sym<dblq>"  :subid("116_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2132
 .annotate 'line', 766
     new $P2131, 'ExceptionHandler'
@@ -25048,7 +25048,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym<qq>"  :subid("117_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "quote:sym<qq>"  :subid("117_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2142
 .annotate 'line', 767
     new $P2141, 'ExceptionHandler'
@@ -25079,7 +25079,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym<q>"  :subid("118_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "quote:sym<q>"  :subid("118_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2152
 .annotate 'line', 768
     new $P2151, 'ExceptionHandler'
@@ -25110,7 +25110,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym<Q>"  :subid("119_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "quote:sym<Q>"  :subid("119_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2162
 .annotate 'line', 769
     new $P2161, 'ExceptionHandler'
@@ -25141,7 +25141,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym<Q:PIR>"  :subid("120_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "quote:sym<Q:PIR>"  :subid("120_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2172
 .annotate 'line', 770
     new $P2171, 'ExceptionHandler'
@@ -25178,7 +25178,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym</ />"  :subid("121_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "quote:sym</ />"  :subid("121_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2186
     .param pmc param_2187 :optional
     .param int has_param_2187 :opt_flag
@@ -25288,7 +25288,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<$>"  :subid("122_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "quote_escape:sym<$>"  :subid("122_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2223
 .annotate 'line', 799
     new $P2222, 'ExceptionHandler'
@@ -25319,7 +25319,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<{ }>"  :subid("123_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "quote_escape:sym<{ }>"  :subid("123_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2233
 .annotate 'line', 800
     new $P2232, 'ExceptionHandler'
@@ -25358,7 +25358,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<esc>"  :subid("124_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "quote_escape:sym<esc>"  :subid("124_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2247
 .annotate 'line', 805
     new $P2246, 'ExceptionHandler'
@@ -25380,7 +25380,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postfix:sym<.>"  :subid("125_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "postfix:sym<.>"  :subid("125_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2254
 .annotate 'line', 809
     new $P2253, 'ExceptionHandler'
@@ -25411,7 +25411,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postfix:sym<++>"  :subid("126_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "postfix:sym<++>"  :subid("126_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2264
 .annotate 'line', 811
     new $P2263, 'ExceptionHandler'
@@ -25442,7 +25442,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postfix:sym<-->"  :subid("127_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "postfix:sym<-->"  :subid("127_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2274
 .annotate 'line', 817
     new $P2273, 'ExceptionHandler'
@@ -25473,7 +25473,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "prefix:sym<make>"  :subid("128_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "prefix:sym<make>"  :subid("128_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2284
 .annotate 'line', 823
     new $P2283, 'ExceptionHandler'
@@ -25504,7 +25504,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<next>"  :subid("129_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<next>"  :subid("129_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2297
 .annotate 'line', 841
     new $P2296, 'ExceptionHandler'
@@ -25526,7 +25526,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<last>"  :subid("130_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<last>"  :subid("130_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2304
 .annotate 'line', 842
     new $P2303, 'ExceptionHandler'
@@ -25548,7 +25548,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<redo>"  :subid("131_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "term:sym<redo>"  :subid("131_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2311
 .annotate 'line', 843
     new $P2310, 'ExceptionHandler'
@@ -25570,7 +25570,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "infix:sym<~~>"  :subid("132_1279564403.05061") :method :outer("11_1279564403.05061")
+.sub "infix:sym<~~>"  :subid("132_1279589176.27948") :method :outer("11_1279589176.27948")
     .param pmc param_2318
 .annotate 'line', 845
     new $P2317, 'ExceptionHandler'
@@ -25596,24 +25596,24 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "_block2325"  :subid("133_1279564403.05061") :outer("11_1279564403.05061")
+.sub "_block2325"  :subid("133_1279589176.27948") :outer("11_1279589176.27948")
 .annotate 'line', 850
-    .const 'Sub' $P2411 = "140_1279564403.05061" 
+    .const 'Sub' $P2411 = "140_1279589176.27948" 
     capture_lex $P2411
-    .const 'Sub' $P2398 = "139_1279564403.05061" 
+    .const 'Sub' $P2398 = "139_1279589176.27948" 
     capture_lex $P2398
-    .const 'Sub' $P2381 = "138_1279564403.05061" 
+    .const 'Sub' $P2381 = "138_1279589176.27948" 
     capture_lex $P2381
-    .const 'Sub' $P2368 = "137_1279564403.05061" 
+    .const 'Sub' $P2368 = "137_1279589176.27948" 
     capture_lex $P2368
-    .const 'Sub' $P2355 = "136_1279564403.05061" 
+    .const 'Sub' $P2355 = "136_1279589176.27948" 
     capture_lex $P2355
-    .const 'Sub' $P2342 = "135_1279564403.05061" 
+    .const 'Sub' $P2342 = "135_1279589176.27948" 
     capture_lex $P2342
-    .const 'Sub' $P2327 = "134_1279564403.05061" 
+    .const 'Sub' $P2327 = "134_1279589176.27948" 
     capture_lex $P2327
 .annotate 'line', 884
-    .const 'Sub' $P2411 = "140_1279564403.05061" 
+    .const 'Sub' $P2411 = "140_1279589176.27948" 
     newclosure $P2436, $P2411
 .annotate 'line', 850
     .return ($P2436)
@@ -25622,7 +25622,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "metachar:sym<:my>"  :subid("134_1279564403.05061") :method :outer("133_1279564403.05061")
+.sub "metachar:sym<:my>"  :subid("134_1279589176.27948") :method :outer("133_1279589176.27948")
     .param pmc param_2330
 .annotate 'line', 852
     new $P2329, 'ExceptionHandler'
@@ -25663,7 +25663,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "metachar:sym<{ }>"  :subid("135_1279564403.05061") :method :outer("133_1279564403.05061")
+.sub "metachar:sym<{ }>"  :subid("135_1279589176.27948") :method :outer("133_1279589176.27948")
     .param pmc param_2345
 .annotate 'line', 858
     new $P2344, 'ExceptionHandler'
@@ -25699,7 +25699,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "metachar:sym<nqpvar>"  :subid("136_1279564403.05061") :method :outer("133_1279564403.05061")
+.sub "metachar:sym<nqpvar>"  :subid("136_1279589176.27948") :method :outer("133_1279589176.27948")
     .param pmc param_2358
 .annotate 'line', 863
     new $P2357, 'ExceptionHandler'
@@ -25735,7 +25735,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "assertion:sym<{ }>"  :subid("137_1279564403.05061") :method :outer("133_1279564403.05061")
+.sub "assertion:sym<{ }>"  :subid("137_1279589176.27948") :method :outer("133_1279589176.27948")
     .param pmc param_2371
 .annotate 'line', 868
     new $P2370, 'ExceptionHandler'
@@ -25771,7 +25771,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "assertion:sym<?{ }>"  :subid("138_1279564403.05061") :method :outer("133_1279564403.05061")
+.sub "assertion:sym<?{ }>"  :subid("138_1279589176.27948") :method :outer("133_1279589176.27948")
     .param pmc param_2384
 .annotate 'line', 873
     new $P2383, 'ExceptionHandler'
@@ -25819,7 +25819,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "assertion:sym<var>"  :subid("139_1279564403.05061") :method :outer("133_1279564403.05061")
+.sub "assertion:sym<var>"  :subid("139_1279589176.27948") :method :outer("133_1279589176.27948")
     .param pmc param_2401
 .annotate 'line', 879
     new $P2400, 'ExceptionHandler'
@@ -25855,7 +25855,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "codeblock"  :subid("140_1279564403.05061") :method :outer("133_1279564403.05061")
+.sub "codeblock"  :subid("140_1279589176.27948") :method :outer("133_1279589176.27948")
     .param pmc param_2414
 .annotate 'line', 884
     new $P2413, 'ExceptionHandler'
@@ -25919,18 +25919,18 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block2438" :load :anon :subid("141_1279564403.05061")
+.sub "_block2438" :load :anon :subid("141_1279589176.27948")
 .annotate 'line', 3
-    .const 'Sub' $P2440 = "11_1279564403.05061" 
+    .const 'Sub' $P2440 = "11_1279589176.27948" 
     $P2441 = $P2440()
     .return ($P2441)
 .end
 
 
 .namespace []
-.sub "_block2448" :load :anon :subid("143_1279564403.05061")
+.sub "_block2448" :load :anon :subid("143_1279589176.27948")
 .annotate 'line', 1
-    .const 'Sub' $P2450 = "10_1279564403.05061" 
+    .const 'Sub' $P2450 = "10_1279589176.27948" 
     $P2451 = $P2450()
     .return ($P2451)
 .end

Modified: branches/gsoc_threads/ext/nqp-rx/src/stage0/P6Regex-s0.pir
==============================================================================
--- branches/gsoc_threads/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Wed Jul 21 04:47:35 2010	(r48157)
@@ -16,7 +16,7 @@
 ### .include 'gen/p6regex-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1279564390.79897")
+.sub "_block11"  :anon :subid("10_1279589163.12187")
 .annotate 'line', 0
     get_hll_global $P14, ["Regex";"P6Regex";"Grammar"], "_block13" 
     capture_lex $P14
@@ -33,15 +33,15 @@
     $P573 = $P14()
 .annotate 'line', 1
     .return ($P573)
-    .const 'Sub' $P575 = "161_1279564390.79897" 
+    .const 'Sub' $P575 = "161_1279589163.12187" 
     .return ($P575)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post162") :outer("10_1279564390.79897")
+.sub "" :load :init :subid("post162") :outer("10_1279589163.12187")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1279564390.79897" 
+    .const 'Sub' $P12 = "10_1279589163.12187" 
     .local pmc block
     set block, $P12
     $P578 = get_root_global ["parrot"], "P6metaclass"
@@ -50,133 +50,133 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block13"  :subid("11_1279564390.79897") :outer("10_1279564390.79897")
+.sub "_block13"  :subid("11_1279589163.12187") :outer("10_1279589163.12187")
 .annotate 'line', 3
-    .const 'Sub' $P562 = "158_1279564390.79897" 
+    .const 'Sub' $P562 = "158_1279589163.12187" 
     capture_lex $P562
-    .const 'Sub' $P555 = "156_1279564390.79897" 
+    .const 'Sub' $P555 = "156_1279589163.12187" 
     capture_lex $P555
-    .const 'Sub' $P548 = "154_1279564390.79897" 
+    .const 'Sub' $P548 = "154_1279589163.12187" 
     capture_lex $P548
-    .const 'Sub' $P528 = "149_1279564390.79897" 
+    .const 'Sub' $P528 = "149_1279589163.12187" 
     capture_lex $P528
-    .const 'Sub' $P494 = "143_1279564390.79897" 
+    .const 'Sub' $P494 = "143_1279589163.12187" 
     capture_lex $P494
-    .const 'Sub' $P482 = "140_1279564390.79897" 
+    .const 'Sub' $P482 = "140_1279589163.12187" 
     capture_lex $P482
-    .const 'Sub' $P470 = "137_1279564390.79897" 
+    .const 'Sub' $P470 = "137_1279589163.12187" 
     capture_lex $P470
-    .const 'Sub' $P464 = "135_1279564390.79897" 
+    .const 'Sub' $P464 = "135_1279589163.12187" 
     capture_lex $P464
-    .const 'Sub' $P453 = "132_1279564390.79897" 
+    .const 'Sub' $P453 = "132_1279589163.12187" 
     capture_lex $P453
-    .const 'Sub' $P442 = "129_1279564390.79897" 
+    .const 'Sub' $P442 = "129_1279589163.12187" 
     capture_lex $P442
-    .const 'Sub' $P433 = "125_1279564390.79897" 
+    .const 'Sub' $P433 = "125_1279589163.12187" 
     capture_lex $P433
-    .const 'Sub' $P427 = "123_1279564390.79897" 
+    .const 'Sub' $P427 = "123_1279589163.12187" 
     capture_lex $P427
-    .const 'Sub' $P421 = "121_1279564390.79897" 
+    .const 'Sub' $P421 = "121_1279589163.12187" 
     capture_lex $P421
-    .const 'Sub' $P415 = "119_1279564390.79897" 
+    .const 'Sub' $P415 = "119_1279589163.12187" 
     capture_lex $P415
-    .const 'Sub' $P409 = "117_1279564390.79897" 
+    .const 'Sub' $P409 = "117_1279589163.12187" 
     capture_lex $P409
-    .const 'Sub' $P401 = "115_1279564390.79897" 
+    .const 'Sub' $P401 = "115_1279589163.12187" 
     capture_lex $P401
-    .const 'Sub' $P390 = "113_1279564390.79897" 
+    .const 'Sub' $P390 = "113_1279589163.12187" 
     capture_lex $P390
-    .const 'Sub' $P379 = "111_1279564390.79897" 
+    .const 'Sub' $P379 = "111_1279589163.12187" 
     capture_lex $P379
-    .const 'Sub' $P373 = "109_1279564390.79897" 
+    .const 'Sub' $P373 = "109_1279589163.12187" 
     capture_lex $P373
-    .const 'Sub' $P367 = "107_1279564390.79897" 
+    .const 'Sub' $P367 = "107_1279589163.12187" 
     capture_lex $P367
-    .const 'Sub' $P361 = "105_1279564390.79897" 
+    .const 'Sub' $P361 = "105_1279589163.12187" 
     capture_lex $P361
-    .const 'Sub' $P355 = "103_1279564390.79897" 
+    .const 'Sub' $P355 = "103_1279589163.12187" 
     capture_lex $P355
-    .const 'Sub' $P349 = "101_1279564390.79897" 
+    .const 'Sub' $P349 = "101_1279589163.12187" 
     capture_lex $P349
-    .const 'Sub' $P343 = "99_1279564390.79897" 
+    .const 'Sub' $P343 = "99_1279589163.12187" 
     capture_lex $P343
-    .const 'Sub' $P337 = "97_1279564390.79897" 
+    .const 'Sub' $P337 = "97_1279589163.12187" 
     capture_lex $P337
-    .const 'Sub' $P331 = "95_1279564390.79897" 
+    .const 'Sub' $P331 = "95_1279589163.12187" 
     capture_lex $P331
-    .const 'Sub' $P319 = "91_1279564390.79897" 
+    .const 'Sub' $P319 = "91_1279589163.12187" 
     capture_lex $P319
-    .const 'Sub' $P309 = "89_1279564390.79897" 
+    .const 'Sub' $P309 = "89_1279589163.12187" 
     capture_lex $P309
-    .const 'Sub' $P302 = "87_1279564390.79897" 
+    .const 'Sub' $P302 = "87_1279589163.12187" 
     capture_lex $P302
-    .const 'Sub' $P290 = "85_1279564390.79897" 
+    .const 'Sub' $P290 = "85_1279589163.12187" 
     capture_lex $P290
-    .const 'Sub' $P283 = "83_1279564390.79897" 
+    .const 'Sub' $P283 = "83_1279589163.12187" 
     capture_lex $P283
-    .const 'Sub' $P277 = "81_1279564390.79897" 
+    .const 'Sub' $P277 = "81_1279589163.12187" 
     capture_lex $P277
-    .const 'Sub' $P271 = "79_1279564390.79897" 
+    .const 'Sub' $P271 = "79_1279589163.12187" 
     capture_lex $P271
-    .const 'Sub' $P264 = "77_1279564390.79897" 
+    .const 'Sub' $P264 = "77_1279589163.12187" 
     capture_lex $P264
-    .const 'Sub' $P257 = "75_1279564390.79897" 
+    .const 'Sub' $P257 = "75_1279589163.12187" 
     capture_lex $P257
-    .const 'Sub' $P250 = "73_1279564390.79897" 
+    .const 'Sub' $P250 = "73_1279589163.12187" 
     capture_lex $P250
-    .const 'Sub' $P243 = "71_1279564390.79897" 
+    .const 'Sub' $P243 = "71_1279589163.12187" 
     capture_lex $P243
-    .const 'Sub' $P237 = "69_1279564390.79897" 
+    .const 'Sub' $P237 = "69_1279589163.12187" 
     capture_lex $P237
-    .const 'Sub' $P231 = "67_1279564390.79897" 
+    .const 'Sub' $P231 = "67_1279589163.12187" 
     capture_lex $P231
-    .const 'Sub' $P225 = "65_1279564390.79897" 
+    .const 'Sub' $P225 = "65_1279589163.12187" 
     capture_lex $P225
-    .const 'Sub' $P219 = "63_1279564390.79897" 
+    .const 'Sub' $P219 = "63_1279589163.12187" 
     capture_lex $P219
-    .const 'Sub' $P213 = "61_1279564390.79897" 
+    .const 'Sub' $P213 = "61_1279589163.12187" 
     capture_lex $P213
-    .const 'Sub' $P208 = "59_1279564390.79897" 
+    .const 'Sub' $P208 = "59_1279589163.12187" 
     capture_lex $P208
-    .const 'Sub' $P203 = "57_1279564390.79897" 
+    .const 'Sub' $P203 = "57_1279589163.12187" 
     capture_lex $P203
-    .const 'Sub' $P197 = "55_1279564390.79897" 
+    .const 'Sub' $P197 = "55_1279589163.12187" 
     capture_lex $P197
-    .const 'Sub' $P191 = "53_1279564390.79897" 
+    .const 'Sub' $P191 = "53_1279589163.12187" 
     capture_lex $P191
-    .const 'Sub' $P185 = "51_1279564390.79897" 
+    .const 'Sub' $P185 = "51_1279589163.12187" 
     capture_lex $P185
-    .const 'Sub' $P170 = "46_1279564390.79897" 
+    .const 'Sub' $P170 = "46_1279589163.12187" 
     capture_lex $P170
-    .const 'Sub' $P155 = "44_1279564390.79897" 
+    .const 'Sub' $P155 = "44_1279589163.12187" 
     capture_lex $P155
-    .const 'Sub' $P148 = "42_1279564390.79897" 
+    .const 'Sub' $P148 = "42_1279589163.12187" 
     capture_lex $P148
-    .const 'Sub' $P141 = "40_1279564390.79897" 
+    .const 'Sub' $P141 = "40_1279589163.12187" 
     capture_lex $P141
-    .const 'Sub' $P134 = "38_1279564390.79897" 
+    .const 'Sub' $P134 = "38_1279589163.12187" 
     capture_lex $P134
-    .const 'Sub' $P117 = "33_1279564390.79897" 
+    .const 'Sub' $P117 = "33_1279589163.12187" 
     capture_lex $P117
-    .const 'Sub' $P105 = "30_1279564390.79897" 
+    .const 'Sub' $P105 = "30_1279589163.12187" 
     capture_lex $P105
-    .const 'Sub' $P98 = "28_1279564390.79897" 
+    .const 'Sub' $P98 = "28_1279589163.12187" 
     capture_lex $P98
-    .const 'Sub' $P88 = "26_1279564390.79897" 
+    .const 'Sub' $P88 = "26_1279589163.12187" 
     capture_lex $P88
-    .const 'Sub' $P81 = "24_1279564390.79897" 
+    .const 'Sub' $P81 = "24_1279589163.12187" 
     capture_lex $P81
-    .const 'Sub' $P69 = "22_1279564390.79897" 
+    .const 'Sub' $P69 = "22_1279589163.12187" 
     capture_lex $P69
-    .const 'Sub' $P62 = "20_1279564390.79897" 
+    .const 'Sub' $P62 = "20_1279589163.12187" 
     capture_lex $P62
-    .const 'Sub' $P55 = "18_1279564390.79897" 
+    .const 'Sub' $P55 = "18_1279589163.12187" 
     capture_lex $P55
-    .const 'Sub' $P45 = "15_1279564390.79897" 
+    .const 'Sub' $P45 = "15_1279589163.12187" 
     capture_lex $P45
-    .const 'Sub' $P38 = "13_1279564390.79897" 
+    .const 'Sub' $P38 = "13_1279589163.12187" 
     capture_lex $P38
-    .const 'Sub' $P15 = "12_1279564390.79897" 
+    .const 'Sub' $P15 = "12_1279589163.12187" 
     capture_lex $P15
     $P0 = find_dynamic_lex "$*CTXSAVE"
     if null $P0 goto ctxsave_done
@@ -184,17 +184,17 @@
     unless $I0 goto ctxsave_done
     $P0."ctxsave"()
   ctxsave_done:
-    .const 'Sub' $P562 = "158_1279564390.79897" 
+    .const 'Sub' $P562 = "158_1279589163.12187" 
     capture_lex $P562
     .return ($P562)
-    .const 'Sub' $P570 = "160_1279564390.79897" 
+    .const 'Sub' $P570 = "160_1279589163.12187" 
     .return ($P570)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
 .include "except_types.pasm"
-.sub "obs"  :subid("12_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "obs"  :subid("12_1279589163.12187") :method :outer("11_1279589163.12187")
     .param pmc param_18
     .param pmc param_19
     .param pmc param_20 :optional
@@ -242,7 +242,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "ws"  :subid("13_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "ws"  :subid("13_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx39_tgt
     .local int rx39_pos
@@ -330,7 +330,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__ws"  :subid("14_1279564390.79897") :method
+.sub "!PREFIX__ws"  :subid("14_1279589163.12187") :method
 .annotate 'line', 3
     new $P41, "ResizablePMCArray"
     push $P41, ""
@@ -339,9 +339,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "normspace"  :subid("15_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "normspace"  :subid("15_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
-    .const 'Sub' $P51 = "17_1279564390.79897" 
+    .const 'Sub' $P51 = "17_1279589163.12187" 
     capture_lex $P51
     .local string rx46_tgt
     .local int rx46_pos
@@ -377,7 +377,7 @@
 .annotate 'line', 10
   # rx subrule "before" subtype=zerowidth negate=
     rx46_cur."!cursor_pos"(rx46_pos)
-    .const 'Sub' $P51 = "17_1279564390.79897" 
+    .const 'Sub' $P51 = "17_1279589163.12187" 
     capture_lex $P51
     $P10 = rx46_cur."before"($P51)
     unless $P10, rx46_fail
@@ -407,7 +407,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__normspace"  :subid("16_1279564390.79897") :method
+.sub "!PREFIX__normspace"  :subid("16_1279589163.12187") :method
 .annotate 'line', 3
     new $P48, "ResizablePMCArray"
     push $P48, ""
@@ -416,7 +416,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block50"  :anon :subid("17_1279564390.79897") :method :outer("15_1279564390.79897")
+.sub "_block50"  :anon :subid("17_1279589163.12187") :method :outer("15_1279589163.12187")
 .annotate 'line', 10
     .local string rx52_tgt
     .local int rx52_pos
@@ -488,7 +488,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "identifier"  :subid("18_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "identifier"  :subid("18_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx56_tgt
     .local int rx56_pos
@@ -570,7 +570,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__identifier"  :subid("19_1279564390.79897") :method
+.sub "!PREFIX__identifier"  :subid("19_1279589163.12187") :method
 .annotate 'line', 3
     $P58 = self."!PREFIX__!subrule"("ident", "")
     new $P59, "ResizablePMCArray"
@@ -580,7 +580,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arg"  :subid("20_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "arg"  :subid("20_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx63_tgt
     .local int rx63_pos
@@ -695,7 +695,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arg"  :subid("21_1279564390.79897") :method
+.sub "!PREFIX__arg"  :subid("21_1279589163.12187") :method
 .annotate 'line', 3
     new $P65, "ResizablePMCArray"
     push $P65, ""
@@ -706,7 +706,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arglist"  :subid("22_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "arglist"  :subid("22_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx70_tgt
     .local int rx70_pos
@@ -818,7 +818,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("23_1279564390.79897") :method
+.sub "!PREFIX__arglist"  :subid("23_1279589163.12187") :method
 .annotate 'line', 3
     $P72 = self."!PREFIX__!subrule"("ws", "")
     new $P73, "ResizablePMCArray"
@@ -828,7 +828,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "TOP"  :subid("24_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "TOP"  :subid("24_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx82_tgt
     .local int rx82_pos
@@ -905,7 +905,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__TOP"  :subid("25_1279564390.79897") :method
+.sub "!PREFIX__TOP"  :subid("25_1279589163.12187") :method
 .annotate 'line', 3
     $P84 = self."!PREFIX__!subrule"("nibbler", "")
     new $P85, "ResizablePMCArray"
@@ -915,7 +915,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "nibbler"  :subid("26_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "nibbler"  :subid("26_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx89_tgt
     .local int rx89_pos
@@ -1090,7 +1090,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__nibbler"  :subid("27_1279564390.79897") :method
+.sub "!PREFIX__nibbler"  :subid("27_1279589163.12187") :method
 .annotate 'line', 3
     new $P91, "ResizablePMCArray"
     push $P91, ""
@@ -1099,7 +1099,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "termish"  :subid("28_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "termish"  :subid("28_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx99_tgt
     .local int rx99_pos
@@ -1179,7 +1179,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__termish"  :subid("29_1279564390.79897") :method
+.sub "!PREFIX__termish"  :subid("29_1279589163.12187") :method
 .annotate 'line', 3
     new $P101, "ResizablePMCArray"
     push $P101, ""
@@ -1188,9 +1188,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantified_atom"  :subid("30_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "quantified_atom"  :subid("30_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
-    .const 'Sub' $P114 = "32_1279564390.79897" 
+    .const 'Sub' $P114 = "32_1279589163.12187" 
     capture_lex $P114
     .local string rx106_tgt
     .local int rx106_pos
@@ -1255,7 +1255,7 @@
   alt112_1:
   # rx subrule "before" subtype=zerowidth negate=
     rx106_cur."!cursor_pos"(rx106_pos)
-    .const 'Sub' $P114 = "32_1279564390.79897" 
+    .const 'Sub' $P114 = "32_1279589163.12187" 
     capture_lex $P114
     $P10 = rx106_cur."before"($P114)
     unless $P10, rx106_fail
@@ -1296,7 +1296,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantified_atom"  :subid("31_1279564390.79897") :method
+.sub "!PREFIX__quantified_atom"  :subid("31_1279589163.12187") :method
 .annotate 'line', 3
     $P108 = self."!PREFIX__!subrule"("atom", "")
     new $P109, "ResizablePMCArray"
@@ -1306,7 +1306,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block113"  :anon :subid("32_1279564390.79897") :method :outer("30_1279564390.79897")
+.sub "_block113"  :anon :subid("32_1279589163.12187") :method :outer("30_1279589163.12187")
 .annotate 'line', 43
     .local string rx115_tgt
     .local int rx115_pos
@@ -1366,9 +1366,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "atom"  :subid("33_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "atom"  :subid("33_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
-    .const 'Sub' $P127 = "35_1279564390.79897" 
+    .const 'Sub' $P127 = "35_1279589163.12187" 
     capture_lex $P127
     .local string rx118_tgt
     .local int rx118_pos
@@ -1430,7 +1430,7 @@
   rxquantg125_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx118_cur."!cursor_pos"(rx118_pos)
-    .const 'Sub' $P127 = "35_1279564390.79897" 
+    .const 'Sub' $P127 = "35_1279589163.12187" 
     capture_lex $P127
     $P10 = rx118_cur."before"($P127)
     unless $P10, rx118_fail
@@ -1470,7 +1470,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__atom"  :subid("34_1279564390.79897") :method
+.sub "!PREFIX__atom"  :subid("34_1279589163.12187") :method
 .annotate 'line', 3
     $P120 = self."!PREFIX__!subrule"("metachar", "")
     new $P121, "ResizablePMCArray"
@@ -1481,7 +1481,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block126"  :anon :subid("35_1279564390.79897") :method :outer("33_1279564390.79897")
+.sub "_block126"  :anon :subid("35_1279589163.12187") :method :outer("33_1279589163.12187")
 .annotate 'line', 49
     .local string rx128_tgt
     .local int rx128_pos
@@ -1540,7 +1540,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier"  :subid("36_1279564390.79897") :method
+.sub "quantifier"  :subid("36_1279589163.12187") :method
 .annotate 'line', 54
     $P131 = self."!protoregex"("quantifier")
     .return ($P131)
@@ -1548,7 +1548,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier"  :subid("37_1279564390.79897") :method
+.sub "!PREFIX__quantifier"  :subid("37_1279589163.12187") :method
 .annotate 'line', 54
     $P133 = self."!PREFIX__!protoregex"("quantifier")
     .return ($P133)
@@ -1556,7 +1556,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<*>"  :subid("38_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "quantifier:sym<*>"  :subid("38_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx135_tgt
     .local int rx135_pos
@@ -1639,7 +1639,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<*>"  :subid("39_1279564390.79897") :method
+.sub "!PREFIX__quantifier:sym<*>"  :subid("39_1279589163.12187") :method
 .annotate 'line', 3
     $P137 = self."!PREFIX__!subrule"("backmod", "*")
     new $P138, "ResizablePMCArray"
@@ -1649,7 +1649,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<+>"  :subid("40_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "quantifier:sym<+>"  :subid("40_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx142_tgt
     .local int rx142_pos
@@ -1732,7 +1732,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<+>"  :subid("41_1279564390.79897") :method
+.sub "!PREFIX__quantifier:sym<+>"  :subid("41_1279589163.12187") :method
 .annotate 'line', 3
     $P144 = self."!PREFIX__!subrule"("backmod", "+")
     new $P145, "ResizablePMCArray"
@@ -1742,7 +1742,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<?>"  :subid("42_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "quantifier:sym<?>"  :subid("42_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx149_tgt
     .local int rx149_pos
@@ -1825,7 +1825,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<?>"  :subid("43_1279564390.79897") :method
+.sub "!PREFIX__quantifier:sym<?>"  :subid("43_1279589163.12187") :method
 .annotate 'line', 3
     $P151 = self."!PREFIX__!subrule"("backmod", "?")
     new $P152, "ResizablePMCArray"
@@ -1835,7 +1835,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<**>"  :subid("44_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "quantifier:sym<**>"  :subid("44_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx156_tgt
     .local int rx156_pos
@@ -2061,7 +2061,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<**>"  :subid("45_1279564390.79897") :method
+.sub "!PREFIX__quantifier:sym<**>"  :subid("45_1279589163.12187") :method
 .annotate 'line', 3
     new $P158, "ResizablePMCArray"
     push $P158, "**"
@@ -2070,9 +2070,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backmod"  :subid("46_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backmod"  :subid("46_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
-    .const 'Sub' $P178 = "48_1279564390.79897" 
+    .const 'Sub' $P178 = "48_1279589163.12187" 
     capture_lex $P178
     .local string rx171_tgt
     .local int rx171_pos
@@ -2145,7 +2145,7 @@
   alt176_2:
   # rx subrule "before" subtype=zerowidth negate=1
     rx171_cur."!cursor_pos"(rx171_pos)
-    .const 'Sub' $P178 = "48_1279564390.79897" 
+    .const 'Sub' $P178 = "48_1279589163.12187" 
     capture_lex $P178
     $P10 = rx171_cur."before"($P178)
     if $P10, rx171_fail
@@ -2171,7 +2171,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backmod"  :subid("47_1279564390.79897") :method
+.sub "!PREFIX__backmod"  :subid("47_1279589163.12187") :method
 .annotate 'line', 3
     new $P173, "ResizablePMCArray"
     push $P173, ""
@@ -2180,7 +2180,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block177"  :anon :subid("48_1279564390.79897") :method :outer("46_1279564390.79897")
+.sub "_block177"  :anon :subid("48_1279589163.12187") :method :outer("46_1279589163.12187")
 .annotate 'line', 73
     .local string rx179_tgt
     .local int rx179_pos
@@ -2240,7 +2240,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar"  :subid("49_1279564390.79897") :method
+.sub "metachar"  :subid("49_1279589163.12187") :method
 .annotate 'line', 75
     $P182 = self."!protoregex"("metachar")
     .return ($P182)
@@ -2248,7 +2248,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar"  :subid("50_1279564390.79897") :method
+.sub "!PREFIX__metachar"  :subid("50_1279589163.12187") :method
 .annotate 'line', 75
     $P184 = self."!PREFIX__!protoregex"("metachar")
     .return ($P184)
@@ -2256,7 +2256,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<ws>"  :subid("51_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<ws>"  :subid("51_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx186_tgt
     .local int rx186_pos
@@ -2316,7 +2316,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<ws>"  :subid("52_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<ws>"  :subid("52_1279589163.12187") :method
 .annotate 'line', 3
     $P188 = self."!PREFIX__!subrule"("normspace", "")
     new $P189, "ResizablePMCArray"
@@ -2326,7 +2326,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<[ ]>"  :subid("53_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<[ ]>"  :subid("53_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx192_tgt
     .local int rx192_pos
@@ -2402,7 +2402,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<[ ]>"  :subid("54_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<[ ]>"  :subid("54_1279589163.12187") :method
 .annotate 'line', 3
     $P194 = self."!PREFIX__!subrule"("nibbler", "[")
     new $P195, "ResizablePMCArray"
@@ -2412,7 +2412,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<( )>"  :subid("55_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<( )>"  :subid("55_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx198_tgt
     .local int rx198_pos
@@ -2488,7 +2488,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<( )>"  :subid("56_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<( )>"  :subid("56_1279589163.12187") :method
 .annotate 'line', 3
     $P200 = self."!PREFIX__!subrule"("nibbler", "(")
     new $P201, "ResizablePMCArray"
@@ -2498,7 +2498,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<'>"  :subid("57_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<'>"  :subid("57_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx204_tgt
     .local int rx204_pos
@@ -2566,7 +2566,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<'>"  :subid("58_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<'>"  :subid("58_1279589163.12187") :method
 .annotate 'line', 3
     new $P206, "ResizablePMCArray"
     push $P206, "'"
@@ -2575,7 +2575,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<\">"  :subid("59_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<\">"  :subid("59_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx209_tgt
     .local int rx209_pos
@@ -2643,7 +2643,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<\">"  :subid("60_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<\">"  :subid("60_1279589163.12187") :method
 .annotate 'line', 3
     new $P211, "ResizablePMCArray"
     push $P211, "\""
@@ -2652,7 +2652,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<.>"  :subid("61_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<.>"  :subid("61_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx214_tgt
     .local int rx214_pos
@@ -2728,7 +2728,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<.>"  :subid("62_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<.>"  :subid("62_1279589163.12187") :method
 .annotate 'line', 3
     new $P216, "ResizablePMCArray"
     push $P216, "."
@@ -2737,7 +2737,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^>"  :subid("63_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<^>"  :subid("63_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx220_tgt
     .local int rx220_pos
@@ -2813,7 +2813,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^>"  :subid("64_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<^>"  :subid("64_1279589163.12187") :method
 .annotate 'line', 3
     new $P222, "ResizablePMCArray"
     push $P222, "^"
@@ -2822,7 +2822,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^^>"  :subid("65_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<^^>"  :subid("65_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx226_tgt
     .local int rx226_pos
@@ -2898,7 +2898,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^^>"  :subid("66_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<^^>"  :subid("66_1279589163.12187") :method
 .annotate 'line', 3
     new $P228, "ResizablePMCArray"
     push $P228, "^^"
@@ -2907,7 +2907,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$>"  :subid("67_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<$>"  :subid("67_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx232_tgt
     .local int rx232_pos
@@ -2983,7 +2983,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$>"  :subid("68_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<$>"  :subid("68_1279589163.12187") :method
 .annotate 'line', 3
     new $P234, "ResizablePMCArray"
     push $P234, "$"
@@ -2992,7 +2992,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$$>"  :subid("69_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<$$>"  :subid("69_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx238_tgt
     .local int rx238_pos
@@ -3068,7 +3068,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$$>"  :subid("70_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<$$>"  :subid("70_1279589163.12187") :method
 .annotate 'line', 3
     new $P240, "ResizablePMCArray"
     push $P240, "$$"
@@ -3077,7 +3077,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<:::>"  :subid("71_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<:::>"  :subid("71_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx244_tgt
     .local int rx244_pos
@@ -3158,7 +3158,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<:::>"  :subid("72_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<:::>"  :subid("72_1279589163.12187") :method
 .annotate 'line', 3
     $P246 = self."!PREFIX__!subrule"("panic", ":::")
     new $P247, "ResizablePMCArray"
@@ -3168,7 +3168,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<::>"  :subid("73_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<::>"  :subid("73_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx251_tgt
     .local int rx251_pos
@@ -3249,7 +3249,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<::>"  :subid("74_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<::>"  :subid("74_1279589163.12187") :method
 .annotate 'line', 3
     $P253 = self."!PREFIX__!subrule"("panic", "::")
     new $P254, "ResizablePMCArray"
@@ -3259,7 +3259,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<lwb>"  :subid("75_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<lwb>"  :subid("75_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx258_tgt
     .local int rx258_pos
@@ -3348,7 +3348,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<lwb>"  :subid("76_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<lwb>"  :subid("76_1279589163.12187") :method
 .annotate 'line', 3
     new $P260, "ResizablePMCArray"
     push $P260, unicode:"\x{ab}"
@@ -3358,7 +3358,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<rwb>"  :subid("77_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<rwb>"  :subid("77_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx265_tgt
     .local int rx265_pos
@@ -3447,7 +3447,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<rwb>"  :subid("78_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<rwb>"  :subid("78_1279589163.12187") :method
 .annotate 'line', 3
     new $P267, "ResizablePMCArray"
     push $P267, unicode:"\x{bb}"
@@ -3457,7 +3457,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<bs>"  :subid("79_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<bs>"  :subid("79_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx272_tgt
     .local int rx272_pos
@@ -3526,7 +3526,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<bs>"  :subid("80_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<bs>"  :subid("80_1279589163.12187") :method
 .annotate 'line', 3
     $P274 = self."!PREFIX__!subrule"("backslash", "\\")
     new $P275, "ResizablePMCArray"
@@ -3536,7 +3536,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<mod>"  :subid("81_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<mod>"  :subid("81_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx278_tgt
     .local int rx278_pos
@@ -3598,7 +3598,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<mod>"  :subid("82_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<mod>"  :subid("82_1279589163.12187") :method
 .annotate 'line', 3
     $P280 = self."!PREFIX__!subrule"("mod_internal", "")
     new $P281, "ResizablePMCArray"
@@ -3608,7 +3608,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<~>"  :subid("83_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<~>"  :subid("83_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx284_tgt
     .local int rx284_pos
@@ -3711,7 +3711,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<~>"  :subid("84_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<~>"  :subid("84_1279589163.12187") :method
 .annotate 'line', 3
     $P286 = self."!PREFIX__!subrule"("ws", "~")
     new $P287, "ResizablePMCArray"
@@ -3721,7 +3721,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<{*}>"  :subid("85_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<{*}>"  :subid("85_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx291_tgt
     .local int rx291_pos
@@ -3901,7 +3901,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<{*}>"  :subid("86_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<{*}>"  :subid("86_1279589163.12187") :method
 .annotate 'line', 3
     new $P293, "ResizablePMCArray"
     push $P293, "{*}"
@@ -3910,7 +3910,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<assert>"  :subid("87_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<assert>"  :subid("87_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx303_tgt
     .local int rx303_pos
@@ -3999,7 +3999,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<assert>"  :subid("88_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<assert>"  :subid("88_1279589163.12187") :method
 .annotate 'line', 3
     $P305 = self."!PREFIX__!subrule"("assertion", "<")
     new $P306, "ResizablePMCArray"
@@ -4009,7 +4009,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<var>"  :subid("89_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<var>"  :subid("89_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx310_tgt
     .local int rx310_pos
@@ -4178,7 +4178,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<var>"  :subid("90_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<var>"  :subid("90_1279589163.12187") :method
 .annotate 'line', 3
     new $P312, "ResizablePMCArray"
     push $P312, "$"
@@ -4188,7 +4188,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<PIR>"  :subid("91_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "metachar:sym<PIR>"  :subid("91_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx320_tgt
     .local int rx320_pos
@@ -4283,7 +4283,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<PIR>"  :subid("92_1279564390.79897") :method
+.sub "!PREFIX__metachar:sym<PIR>"  :subid("92_1279589163.12187") :method
 .annotate 'line', 3
     new $P322, "ResizablePMCArray"
     push $P322, ":PIR{{"
@@ -4292,7 +4292,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash"  :subid("93_1279564390.79897") :method
+.sub "backslash"  :subid("93_1279589163.12187") :method
 .annotate 'line', 122
     $P328 = self."!protoregex"("backslash")
     .return ($P328)
@@ -4300,7 +4300,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash"  :subid("94_1279564390.79897") :method
+.sub "!PREFIX__backslash"  :subid("94_1279589163.12187") :method
 .annotate 'line', 122
     $P330 = self."!PREFIX__!protoregex"("backslash")
     .return ($P330)
@@ -4308,7 +4308,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<w>"  :subid("95_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<w>"  :subid("95_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx332_tgt
     .local int rx332_pos
@@ -4384,7 +4384,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<w>"  :subid("96_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<w>"  :subid("96_1279589163.12187") :method
 .annotate 'line', 3
     new $P334, "ResizablePMCArray"
     push $P334, "N"
@@ -4400,7 +4400,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<b>"  :subid("97_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<b>"  :subid("97_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx338_tgt
     .local int rx338_pos
@@ -4476,7 +4476,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<b>"  :subid("98_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<b>"  :subid("98_1279589163.12187") :method
 .annotate 'line', 3
     new $P340, "ResizablePMCArray"
     push $P340, "B"
@@ -4486,7 +4486,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<e>"  :subid("99_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<e>"  :subid("99_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx344_tgt
     .local int rx344_pos
@@ -4562,7 +4562,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<e>"  :subid("100_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<e>"  :subid("100_1279589163.12187") :method
 .annotate 'line', 3
     new $P346, "ResizablePMCArray"
     push $P346, "E"
@@ -4572,7 +4572,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<f>"  :subid("101_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<f>"  :subid("101_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx350_tgt
     .local int rx350_pos
@@ -4648,7 +4648,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<f>"  :subid("102_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<f>"  :subid("102_1279589163.12187") :method
 .annotate 'line', 3
     new $P352, "ResizablePMCArray"
     push $P352, "F"
@@ -4658,7 +4658,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<h>"  :subid("103_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<h>"  :subid("103_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx356_tgt
     .local int rx356_pos
@@ -4734,7 +4734,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<h>"  :subid("104_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<h>"  :subid("104_1279589163.12187") :method
 .annotate 'line', 3
     new $P358, "ResizablePMCArray"
     push $P358, "H"
@@ -4744,7 +4744,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<r>"  :subid("105_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<r>"  :subid("105_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx362_tgt
     .local int rx362_pos
@@ -4820,7 +4820,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<r>"  :subid("106_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<r>"  :subid("106_1279589163.12187") :method
 .annotate 'line', 3
     new $P364, "ResizablePMCArray"
     push $P364, "R"
@@ -4830,7 +4830,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<t>"  :subid("107_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<t>"  :subid("107_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx368_tgt
     .local int rx368_pos
@@ -4906,7 +4906,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<t>"  :subid("108_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<t>"  :subid("108_1279589163.12187") :method
 .annotate 'line', 3
     new $P370, "ResizablePMCArray"
     push $P370, "T"
@@ -4916,7 +4916,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<v>"  :subid("109_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<v>"  :subid("109_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx374_tgt
     .local int rx374_pos
@@ -4992,7 +4992,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<v>"  :subid("110_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<v>"  :subid("110_1279589163.12187") :method
 .annotate 'line', 3
     new $P376, "ResizablePMCArray"
     push $P376, "V"
@@ -5002,7 +5002,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<o>"  :subid("111_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<o>"  :subid("111_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx380_tgt
     .local int rx380_pos
@@ -5112,7 +5112,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<o>"  :subid("112_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<o>"  :subid("112_1279589163.12187") :method
 .annotate 'line', 3
     $P382 = self."!PREFIX__!subrule"("octints", "O[")
     $P383 = self."!PREFIX__!subrule"("octint", "O")
@@ -5128,7 +5128,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<x>"  :subid("113_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<x>"  :subid("113_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx391_tgt
     .local int rx391_pos
@@ -5238,7 +5238,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<x>"  :subid("114_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<x>"  :subid("114_1279589163.12187") :method
 .annotate 'line', 3
     $P393 = self."!PREFIX__!subrule"("hexints", "X[")
     $P394 = self."!PREFIX__!subrule"("hexint", "X")
@@ -5254,7 +5254,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<c>"  :subid("115_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<c>"  :subid("115_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx402_tgt
     .local int rx402_pos
@@ -5337,7 +5337,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<c>"  :subid("116_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<c>"  :subid("116_1279589163.12187") :method
 .annotate 'line', 3
     $P404 = self."!PREFIX__!subrule"("charspec", "C")
     $P405 = self."!PREFIX__!subrule"("charspec", "c")
@@ -5349,7 +5349,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<A>"  :subid("117_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<A>"  :subid("117_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx410_tgt
     .local int rx410_pos
@@ -5416,7 +5416,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<A>"  :subid("118_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<A>"  :subid("118_1279589163.12187") :method
 .annotate 'line', 3
     $P412 = self."!PREFIX__!subrule"("obs", "A")
     new $P413, "ResizablePMCArray"
@@ -5426,7 +5426,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<z>"  :subid("119_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<z>"  :subid("119_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx416_tgt
     .local int rx416_pos
@@ -5493,7 +5493,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<z>"  :subid("120_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<z>"  :subid("120_1279589163.12187") :method
 .annotate 'line', 3
     $P418 = self."!PREFIX__!subrule"("obs", "z")
     new $P419, "ResizablePMCArray"
@@ -5503,7 +5503,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Z>"  :subid("121_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<Z>"  :subid("121_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx422_tgt
     .local int rx422_pos
@@ -5570,7 +5570,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Z>"  :subid("122_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<Z>"  :subid("122_1279589163.12187") :method
 .annotate 'line', 3
     $P424 = self."!PREFIX__!subrule"("obs", "Z")
     new $P425, "ResizablePMCArray"
@@ -5580,7 +5580,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Q>"  :subid("123_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<Q>"  :subid("123_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx428_tgt
     .local int rx428_pos
@@ -5647,7 +5647,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Q>"  :subid("124_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<Q>"  :subid("124_1279589163.12187") :method
 .annotate 'line', 3
     $P430 = self."!PREFIX__!subrule"("obs", "Q")
     new $P431, "ResizablePMCArray"
@@ -5657,7 +5657,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<misc>"  :subid("125_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "backslash:sym<misc>"  :subid("125_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx434_tgt
     .local int rx434_pos
@@ -5718,7 +5718,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<misc>"  :subid("126_1279564390.79897") :method
+.sub "!PREFIX__backslash:sym<misc>"  :subid("126_1279589163.12187") :method
 .annotate 'line', 3
     new $P436, "ResizablePMCArray"
     push $P436, ""
@@ -5727,7 +5727,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion"  :subid("127_1279564390.79897") :method
+.sub "assertion"  :subid("127_1279589163.12187") :method
 .annotate 'line', 140
     $P439 = self."!protoregex"("assertion")
     .return ($P439)
@@ -5735,7 +5735,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion"  :subid("128_1279564390.79897") :method
+.sub "!PREFIX__assertion"  :subid("128_1279589163.12187") :method
 .annotate 'line', 140
     $P441 = self."!PREFIX__!protoregex"("assertion")
     .return ($P441)
@@ -5743,9 +5743,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<?>"  :subid("129_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "assertion:sym<?>"  :subid("129_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
-    .const 'Sub' $P450 = "131_1279564390.79897" 
+    .const 'Sub' $P450 = "131_1279589163.12187" 
     capture_lex $P450
     .local string rx443_tgt
     .local int rx443_pos
@@ -5791,7 +5791,7 @@
     rx443_cur."!mark_push"(0, rx443_pos, $I10)
   # rx subrule "before" subtype=zerowidth negate=
     rx443_cur."!cursor_pos"(rx443_pos)
-    .const 'Sub' $P450 = "131_1279564390.79897" 
+    .const 'Sub' $P450 = "131_1279589163.12187" 
     capture_lex $P450
     $P10 = rx443_cur."before"($P450)
     unless $P10, rx443_fail
@@ -5826,7 +5826,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<?>"  :subid("130_1279564390.79897") :method
+.sub "!PREFIX__assertion:sym<?>"  :subid("130_1279589163.12187") :method
 .annotate 'line', 3
     $P445 = self."!PREFIX__!subrule"("assertion", "?")
     new $P446, "ResizablePMCArray"
@@ -5837,7 +5837,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block449"  :anon :subid("131_1279564390.79897") :method :outer("129_1279564390.79897")
+.sub "_block449"  :anon :subid("131_1279589163.12187") :method :outer("129_1279589163.12187")
 .annotate 'line', 142
     .local string rx451_tgt
     .local int rx451_pos
@@ -5897,9 +5897,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<!>"  :subid("132_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "assertion:sym<!>"  :subid("132_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
-    .const 'Sub' $P461 = "134_1279564390.79897" 
+    .const 'Sub' $P461 = "134_1279589163.12187" 
     capture_lex $P461
     .local string rx454_tgt
     .local int rx454_pos
@@ -5945,7 +5945,7 @@
     rx454_cur."!mark_push"(0, rx454_pos, $I10)
   # rx subrule "before" subtype=zerowidth negate=
     rx454_cur."!cursor_pos"(rx454_pos)
-    .const 'Sub' $P461 = "134_1279564390.79897" 
+    .const 'Sub' $P461 = "134_1279589163.12187" 
     capture_lex $P461
     $P10 = rx454_cur."before"($P461)
     unless $P10, rx454_fail
@@ -5980,7 +5980,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<!>"  :subid("133_1279564390.79897") :method
+.sub "!PREFIX__assertion:sym<!>"  :subid("133_1279589163.12187") :method
 .annotate 'line', 3
     $P456 = self."!PREFIX__!subrule"("assertion", "!")
     new $P457, "ResizablePMCArray"
@@ -5991,7 +5991,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block460"  :anon :subid("134_1279564390.79897") :method :outer("132_1279564390.79897")
+.sub "_block460"  :anon :subid("134_1279589163.12187") :method :outer("132_1279589163.12187")
 .annotate 'line', 143
     .local string rx462_tgt
     .local int rx462_pos
@@ -6051,7 +6051,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<method>"  :subid("135_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "assertion:sym<method>"  :subid("135_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx465_tgt
     .local int rx465_pos
@@ -6121,7 +6121,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<method>"  :subid("136_1279564390.79897") :method
+.sub "!PREFIX__assertion:sym<method>"  :subid("136_1279589163.12187") :method
 .annotate 'line', 3
     $P467 = self."!PREFIX__!subrule"("assertion", ".")
     new $P468, "ResizablePMCArray"
@@ -6131,9 +6131,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<name>"  :subid("137_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "assertion:sym<name>"  :subid("137_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
-    .const 'Sub' $P479 = "139_1279564390.79897" 
+    .const 'Sub' $P479 = "139_1279589163.12187" 
     capture_lex $P479
     .local string rx471_tgt
     .local int rx471_pos
@@ -6142,7 +6142,7 @@
     .local int rx471_rep
     .local pmc rx471_cur
     (rx471_cur, rx471_pos, rx471_tgt, $I10) = self."!cursor_start"()
-    rx471_cur."!cursor_caparray"("nibbler", "arglist", "assertion")
+    rx471_cur."!cursor_caparray"("arglist", "nibbler", "assertion")
     .lex unicode:"$\x{a2}", rx471_cur
     .local pmc match
     .lex "$/", match
@@ -6187,7 +6187,7 @@
 .annotate 'line', 152
   # rx subrule "before" subtype=zerowidth negate=
     rx471_cur."!cursor_pos"(rx471_pos)
-    .const 'Sub' $P479 = "139_1279564390.79897" 
+    .const 'Sub' $P479 = "139_1279589163.12187" 
     capture_lex $P479
     $P10 = rx471_cur."before"($P479)
     unless $P10, rx471_fail
@@ -6297,7 +6297,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<name>"  :subid("138_1279564390.79897") :method
+.sub "!PREFIX__assertion:sym<name>"  :subid("138_1279589163.12187") :method
 .annotate 'line', 3
     $P473 = self."!PREFIX__!subrule"("identifier", "")
     new $P474, "ResizablePMCArray"
@@ -6307,7 +6307,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block478"  :anon :subid("139_1279564390.79897") :method :outer("137_1279564390.79897")
+.sub "_block478"  :anon :subid("139_1279589163.12187") :method :outer("137_1279589163.12187")
 .annotate 'line', 152
     .local string rx480_tgt
     .local int rx480_pos
@@ -6367,9 +6367,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<[>"  :subid("140_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "assertion:sym<[>"  :subid("140_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
-    .const 'Sub' $P488 = "142_1279564390.79897" 
+    .const 'Sub' $P488 = "142_1279589163.12187" 
     capture_lex $P488
     .local string rx483_tgt
     .local int rx483_pos
@@ -6406,7 +6406,7 @@
 .annotate 'line', 160
   # rx subrule "before" subtype=zerowidth negate=
     rx483_cur."!cursor_pos"(rx483_pos)
-    .const 'Sub' $P488 = "142_1279564390.79897" 
+    .const 'Sub' $P488 = "142_1279589163.12187" 
     capture_lex $P488
     $P10 = rx483_cur."before"($P488)
     unless $P10, rx483_fail
@@ -6454,7 +6454,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<[>"  :subid("141_1279564390.79897") :method
+.sub "!PREFIX__assertion:sym<[>"  :subid("141_1279589163.12187") :method
 .annotate 'line', 3
     new $P485, "ResizablePMCArray"
     push $P485, ""
@@ -6463,7 +6463,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block487"  :anon :subid("142_1279564390.79897") :method :outer("140_1279564390.79897")
+.sub "_block487"  :anon :subid("142_1279589163.12187") :method :outer("140_1279589163.12187")
 .annotate 'line', 160
     .local string rx489_tgt
     .local int rx489_pos
@@ -6547,9 +6547,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "cclass_elem"  :subid("143_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "cclass_elem"  :subid("143_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
-    .const 'Sub' $P506 = "145_1279564390.79897" 
+    .const 'Sub' $P506 = "145_1279589163.12187" 
     capture_lex $P506
     .local string rx495_tgt
     .local int rx495_pos
@@ -6662,7 +6662,7 @@
 .annotate 'line', 166
   # rx subrule $P506 subtype=capture negate=
     rx495_cur."!cursor_pos"(rx495_pos)
-    .const 'Sub' $P506 = "145_1279564390.79897" 
+    .const 'Sub' $P506 = "145_1279589163.12187" 
     capture_lex $P506
     $P10 = rx495_cur.$P506()
     unless $P10, rx495_fail
@@ -6761,7 +6761,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__cclass_elem"  :subid("144_1279564390.79897") :method
+.sub "!PREFIX__cclass_elem"  :subid("144_1279589163.12187") :method
 .annotate 'line', 3
     new $P497, "ResizablePMCArray"
     push $P497, ""
@@ -6772,13 +6772,13 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block505"  :anon :subid("145_1279564390.79897") :method :outer("143_1279564390.79897")
+.sub "_block505"  :anon :subid("145_1279589163.12187") :method :outer("143_1279589163.12187")
 .annotate 'line', 166
-    .const 'Sub' $P521 = "148_1279564390.79897" 
+    .const 'Sub' $P521 = "148_1279589163.12187" 
     capture_lex $P521
-    .const 'Sub' $P516 = "147_1279564390.79897" 
+    .const 'Sub' $P516 = "147_1279589163.12187" 
     capture_lex $P516
-    .const 'Sub' $P512 = "146_1279564390.79897" 
+    .const 'Sub' $P512 = "146_1279589163.12187" 
     capture_lex $P512
     .local string rx507_tgt
     .local int rx507_pos
@@ -6851,7 +6851,7 @@
     add rx507_pos, 1
   # rx subrule $P512 subtype=capture negate=
     rx507_cur."!cursor_pos"(rx507_pos)
-    .const 'Sub' $P512 = "146_1279564390.79897" 
+    .const 'Sub' $P512 = "146_1279589163.12187" 
     capture_lex $P512
     $P10 = rx507_cur.$P512()
     unless $P10, rx507_fail
@@ -6862,7 +6862,7 @@
   alt510_1:
   # rx subrule $P516 subtype=capture negate=
     rx507_cur."!cursor_pos"(rx507_pos)
-    .const 'Sub' $P516 = "147_1279564390.79897" 
+    .const 'Sub' $P516 = "147_1279589163.12187" 
     capture_lex $P516
     $P10 = rx507_cur.$P516()
     unless $P10, rx507_fail
@@ -6891,7 +6891,7 @@
     add rx507_pos, rx507_off, $I11
   # rx subrule $P521 subtype=capture negate=
     rx507_cur."!cursor_pos"(rx507_pos)
-    .const 'Sub' $P521 = "148_1279564390.79897" 
+    .const 'Sub' $P521 = "148_1279589163.12187" 
     capture_lex $P521
     $P10 = rx507_cur.$P521()
     unless $P10, rx507_fail
@@ -6923,7 +6923,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block511"  :anon :subid("146_1279564390.79897") :method :outer("145_1279564390.79897")
+.sub "_block511"  :anon :subid("146_1279589163.12187") :method :outer("145_1279589163.12187")
 .annotate 'line', 168
     .local string rx513_tgt
     .local int rx513_pos
@@ -6979,7 +6979,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block515"  :anon :subid("147_1279564390.79897") :method :outer("145_1279564390.79897")
+.sub "_block515"  :anon :subid("147_1279589163.12187") :method :outer("145_1279589163.12187")
 .annotate 'line', 168
     .local string rx517_tgt
     .local int rx517_pos
@@ -7039,7 +7039,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block520"  :anon :subid("148_1279564390.79897") :method :outer("145_1279564390.79897")
+.sub "_block520"  :anon :subid("148_1279589163.12187") :method :outer("145_1279589163.12187")
 .annotate 'line', 168
     .local string rx522_tgt
     .local int rx522_pos
@@ -7095,9 +7095,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_internal"  :subid("149_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "mod_internal"  :subid("149_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
-    .const 'Sub' $P537 = "151_1279564390.79897" 
+    .const 'Sub' $P537 = "151_1279589163.12187" 
     capture_lex $P537
     .local string rx529_tgt
     .local int rx529_pos
@@ -7149,7 +7149,7 @@
   rxquantr535_loop:
   # rx subrule $P537 subtype=capture negate=
     rx529_cur."!cursor_pos"(rx529_pos)
-    .const 'Sub' $P537 = "151_1279564390.79897" 
+    .const 'Sub' $P537 = "151_1279589163.12187" 
     capture_lex $P537
     $P10 = rx529_cur.$P537()
     unless $P10, rx529_fail
@@ -7261,7 +7261,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_internal"  :subid("150_1279564390.79897") :method
+.sub "!PREFIX__mod_internal"  :subid("150_1279589163.12187") :method
 .annotate 'line', 3
     $P531 = self."!PREFIX__!subrule"("mod_ident", ":")
     new $P532, "ResizablePMCArray"
@@ -7272,7 +7272,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block536"  :anon :subid("151_1279564390.79897") :method :outer("149_1279564390.79897")
+.sub "_block536"  :anon :subid("151_1279589163.12187") :method :outer("149_1279589163.12187")
 .annotate 'line', 178
     .local string rx538_tgt
     .local int rx538_pos
@@ -7344,7 +7344,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident"  :subid("152_1279564390.79897") :method
+.sub "mod_ident"  :subid("152_1279589163.12187") :method
 .annotate 'line', 183
     $P545 = self."!protoregex"("mod_ident")
     .return ($P545)
@@ -7352,7 +7352,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident"  :subid("153_1279564390.79897") :method
+.sub "!PREFIX__mod_ident"  :subid("153_1279589163.12187") :method
 .annotate 'line', 183
     $P547 = self."!PREFIX__!protoregex"("mod_ident")
     .return ($P547)
@@ -7360,7 +7360,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ignorecase>"  :subid("154_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "mod_ident:sym<ignorecase>"  :subid("154_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx549_tgt
     .local int rx549_pos
@@ -7450,7 +7450,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ignorecase>"  :subid("155_1279564390.79897") :method
+.sub "!PREFIX__mod_ident:sym<ignorecase>"  :subid("155_1279589163.12187") :method
 .annotate 'line', 3
     new $P551, "ResizablePMCArray"
     push $P551, "i"
@@ -7459,7 +7459,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ratchet>"  :subid("156_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "mod_ident:sym<ratchet>"  :subid("156_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx556_tgt
     .local int rx556_pos
@@ -7549,7 +7549,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ratchet>"  :subid("157_1279564390.79897") :method
+.sub "!PREFIX__mod_ident:sym<ratchet>"  :subid("157_1279589163.12187") :method
 .annotate 'line', 3
     new $P558, "ResizablePMCArray"
     push $P558, "r"
@@ -7558,7 +7558,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<sigspace>"  :subid("158_1279564390.79897") :method :outer("11_1279564390.79897")
+.sub "mod_ident:sym<sigspace>"  :subid("158_1279589163.12187") :method :outer("11_1279589163.12187")
 .annotate 'line', 3
     .local string rx563_tgt
     .local int rx563_pos
@@ -7648,7 +7648,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<sigspace>"  :subid("159_1279564390.79897") :method
+.sub "!PREFIX__mod_ident:sym<sigspace>"  :subid("159_1279589163.12187") :method
 .annotate 'line', 3
     new $P565, "ResizablePMCArray"
     push $P565, "s"
@@ -7657,18 +7657,18 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block569" :load :anon :subid("160_1279564390.79897")
+.sub "_block569" :load :anon :subid("160_1279589163.12187")
 .annotate 'line', 3
-    .const 'Sub' $P571 = "11_1279564390.79897" 
+    .const 'Sub' $P571 = "11_1279589163.12187" 
     $P572 = $P571()
     .return ($P572)
 .end
 
 
 .namespace []
-.sub "_block574" :load :anon :subid("161_1279564390.79897")
+.sub "_block574" :load :anon :subid("161_1279589163.12187")
 .annotate 'line', 1
-    .const 'Sub' $P576 = "10_1279564390.79897" 
+    .const 'Sub' $P576 = "10_1279589163.12187" 
     $P577 = $P576()
     .return ($P577)
 .end
@@ -7676,7 +7676,7 @@
 ### .include 'gen/p6regex-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1279564394.02125")
+.sub "_block11"  :anon :subid("10_1279589166.57432")
 .annotate 'line', 0
     get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13" 
     capture_lex $P14
@@ -7693,15 +7693,15 @@
     $P1623 = $P14()
 .annotate 'line', 1
     .return ($P1623)
-    .const 'Sub' $P1625 = "92_1279564394.02125" 
+    .const 'Sub' $P1625 = "92_1279589166.57432" 
     .return ($P1625)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post93") :outer("10_1279564394.02125")
+.sub "" :load :init :subid("post93") :outer("10_1279589166.57432")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1279564394.02125" 
+    .const 'Sub' $P12 = "10_1279589166.57432" 
     .local pmc block
     set block, $P12
     $P1628 = get_root_global ["parrot"], "P6metaclass"
@@ -7710,133 +7710,133 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block13"  :subid("11_1279564394.02125") :outer("10_1279564394.02125")
+.sub "_block13"  :subid("11_1279589166.57432") :outer("10_1279589166.57432")
 .annotate 'line', 4
-    .const 'Sub' $P1571 = "89_1279564394.02125" 
-    capture_lex $P1571
-    .const 'Sub' $P1551 = "88_1279564394.02125" 
-    capture_lex $P1551
-    .const 'Sub' $P1519 = "87_1279564394.02125" 
-    capture_lex $P1519
-    .const 'Sub' $P1450 = "83_1279564394.02125" 
-    capture_lex $P1450
-    .const 'Sub' $P1382 = "81_1279564394.02125" 
-    capture_lex $P1382
-    .const 'Sub' $P1339 = "79_1279564394.02125" 
+    .const 'Sub' $P1600 = "90_1279589166.57432" 
+    capture_lex $P1600
+    .const 'Sub' $P1580 = "89_1279589166.57432" 
+    capture_lex $P1580
+    .const 'Sub' $P1548 = "88_1279589166.57432" 
+    capture_lex $P1548
+    .const 'Sub' $P1479 = "84_1279589166.57432" 
+    capture_lex $P1479
+    .const 'Sub' $P1411 = "82_1279589166.57432" 
+    capture_lex $P1411
+    .const 'Sub' $P1339 = "79_1279589166.57432" 
     capture_lex $P1339
-    .const 'Sub' $P1325 = "78_1279564394.02125" 
+    .const 'Sub' $P1325 = "78_1279589166.57432" 
     capture_lex $P1325
-    .const 'Sub' $P1301 = "77_1279564394.02125" 
+    .const 'Sub' $P1301 = "77_1279589166.57432" 
     capture_lex $P1301
-    .const 'Sub' $P1283 = "76_1279564394.02125" 
+    .const 'Sub' $P1283 = "76_1279589166.57432" 
     capture_lex $P1283
-    .const 'Sub' $P1269 = "75_1279564394.02125" 
+    .const 'Sub' $P1269 = "75_1279589166.57432" 
     capture_lex $P1269
-    .const 'Sub' $P1256 = "74_1279564394.02125" 
+    .const 'Sub' $P1256 = "74_1279589166.57432" 
     capture_lex $P1256
-    .const 'Sub' $P1225 = "73_1279564394.02125" 
+    .const 'Sub' $P1225 = "73_1279589166.57432" 
     capture_lex $P1225
-    .const 'Sub' $P1194 = "72_1279564394.02125" 
+    .const 'Sub' $P1194 = "72_1279589166.57432" 
     capture_lex $P1194
-    .const 'Sub' $P1178 = "71_1279564394.02125" 
+    .const 'Sub' $P1178 = "71_1279589166.57432" 
     capture_lex $P1178
-    .const 'Sub' $P1162 = "70_1279564394.02125" 
+    .const 'Sub' $P1162 = "70_1279589166.57432" 
     capture_lex $P1162
-    .const 'Sub' $P1146 = "69_1279564394.02125" 
+    .const 'Sub' $P1146 = "69_1279589166.57432" 
     capture_lex $P1146
-    .const 'Sub' $P1130 = "68_1279564394.02125" 
+    .const 'Sub' $P1130 = "68_1279589166.57432" 
     capture_lex $P1130
-    .const 'Sub' $P1114 = "67_1279564394.02125" 
+    .const 'Sub' $P1114 = "67_1279589166.57432" 
     capture_lex $P1114
-    .const 'Sub' $P1098 = "66_1279564394.02125" 
+    .const 'Sub' $P1098 = "66_1279589166.57432" 
     capture_lex $P1098
-    .const 'Sub' $P1082 = "65_1279564394.02125" 
+    .const 'Sub' $P1082 = "65_1279589166.57432" 
     capture_lex $P1082
-    .const 'Sub' $P1058 = "64_1279564394.02125" 
+    .const 'Sub' $P1058 = "64_1279589166.57432" 
     capture_lex $P1058
-    .const 'Sub' $P1043 = "63_1279564394.02125" 
+    .const 'Sub' $P1043 = "63_1279589166.57432" 
     capture_lex $P1043
-    .const 'Sub' $P985 = "62_1279564394.02125" 
+    .const 'Sub' $P985 = "62_1279589166.57432" 
     capture_lex $P985
-    .const 'Sub' $P964 = "61_1279564394.02125" 
+    .const 'Sub' $P964 = "61_1279589166.57432" 
     capture_lex $P964
-    .const 'Sub' $P942 = "60_1279564394.02125" 
+    .const 'Sub' $P942 = "60_1279589166.57432" 
     capture_lex $P942
-    .const 'Sub' $P932 = "59_1279564394.02125" 
+    .const 'Sub' $P932 = "59_1279589166.57432" 
     capture_lex $P932
-    .const 'Sub' $P922 = "58_1279564394.02125" 
+    .const 'Sub' $P922 = "58_1279589166.57432" 
     capture_lex $P922
-    .const 'Sub' $P912 = "57_1279564394.02125" 
+    .const 'Sub' $P912 = "57_1279589166.57432" 
     capture_lex $P912
-    .const 'Sub' $P900 = "56_1279564394.02125" 
+    .const 'Sub' $P900 = "56_1279589166.57432" 
     capture_lex $P900
-    .const 'Sub' $P888 = "55_1279564394.02125" 
+    .const 'Sub' $P888 = "55_1279589166.57432" 
     capture_lex $P888
-    .const 'Sub' $P876 = "54_1279564394.02125" 
+    .const 'Sub' $P876 = "54_1279589166.57432" 
     capture_lex $P876
-    .const 'Sub' $P864 = "53_1279564394.02125" 
+    .const 'Sub' $P864 = "53_1279589166.57432" 
     capture_lex $P864
-    .const 'Sub' $P852 = "52_1279564394.02125" 
+    .const 'Sub' $P852 = "52_1279589166.57432" 
     capture_lex $P852
-    .const 'Sub' $P840 = "51_1279564394.02125" 
+    .const 'Sub' $P840 = "51_1279589166.57432" 
     capture_lex $P840
-    .const 'Sub' $P828 = "50_1279564394.02125" 
+    .const 'Sub' $P828 = "50_1279589166.57432" 
     capture_lex $P828
-    .const 'Sub' $P816 = "49_1279564394.02125" 
+    .const 'Sub' $P816 = "49_1279589166.57432" 
     capture_lex $P816
-    .const 'Sub' $P793 = "48_1279564394.02125" 
+    .const 'Sub' $P793 = "48_1279589166.57432" 
     capture_lex $P793
-    .const 'Sub' $P770 = "47_1279564394.02125" 
+    .const 'Sub' $P770 = "47_1279589166.57432" 
     capture_lex $P770
-    .const 'Sub' $P752 = "46_1279564394.02125" 
+    .const 'Sub' $P752 = "46_1279589166.57432" 
     capture_lex $P752
-    .const 'Sub' $P742 = "45_1279564394.02125" 
+    .const 'Sub' $P742 = "45_1279589166.57432" 
     capture_lex $P742
-    .const 'Sub' $P724 = "44_1279564394.02125" 
+    .const 'Sub' $P724 = "44_1279589166.57432" 
     capture_lex $P724
-    .const 'Sub' $P651 = "42_1279564394.02125" 
+    .const 'Sub' $P651 = "42_1279589166.57432" 
     capture_lex $P651
-    .const 'Sub' $P634 = "41_1279564394.02125" 
+    .const 'Sub' $P634 = "41_1279589166.57432" 
     capture_lex $P634
-    .const 'Sub' $P619 = "40_1279564394.02125" 
+    .const 'Sub' $P619 = "40_1279589166.57432" 
     capture_lex $P619
-    .const 'Sub' $P604 = "39_1279564394.02125" 
+    .const 'Sub' $P604 = "39_1279589166.57432" 
     capture_lex $P604
-    .const 'Sub' $P578 = "38_1279564394.02125" 
+    .const 'Sub' $P578 = "38_1279589166.57432" 
     capture_lex $P578
-    .const 'Sub' $P527 = "36_1279564394.02125" 
+    .const 'Sub' $P527 = "36_1279589166.57432" 
     capture_lex $P527
-    .const 'Sub' $P459 = "34_1279564394.02125" 
+    .const 'Sub' $P459 = "34_1279589166.57432" 
     capture_lex $P459
-    .const 'Sub' $P404 = "31_1279564394.02125" 
+    .const 'Sub' $P404 = "31_1279589166.57432" 
     capture_lex $P404
-    .const 'Sub' $P389 = "30_1279564394.02125" 
+    .const 'Sub' $P389 = "30_1279589166.57432" 
     capture_lex $P389
-    .const 'Sub' $P363 = "28_1279564394.02125" 
+    .const 'Sub' $P363 = "28_1279589166.57432" 
     capture_lex $P363
-    .const 'Sub' $P346 = "27_1279564394.02125" 
+    .const 'Sub' $P346 = "27_1279589166.57432" 
     capture_lex $P346
-    .const 'Sub' $P312 = "26_1279564394.02125" 
+    .const 'Sub' $P312 = "26_1279589166.57432" 
     capture_lex $P312
-    .const 'Sub' $P57 = "13_1279564394.02125" 
+    .const 'Sub' $P57 = "13_1279589166.57432" 
     capture_lex $P57
-    .const 'Sub' $P16 = "12_1279564394.02125" 
+    .const 'Sub' $P16 = "12_1279589166.57432" 
     capture_lex $P16
     get_global $P15, "@MODIFIERS"
     unless_null $P15, vivify_95
     $P15 = root_new ['parrot';'ResizablePMCArray']
     set_global "@MODIFIERS", $P15
   vivify_95:
-.annotate 'line', 487
-    .const 'Sub' $P16 = "12_1279564394.02125" 
+.annotate 'line', 493
+    .const 'Sub' $P16 = "12_1279589166.57432" 
     newclosure $P56, $P16
     .lex "buildsub", $P56
-.annotate 'line', 505
-    .const 'Sub' $P57 = "13_1279564394.02125" 
+.annotate 'line', 511
+    .const 'Sub' $P57 = "13_1279589166.57432" 
     newclosure $P311, $P57
     .lex "capnames", $P311
-.annotate 'line', 571
-    .const 'Sub' $P312 = "26_1279564394.02125" 
+.annotate 'line', 577
+    .const 'Sub' $P312 = "26_1279589166.57432" 
     newclosure $P344, $P312
     .lex "backmod", $P344
 .annotate 'line', 4
@@ -7847,22 +7847,22 @@
     $P0."ctxsave"()
   ctxsave_done:
     get_global $P345, "@MODIFIERS"
-.annotate 'line', 480
-    find_lex $P1548, "buildsub"
-    find_lex $P1549, "capnames"
-    find_lex $P1550, "backmod"
-.annotate 'line', 584
-    .const 'Sub' $P1571 = "89_1279564394.02125" 
-    newclosure $P1617, $P1571
+.annotate 'line', 486
+    find_lex $P1577, "buildsub"
+    find_lex $P1578, "capnames"
+    find_lex $P1579, "backmod"
+.annotate 'line', 590
+    .const 'Sub' $P1600 = "90_1279589166.57432" 
+    newclosure $P1617, $P1600
 .annotate 'line', 4
     .return ($P1617)
-    .const 'Sub' $P1619 = "91_1279564394.02125" 
+    .const 'Sub' $P1619 = "91_1279589166.57432" 
     .return ($P1619)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "" :load :init :subid("post94") :outer("11_1279564394.02125")
+.sub "" :load :init :subid("post94") :outer("11_1279589166.57432")
 .annotate 'line', 4
     get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13" 
     .local pmc block
@@ -7879,11 +7879,11 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "buildsub"  :subid("12_1279564394.02125") :outer("11_1279564394.02125")
+.sub "buildsub"  :subid("12_1279589166.57432") :outer("11_1279589166.57432")
     .param pmc param_19
     .param pmc param_20 :optional
     .param int has_param_20 :opt_flag
-.annotate 'line', 487
+.annotate 'line', 493
     new $P18, 'ExceptionHandler'
     set_addr $P18, control_17
     $P18."handle_types"(.CONTROL_RETURN)
@@ -7895,13 +7895,13 @@
     set param_20, $P22
   optparam_96:
     .lex "$block", param_20
-.annotate 'line', 488
+.annotate 'line', 494
     $P23 = root_new ['parrot';'Hash']
     .lex "%capnames", $P23
     find_lex $P24, "$rpast"
     $P25 = "capnames"($P24, 0)
     store_lex "%capnames", $P25
-.annotate 'line', 489
+.annotate 'line', 495
     new $P26, "Integer"
     assign $P26, 0
     find_lex $P27, "%capnames"
@@ -7910,15 +7910,15 @@
     store_lex "%capnames", $P27
   vivify_97:
     set $P27[""], $P26
-.annotate 'line', 490
+.annotate 'line', 496
     get_hll_global $P28, ["PAST"], "Regex"
-.annotate 'line', 491
+.annotate 'line', 497
     get_hll_global $P29, ["PAST"], "Regex"
     $P30 = $P29."new"("scan" :named("pasttype"))
     find_lex $P31, "$rpast"
-.annotate 'line', 493
+.annotate 'line', 499
     get_hll_global $P32, ["PAST"], "Regex"
-.annotate 'line', 494
+.annotate 'line', 500
     get_global $P35, "@MODIFIERS"
     unless_null $P35, vivify_98
     $P35 = root_new ['parrot';'ResizablePMCArray']
@@ -7942,34 +7942,34 @@
     set $P33, $P38
   if_34_end:
     $P40 = $P32."new"("pass" :named("pasttype"), $P33 :named("backtrack"))
-.annotate 'line', 493
+.annotate 'line', 499
     find_lex $P41, "%capnames"
     $P42 = $P28."new"($P30, $P31, $P40, "concat" :named("pasttype"), $P41 :named("capnames"))
-.annotate 'line', 490
+.annotate 'line', 496
     store_lex "$rpast", $P42
-.annotate 'line', 498
+.annotate 'line', 504
     find_lex $P44, "$block"
     $P45 = $P44."symbol"(unicode:"$\x{a2}")
     if $P45, unless_43_end
     find_lex $P46, "$block"
     $P46."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
   unless_43_end:
-.annotate 'line', 499
+.annotate 'line', 505
     find_lex $P48, "$block"
     $P49 = $P48."symbol"("$/")
     if $P49, unless_47_end
     find_lex $P50, "$block"
     $P50."symbol"("$/", "lexical" :named("scope"))
   unless_47_end:
-.annotate 'line', 500
+.annotate 'line', 506
     find_lex $P51, "$block"
     find_lex $P52, "$rpast"
     $P51."push"($P52)
-.annotate 'line', 501
+.annotate 'line', 507
     find_lex $P53, "$block"
     $P53."blocktype"("method")
     find_lex $P54, "$block"
-.annotate 'line', 487
+.annotate 'line', 493
     .return ($P54)
   control_17:
     .local pmc exception 
@@ -7981,19 +7981,19 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "capnames"  :subid("13_1279564394.02125") :outer("11_1279564394.02125")
+.sub "capnames"  :subid("13_1279589166.57432") :outer("11_1279589166.57432")
     .param pmc param_60
     .param pmc param_61
-.annotate 'line', 505
-    .const 'Sub' $P286 = "24_1279564394.02125" 
+.annotate 'line', 511
+    .const 'Sub' $P286 = "24_1279589166.57432" 
     capture_lex $P286
-    .const 'Sub' $P223 = "21_1279564394.02125" 
+    .const 'Sub' $P223 = "21_1279589166.57432" 
     capture_lex $P223
-    .const 'Sub' $P181 = "19_1279564394.02125" 
+    .const 'Sub' $P181 = "19_1279589166.57432" 
     capture_lex $P181
-    .const 'Sub' $P139 = "17_1279564394.02125" 
+    .const 'Sub' $P139 = "17_1279589166.57432" 
     capture_lex $P139
-    .const 'Sub' $P72 = "14_1279564394.02125" 
+    .const 'Sub' $P72 = "14_1279589166.57432" 
     capture_lex $P72
     new $P59, 'ExceptionHandler'
     set_addr $P59, control_58
@@ -8001,29 +8001,29 @@
     push_eh $P59
     .lex "$ast", param_60
     .lex "$count", param_61
-.annotate 'line', 506
+.annotate 'line', 512
     $P62 = root_new ['parrot';'Hash']
     .lex "%capnames", $P62
-.annotate 'line', 507
+.annotate 'line', 513
     new $P63, "Undef"
     .lex "$pasttype", $P63
-.annotate 'line', 505
+.annotate 'line', 511
     find_lex $P64, "%capnames"
-.annotate 'line', 507
+.annotate 'line', 513
     find_lex $P65, "$ast"
     $P66 = $P65."pasttype"()
     store_lex "$pasttype", $P66
-.annotate 'line', 508
+.annotate 'line', 514
     find_lex $P68, "$pasttype"
     set $S69, $P68
     iseq $I70, $S69, "alt"
     if $I70, if_67
-.annotate 'line', 521
+.annotate 'line', 527
     find_lex $P130, "$pasttype"
     set $S131, $P130
     iseq $I132, $S131, "concat"
     if $I132, if_129
-.annotate 'line', 530
+.annotate 'line', 536
     find_lex $P174, "$pasttype"
     set $S175, $P174
     iseq $I176, $S175, "subrule"
@@ -8039,37 +8039,37 @@
     set $P172, $I179
   if_173_end:
     if $P172, if_171
-.annotate 'line', 543
+.annotate 'line', 549
     find_lex $P219, "$pasttype"
     set $S220, $P219
     iseq $I221, $S220, "subcapture"
     if $I221, if_218
-.annotate 'line', 560
+.annotate 'line', 566
     find_lex $P282, "$pasttype"
     set $S283, $P282
     iseq $I284, $S283, "quant"
     unless $I284, if_281_end
-    .const 'Sub' $P286 = "24_1279564394.02125" 
+    .const 'Sub' $P286 = "24_1279589166.57432" 
     capture_lex $P286
     $P286()
   if_281_end:
     goto if_218_end
   if_218:
-.annotate 'line', 543
-    .const 'Sub' $P223 = "21_1279564394.02125" 
+.annotate 'line', 549
+    .const 'Sub' $P223 = "21_1279589166.57432" 
     capture_lex $P223
     $P223()
   if_218_end:
     goto if_171_end
   if_171:
-.annotate 'line', 530
-    .const 'Sub' $P181 = "19_1279564394.02125" 
+.annotate 'line', 536
+    .const 'Sub' $P181 = "19_1279589166.57432" 
     capture_lex $P181
     $P181()
   if_171_end:
     goto if_129_end
   if_129:
-.annotate 'line', 522
+.annotate 'line', 528
     find_lex $P134, "$ast"
     $P135 = $P134."list"()
     defined $I136, $P135
@@ -8083,7 +8083,7 @@
     unless $P133, loop168_done
     shift $P137, $P133
   loop168_redo:
-    .const 'Sub' $P139 = "17_1279564394.02125" 
+    .const 'Sub' $P139 = "17_1279589166.57432" 
     capture_lex $P139
     $P139($P137)
   loop168_next:
@@ -8098,15 +8098,15 @@
     pop_eh 
   for_undef_121:
   if_129_end:
-.annotate 'line', 521
+.annotate 'line', 527
     goto if_67_end
   if_67:
-.annotate 'line', 508
-    .const 'Sub' $P72 = "14_1279564394.02125" 
+.annotate 'line', 514
+    .const 'Sub' $P72 = "14_1279589166.57432" 
     capture_lex $P72
     $P72()
   if_67_end:
-.annotate 'line', 567
+.annotate 'line', 573
     find_lex $P307, "$count"
     find_lex $P308, "%capnames"
     unless_null $P308, vivify_141
@@ -8115,7 +8115,7 @@
   vivify_141:
     set $P308[""], $P307
     find_lex $P309, "%capnames"
-.annotate 'line', 505
+.annotate 'line', 511
     .return ($P309)
   control_58:
     .local pmc exception 
@@ -8127,11 +8127,11 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block285"  :anon :subid("24_1279564394.02125") :outer("13_1279564394.02125")
-.annotate 'line', 560
-    .const 'Sub' $P297 = "25_1279564394.02125" 
+.sub "_block285"  :anon :subid("24_1279589166.57432") :outer("13_1279589166.57432")
+.annotate 'line', 566
+    .const 'Sub' $P297 = "25_1279589166.57432" 
     capture_lex $P297
-.annotate 'line', 561
+.annotate 'line', 567
     $P287 = root_new ['parrot';'Hash']
     .lex "%astcap", $P287
     find_lex $P288, "$ast"
@@ -8145,7 +8145,7 @@
     find_lex $P290, "$count"
     $P291 = "capnames"($P289, $P290)
     store_lex "%astcap", $P291
-.annotate 'line', 562
+.annotate 'line', 568
     find_lex $P293, "%astcap"
     defined $I294, $P293
     unless $I294, for_undef_103
@@ -8158,7 +8158,7 @@
     unless $P292, loop302_done
     shift $P295, $P292
   loop302_redo:
-    .const 'Sub' $P297 = "25_1279564394.02125" 
+    .const 'Sub' $P297 = "25_1279589166.57432" 
     capture_lex $P297
     $P297($P295)
   loop302_next:
@@ -8172,7 +8172,7 @@
   loop302_done:
     pop_eh 
   for_undef_103:
-.annotate 'line', 565
+.annotate 'line', 571
     find_lex $P305, "%astcap"
     unless_null $P305, vivify_105
     $P305 = root_new ['parrot';'Hash']
@@ -8182,17 +8182,17 @@
     new $P306, "Undef"
   vivify_106:
     store_lex "$count", $P306
-.annotate 'line', 560
+.annotate 'line', 566
     .return ($P306)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block296"  :anon :subid("25_1279564394.02125") :outer("24_1279564394.02125")
+.sub "_block296"  :anon :subid("25_1279589166.57432") :outer("24_1279589166.57432")
     .param pmc param_298
-.annotate 'line', 562
+.annotate 'line', 568
     .lex "$_", param_298
-.annotate 'line', 563
+.annotate 'line', 569
     new $P299, "Integer"
     assign $P299, 2
     find_lex $P300, "$_"
@@ -8202,40 +8202,40 @@
     store_lex "%capnames", $P301
   vivify_104:
     set $P301[$P300], $P299
-.annotate 'line', 562
+.annotate 'line', 568
     .return ($P299)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block222"  :anon :subid("21_1279564394.02125") :outer("13_1279564394.02125")
-.annotate 'line', 543
-    .const 'Sub' $P263 = "23_1279564394.02125" 
+.sub "_block222"  :anon :subid("21_1279589166.57432") :outer("13_1279589166.57432")
+.annotate 'line', 549
+    .const 'Sub' $P263 = "23_1279589166.57432" 
     capture_lex $P263
-    .const 'Sub' $P235 = "22_1279564394.02125" 
+    .const 'Sub' $P235 = "22_1279589166.57432" 
     capture_lex $P235
-.annotate 'line', 544
+.annotate 'line', 550
     new $P224, "Undef"
     .lex "$name", $P224
-.annotate 'line', 545
+.annotate 'line', 551
     $P225 = root_new ['parrot';'ResizablePMCArray']
     .lex "@names", $P225
-.annotate 'line', 554
+.annotate 'line', 560
     $P226 = root_new ['parrot';'Hash']
     .lex "%x", $P226
-.annotate 'line', 544
+.annotate 'line', 550
     find_lex $P227, "$ast"
     $P228 = $P227."name"()
     store_lex "$name", $P228
-.annotate 'line', 545
+.annotate 'line', 551
 
             $P0 = find_lex '$name'
             $S0 = $P0
             $P229 = split '=', $S0
         
     store_lex "@names", $P229
-.annotate 'line', 550
+.annotate 'line', 556
     find_lex $P231, "@names"
     defined $I232, $P231
     unless $I232, for_undef_107
@@ -8248,7 +8248,7 @@
     unless $P230, loop251_done
     shift $P233, $P230
   loop251_redo:
-    .const 'Sub' $P235 = "22_1279564394.02125" 
+    .const 'Sub' $P235 = "22_1279589166.57432" 
     capture_lex $P235
     $P235($P233)
   loop251_next:
@@ -8262,7 +8262,7 @@
   loop251_done:
     pop_eh 
   for_undef_107:
-.annotate 'line', 554
+.annotate 'line', 560
     find_lex $P254, "$ast"
     unless_null $P254, vivify_109
     $P254 = root_new ['parrot';'ResizablePMCArray']
@@ -8274,7 +8274,7 @@
     find_lex $P256, "$count"
     $P257 = "capnames"($P255, $P256)
     store_lex "%x", $P257
-.annotate 'line', 555
+.annotate 'line', 561
     find_lex $P259, "%x"
     defined $I260, $P259
     unless $I260, for_undef_111
@@ -8287,7 +8287,7 @@
     unless $P258, loop276_done
     shift $P261, $P258
   loop276_redo:
-    .const 'Sub' $P263 = "23_1279564394.02125" 
+    .const 'Sub' $P263 = "23_1279589166.57432" 
     capture_lex $P263
     $P263($P261)
   loop276_next:
@@ -8301,7 +8301,7 @@
   loop276_done:
     pop_eh 
   for_undef_111:
-.annotate 'line', 558
+.annotate 'line', 564
     find_lex $P279, "%x"
     unless_null $P279, vivify_117
     $P279 = root_new ['parrot';'Hash']
@@ -8311,17 +8311,17 @@
     new $P280, "Undef"
   vivify_118:
     store_lex "$count", $P280
-.annotate 'line', 543
+.annotate 'line', 549
     .return ($P280)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block234"  :anon :subid("22_1279564394.02125") :outer("21_1279564394.02125")
+.sub "_block234"  :anon :subid("22_1279589166.57432") :outer("21_1279589166.57432")
     .param pmc param_236
-.annotate 'line', 550
+.annotate 'line', 556
     .lex "$_", param_236
-.annotate 'line', 551
+.annotate 'line', 557
     find_lex $P240, "$_"
     set $S241, $P240
     iseq $I242, $S241, "0"
@@ -8341,7 +8341,7 @@
     add $P247, $P246, 1
     store_lex "$count", $P247
   if_237_end:
-.annotate 'line', 552
+.annotate 'line', 558
     new $P248, "Integer"
     assign $P248, 1
     find_lex $P249, "$_"
@@ -8351,17 +8351,17 @@
     store_lex "%capnames", $P250
   vivify_108:
     set $P250[$P249], $P248
-.annotate 'line', 550
+.annotate 'line', 556
     .return ($P248)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block262"  :anon :subid("23_1279564394.02125") :outer("21_1279564394.02125")
+.sub "_block262"  :anon :subid("23_1279589166.57432") :outer("21_1279589166.57432")
     .param pmc param_264
-.annotate 'line', 555
+.annotate 'line', 561
     .lex "$_", param_264
-.annotate 'line', 556
+.annotate 'line', 562
     find_lex $P265, "$_"
     find_lex $P266, "%capnames"
     unless_null $P266, vivify_112
@@ -8391,28 +8391,28 @@
     store_lex "%capnames", $P275
   vivify_116:
     set $P275[$P274], $P273
-.annotate 'line', 555
+.annotate 'line', 561
     .return ($P273)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block180"  :anon :subid("19_1279564394.02125") :outer("13_1279564394.02125")
-.annotate 'line', 530
-    .const 'Sub' $P199 = "20_1279564394.02125" 
+.sub "_block180"  :anon :subid("19_1279589166.57432") :outer("13_1279589166.57432")
+.annotate 'line', 536
+    .const 'Sub' $P199 = "20_1279589166.57432" 
     capture_lex $P199
-.annotate 'line', 531
+.annotate 'line', 537
     new $P182, "Undef"
     .lex "$name", $P182
-.annotate 'line', 533
+.annotate 'line', 539
     $P183 = root_new ['parrot';'ResizablePMCArray']
     .lex "@names", $P183
-.annotate 'line', 531
+.annotate 'line', 537
     find_lex $P184, "$ast"
     $P185 = $P184."name"()
     store_lex "$name", $P185
-.annotate 'line', 532
+.annotate 'line', 538
     find_lex $P187, "$name"
     set $S188, $P187
     iseq $I189, $S188, ""
@@ -8423,14 +8423,14 @@
     find_lex $P192, "$name"
     $P191."name"($P192)
   if_186_end:
-.annotate 'line', 533
+.annotate 'line', 539
 
             $P0 = find_lex '$name'
             $S0 = $P0
             $P193 = split '=', $S0
         
     store_lex "@names", $P193
-.annotate 'line', 538
+.annotate 'line', 544
     find_lex $P195, "@names"
     defined $I196, $P195
     unless $I196, for_undef_119
@@ -8443,7 +8443,7 @@
     unless $P194, loop215_done
     shift $P197, $P194
   loop215_redo:
-    .const 'Sub' $P199 = "20_1279564394.02125" 
+    .const 'Sub' $P199 = "20_1279589166.57432" 
     capture_lex $P199
     $P199($P197)
   loop215_next:
@@ -8457,17 +8457,17 @@
   loop215_done:
     pop_eh 
   for_undef_119:
-.annotate 'line', 530
+.annotate 'line', 536
     .return ($P194)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block198"  :anon :subid("20_1279564394.02125") :outer("19_1279564394.02125")
+.sub "_block198"  :anon :subid("20_1279589166.57432") :outer("19_1279589166.57432")
     .param pmc param_200
-.annotate 'line', 538
+.annotate 'line', 544
     .lex "$_", param_200
-.annotate 'line', 539
+.annotate 'line', 545
     find_lex $P204, "$_"
     set $S205, $P204
     iseq $I206, $S205, "0"
@@ -8487,7 +8487,7 @@
     add $P211, $P210, 1
     store_lex "$count", $P211
   if_201_end:
-.annotate 'line', 540
+.annotate 'line', 546
     new $P212, "Integer"
     assign $P212, 1
     find_lex $P213, "$_"
@@ -8497,19 +8497,19 @@
     store_lex "%capnames", $P214
   vivify_120:
     set $P214[$P213], $P212
-.annotate 'line', 538
+.annotate 'line', 544
     .return ($P212)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block138"  :anon :subid("17_1279564394.02125") :outer("13_1279564394.02125")
+.sub "_block138"  :anon :subid("17_1279589166.57432") :outer("13_1279589166.57432")
     .param pmc param_141
-.annotate 'line', 522
-    .const 'Sub' $P150 = "18_1279564394.02125" 
+.annotate 'line', 528
+    .const 'Sub' $P150 = "18_1279589166.57432" 
     capture_lex $P150
-.annotate 'line', 523
+.annotate 'line', 529
     $P140 = root_new ['parrot';'Hash']
     .lex "%x", $P140
     .lex "$_", param_141
@@ -8517,7 +8517,7 @@
     find_lex $P143, "$count"
     $P144 = "capnames"($P142, $P143)
     store_lex "%x", $P144
-.annotate 'line', 524
+.annotate 'line', 530
     find_lex $P146, "%x"
     defined $I147, $P146
     unless $I147, for_undef_122
@@ -8530,7 +8530,7 @@
     unless $P145, loop163_done
     shift $P148, $P145
   loop163_redo:
-    .const 'Sub' $P150 = "18_1279564394.02125" 
+    .const 'Sub' $P150 = "18_1279589166.57432" 
     capture_lex $P150
     $P150($P148)
   loop163_next:
@@ -8544,7 +8544,7 @@
   loop163_done:
     pop_eh 
   for_undef_122:
-.annotate 'line', 527
+.annotate 'line', 533
     find_lex $P166, "%x"
     unless_null $P166, vivify_128
     $P166 = root_new ['parrot';'Hash']
@@ -8554,17 +8554,17 @@
     new $P167, "Undef"
   vivify_129:
     store_lex "$count", $P167
-.annotate 'line', 522
+.annotate 'line', 528
     .return ($P167)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block149"  :anon :subid("18_1279564394.02125") :outer("17_1279564394.02125")
+.sub "_block149"  :anon :subid("18_1279589166.57432") :outer("17_1279589166.57432")
     .param pmc param_151
-.annotate 'line', 524
+.annotate 'line', 530
     .lex "$_", param_151
-.annotate 'line', 525
+.annotate 'line', 531
     find_lex $P152, "$_"
     find_lex $P153, "%capnames"
     unless_null $P153, vivify_123
@@ -8594,23 +8594,23 @@
     store_lex "%capnames", $P162
   vivify_127:
     set $P162[$P161], $P160
-.annotate 'line', 524
+.annotate 'line', 530
     .return ($P160)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block71"  :anon :subid("14_1279564394.02125") :outer("13_1279564394.02125")
-.annotate 'line', 508
-    .const 'Sub' $P81 = "15_1279564394.02125" 
+.sub "_block71"  :anon :subid("14_1279589166.57432") :outer("13_1279589166.57432")
+.annotate 'line', 514
+    .const 'Sub' $P81 = "15_1279589166.57432" 
     capture_lex $P81
-.annotate 'line', 509
+.annotate 'line', 515
     new $P73, "Undef"
     .lex "$max", $P73
     find_lex $P74, "$count"
     store_lex "$max", $P74
-.annotate 'line', 510
+.annotate 'line', 516
     find_lex $P76, "$ast"
     $P77 = $P76."list"()
     defined $I78, $P77
@@ -8624,7 +8624,7 @@
     unless $P75, loop125_done
     shift $P79, $P75
   loop125_redo:
-    .const 'Sub' $P81 = "15_1279564394.02125" 
+    .const 'Sub' $P81 = "15_1279589166.57432" 
     capture_lex $P81
     $P81($P79)
   loop125_next:
@@ -8638,22 +8638,22 @@
   loop125_done:
     pop_eh 
   for_undef_130:
-.annotate 'line', 519
+.annotate 'line', 525
     find_lex $P128, "$max"
     store_lex "$count", $P128
-.annotate 'line', 508
+.annotate 'line', 514
     .return ($P128)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block80"  :anon :subid("15_1279564394.02125") :outer("14_1279564394.02125")
+.sub "_block80"  :anon :subid("15_1279589166.57432") :outer("14_1279589166.57432")
     .param pmc param_83
-.annotate 'line', 510
-    .const 'Sub' $P92 = "16_1279564394.02125" 
+.annotate 'line', 516
+    .const 'Sub' $P92 = "16_1279589166.57432" 
     capture_lex $P92
-.annotate 'line', 511
+.annotate 'line', 517
     $P82 = root_new ['parrot';'Hash']
     .lex "%x", $P82
     .lex "$_", param_83
@@ -8661,7 +8661,7 @@
     find_lex $P85, "$count"
     $P86 = "capnames"($P84, $P85)
     store_lex "%x", $P86
-.annotate 'line', 512
+.annotate 'line', 518
     find_lex $P88, "%x"
     defined $I89, $P88
     unless $I89, for_undef_131
@@ -8674,7 +8674,7 @@
     unless $P87, loop112_done
     shift $P90, $P87
   loop112_redo:
-    .const 'Sub' $P92 = "16_1279564394.02125" 
+    .const 'Sub' $P92 = "16_1279589166.57432" 
     capture_lex $P92
     $P92($P90)
   loop112_next:
@@ -8688,7 +8688,7 @@
   loop112_done:
     pop_eh 
   for_undef_131:
-.annotate 'line', 517
+.annotate 'line', 523
     find_lex $P117, "%x"
     unless_null $P117, vivify_137
     $P117 = root_new ['parrot';'Hash']
@@ -8717,17 +8717,17 @@
     store_lex "$max", $P124
     set $P115, $P124
   if_116_end:
-.annotate 'line', 510
+.annotate 'line', 516
     .return ($P115)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block91"  :anon :subid("16_1279564394.02125") :outer("15_1279564394.02125")
+.sub "_block91"  :anon :subid("16_1279589166.57432") :outer("15_1279589166.57432")
     .param pmc param_93
-.annotate 'line', 512
+.annotate 'line', 518
     .lex "$_", param_93
-.annotate 'line', 513
+.annotate 'line', 519
     find_lex $P98, "$_"
     find_lex $P99, "%capnames"
     unless_null $P99, vivify_132
@@ -8768,7 +8768,7 @@
     assign $P108, 1
     set $P94, $P108
   if_95_end:
-.annotate 'line', 514
+.annotate 'line', 520
     find_lex $P110, "$_"
     find_lex $P111, "%capnames"
     unless_null $P111, vivify_136
@@ -8776,29 +8776,29 @@
     store_lex "%capnames", $P111
   vivify_136:
     set $P111[$P110], $P94
-.annotate 'line', 512
+.annotate 'line', 518
     .return ($P94)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backmod"  :subid("26_1279564394.02125") :outer("11_1279564394.02125")
+.sub "backmod"  :subid("26_1279589166.57432") :outer("11_1279589166.57432")
     .param pmc param_315
     .param pmc param_316
-.annotate 'line', 571
+.annotate 'line', 577
     new $P314, 'ExceptionHandler'
     set_addr $P314, control_313
     $P314."handle_types"(.CONTROL_RETURN)
     push_eh $P314
     .lex "$ast", param_315
     .lex "$backmod", param_316
-.annotate 'line', 572
+.annotate 'line', 578
     find_lex $P318, "$backmod"
     set $S319, $P318
     iseq $I320, $S319, ":"
     if $I320, if_317
-.annotate 'line', 573
+.annotate 'line', 579
     find_lex $P325, "$backmod"
     set $S326, $P325
     iseq $I327, $S326, ":?"
@@ -8814,7 +8814,7 @@
     set $P323, $I330
   unless_324_end:
     if $P323, if_322
-.annotate 'line', 574
+.annotate 'line', 580
     find_lex $P335, "$backmod"
     set $S336, $P335
     iseq $I337, $S336, ":!"
@@ -8835,18 +8835,18 @@
   if_332_end:
     goto if_322_end
   if_322:
-.annotate 'line', 573
+.annotate 'line', 579
     find_lex $P331, "$ast"
     $P331."backtrack"("f")
   if_322_end:
     goto if_317_end
   if_317:
-.annotate 'line', 572
+.annotate 'line', 578
     find_lex $P321, "$ast"
     $P321."backtrack"("r")
   if_317_end:
     find_lex $P342, "$ast"
-.annotate 'line', 571
+.annotate 'line', 577
     .return ($P342)
   control_313:
     .local pmc exception 
@@ -8858,7 +8858,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "arg"  :subid("27_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "arg"  :subid("27_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_349
 .annotate 'line', 14
     new $P348, 'ExceptionHandler'
@@ -8915,10 +8915,10 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "arglist"  :subid("28_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "arglist"  :subid("28_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_366
 .annotate 'line', 18
-    .const 'Sub' $P376 = "29_1279564394.02125" 
+    .const 'Sub' $P376 = "29_1279589166.57432" 
     capture_lex $P376
     new $P365, 'ExceptionHandler'
     set_addr $P365, control_364
@@ -8952,7 +8952,7 @@
     unless $P370, loop382_done
     shift $P374, $P370
   loop382_redo:
-    .const 'Sub' $P376 = "29_1279564394.02125" 
+    .const 'Sub' $P376 = "29_1279589166.57432" 
     capture_lex $P376
     $P376($P374)
   loop382_next:
@@ -8981,7 +8981,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block375"  :anon :subid("29_1279564394.02125") :outer("28_1279564394.02125")
+.sub "_block375"  :anon :subid("29_1279589166.57432") :outer("28_1279589166.57432")
     .param pmc param_377
 .annotate 'line', 20
     .lex "$_", param_377
@@ -8995,7 +8995,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "TOP"  :subid("30_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "TOP"  :subid("30_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_392
 .annotate 'line', 24
     new $P391, 'ExceptionHandler'
@@ -9038,14 +9038,14 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "nibbler"  :subid("31_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "nibbler"  :subid("31_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_407
     .param pmc param_408 :optional
     .param int has_param_408 :opt_flag
 .annotate 'line', 30
-    .const 'Sub' $P442 = "33_1279564394.02125" 
+    .const 'Sub' $P442 = "33_1279589166.57432" 
     capture_lex $P442
-    .const 'Sub' $P416 = "32_1279564394.02125" 
+    .const 'Sub' $P416 = "32_1279589166.57432" 
     capture_lex $P416
     new $P406, 'ExceptionHandler'
     set_addr $P406, control_405
@@ -9066,7 +9066,7 @@
     set $S413, $P412
     iseq $I414, $S413, "open"
     unless $I414, if_411_end
-    .const 'Sub' $P416 = "32_1279564394.02125" 
+    .const 'Sub' $P416 = "32_1279589166.57432" 
     capture_lex $P416
     $P416()
   if_411_end:
@@ -9129,7 +9129,7 @@
     unless $P436, loop448_done
     shift $P440, $P436
   loop448_redo:
-    .const 'Sub' $P442 = "33_1279564394.02125" 
+    .const 'Sub' $P442 = "33_1279589166.57432" 
     capture_lex $P442
     $P442($P440)
   loop448_next:
@@ -9160,7 +9160,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block415"  :anon :subid("32_1279564394.02125") :outer("31_1279564394.02125")
+.sub "_block415"  :anon :subid("32_1279589166.57432") :outer("31_1279589166.57432")
 .annotate 'line', 32
     $P417 = root_new ['parrot';'Hash']
     .lex "%old", $P417
@@ -9200,7 +9200,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block441"  :anon :subid("33_1279564394.02125") :outer("31_1279564394.02125")
+.sub "_block441"  :anon :subid("33_1279589166.57432") :outer("31_1279589166.57432")
     .param pmc param_443
 .annotate 'line', 45
     .lex "$_", param_443
@@ -9216,10 +9216,10 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "termish"  :subid("34_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "termish"  :subid("34_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_462
 .annotate 'line', 55
-    .const 'Sub' $P475 = "35_1279564394.02125" 
+    .const 'Sub' $P475 = "35_1279589166.57432" 
     capture_lex $P475
     new $P461, 'ExceptionHandler'
     set_addr $P461, control_460
@@ -9262,7 +9262,7 @@
     unless $P469, loop520_done
     shift $P473, $P469
   loop520_redo:
-    .const 'Sub' $P475 = "35_1279564394.02125" 
+    .const 'Sub' $P475 = "35_1279589166.57432" 
     capture_lex $P475
     $P475($P473)
   loop520_next:
@@ -9291,7 +9291,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block474"  :anon :subid("35_1279564394.02125") :outer("34_1279564394.02125")
+.sub "_block474"  :anon :subid("35_1279589166.57432") :outer("34_1279589166.57432")
     .param pmc param_477
 .annotate 'line', 59
     new $P476, "Undef"
@@ -9419,10 +9419,10 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "quantified_atom"  :subid("36_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "quantified_atom"  :subid("36_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_530
 .annotate 'line', 76
-    .const 'Sub' $P539 = "37_1279564394.02125" 
+    .const 'Sub' $P539 = "37_1279589166.57432" 
     capture_lex $P539
     new $P529, 'ExceptionHandler'
     set_addr $P529, control_528
@@ -9485,7 +9485,7 @@
     goto if_535_end
   if_535:
 .annotate 'line', 78
-    .const 'Sub' $P539 = "37_1279564394.02125" 
+    .const 'Sub' $P539 = "37_1279589166.57432" 
     capture_lex $P539
     $P539()
   if_535_end:
@@ -9539,7 +9539,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block538"  :anon :subid("37_1279564394.02125") :outer("36_1279564394.02125")
+.sub "_block538"  :anon :subid("37_1279589166.57432") :outer("36_1279589166.57432")
 .annotate 'line', 80
     new $P540, "Undef"
     .lex "$qast", $P540
@@ -9580,7 +9580,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "atom"  :subid("38_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "atom"  :subid("38_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_581
 .annotate 'line', 91
     new $P580, 'ExceptionHandler'
@@ -9659,7 +9659,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "quantifier:sym<*>"  :subid("39_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "quantifier:sym<*>"  :subid("39_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_607
 .annotate 'line', 101
     new $P606, 'ExceptionHandler'
@@ -9700,7 +9700,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "quantifier:sym<+>"  :subid("40_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "quantifier:sym<+>"  :subid("40_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_622
 .annotate 'line', 106
     new $P621, 'ExceptionHandler'
@@ -9741,7 +9741,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "quantifier:sym<?>"  :subid("41_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "quantifier:sym<?>"  :subid("41_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_637
 .annotate 'line', 111
     new $P636, 'ExceptionHandler'
@@ -9786,10 +9786,10 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "quantifier:sym<**>"  :subid("42_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "quantifier:sym<**>"  :subid("42_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_654
 .annotate 'line', 117
-    .const 'Sub' $P669 = "43_1279564394.02125" 
+    .const 'Sub' $P669 = "43_1279589166.57432" 
     capture_lex $P669
     new $P653, 'ExceptionHandler'
     set_addr $P653, control_652
@@ -9927,7 +9927,7 @@
     goto if_665_end
   if_665:
 .annotate 'line', 120
-    .const 'Sub' $P669 = "43_1279564394.02125" 
+    .const 'Sub' $P669 = "43_1279589166.57432" 
     capture_lex $P669
     $P669()
   if_665_end:
@@ -9955,7 +9955,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block668"  :anon :subid("43_1279564394.02125") :outer("42_1279564394.02125")
+.sub "_block668"  :anon :subid("43_1279589166.57432") :outer("42_1279589166.57432")
 .annotate 'line', 121
     new $P670, "Undef"
     .lex "$ast", $P670
@@ -9998,7 +9998,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<ws>"  :subid("44_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<ws>"  :subid("44_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_727
 .annotate 'line', 146
     new $P726, 'ExceptionHandler'
@@ -10051,7 +10051,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<[ ]>"  :subid("45_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<[ ]>"  :subid("45_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_745
 .annotate 'line', 155
     new $P744, 'ExceptionHandler'
@@ -10084,7 +10084,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<( )>"  :subid("46_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<( )>"  :subid("46_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_755
 .annotate 'line', 159
     new $P754, 'ExceptionHandler'
@@ -10133,7 +10133,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<'>"  :subid("47_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<'>"  :subid("47_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_773
 .annotate 'line', 166
     new $P772, 'ExceptionHandler'
@@ -10190,7 +10190,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<\">"  :subid("48_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<\">"  :subid("48_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_796
 .annotate 'line', 173
     new $P795, 'ExceptionHandler'
@@ -10247,7 +10247,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<.>"  :subid("49_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<.>"  :subid("49_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_819
 .annotate 'line', 180
     new $P818, 'ExceptionHandler'
@@ -10279,7 +10279,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<^>"  :subid("50_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<^>"  :subid("50_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_831
 .annotate 'line', 185
     new $P830, 'ExceptionHandler'
@@ -10311,7 +10311,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<^^>"  :subid("51_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<^^>"  :subid("51_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_843
 .annotate 'line', 190
     new $P842, 'ExceptionHandler'
@@ -10343,7 +10343,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<$>"  :subid("52_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<$>"  :subid("52_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_855
 .annotate 'line', 195
     new $P854, 'ExceptionHandler'
@@ -10375,7 +10375,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<$$>"  :subid("53_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<$$>"  :subid("53_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_867
 .annotate 'line', 200
     new $P866, 'ExceptionHandler'
@@ -10407,7 +10407,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<:::>"  :subid("54_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<:::>"  :subid("54_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_879
 .annotate 'line', 205
     new $P878, 'ExceptionHandler'
@@ -10439,7 +10439,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<lwb>"  :subid("55_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<lwb>"  :subid("55_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_891
 .annotate 'line', 210
     new $P890, 'ExceptionHandler'
@@ -10471,7 +10471,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<rwb>"  :subid("56_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<rwb>"  :subid("56_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_903
 .annotate 'line', 215
     new $P902, 'ExceptionHandler'
@@ -10503,7 +10503,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<bs>"  :subid("57_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<bs>"  :subid("57_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_915
 .annotate 'line', 220
     new $P914, 'ExceptionHandler'
@@ -10536,7 +10536,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<mod>"  :subid("58_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<mod>"  :subid("58_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_925
 .annotate 'line', 224
     new $P924, 'ExceptionHandler'
@@ -10569,7 +10569,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<assert>"  :subid("59_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<assert>"  :subid("59_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_935
 .annotate 'line', 228
     new $P934, 'ExceptionHandler'
@@ -10602,7 +10602,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<~>"  :subid("60_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<~>"  :subid("60_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_945
 .annotate 'line', 232
     new $P944, 'ExceptionHandler'
@@ -10665,7 +10665,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<{*}>"  :subid("61_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<{*}>"  :subid("61_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_967
 .annotate 'line', 245
     new $P966, 'ExceptionHandler'
@@ -10727,7 +10727,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<var>"  :subid("62_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<var>"  :subid("62_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_988
 .annotate 'line', 252
     new $P987, 'ExceptionHandler'
@@ -10890,7 +10890,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<PIR>"  :subid("63_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "metachar:sym<PIR>"  :subid("63_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1046
 .annotate 'line', 272
     new $P1045, 'ExceptionHandler'
@@ -10930,7 +10930,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<w>"  :subid("64_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "backslash:sym<w>"  :subid("64_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1061
 .annotate 'line', 280
     new $P1060, 'ExceptionHandler'
@@ -10997,7 +10997,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<b>"  :subid("65_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "backslash:sym<b>"  :subid("65_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1085
 .annotate 'line', 286
     new $P1084, 'ExceptionHandler'
@@ -11041,7 +11041,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<e>"  :subid("66_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "backslash:sym<e>"  :subid("66_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1101
 .annotate 'line', 292
     new $P1100, 'ExceptionHandler'
@@ -11085,7 +11085,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<f>"  :subid("67_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "backslash:sym<f>"  :subid("67_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1117
 .annotate 'line', 298
     new $P1116, 'ExceptionHandler'
@@ -11129,7 +11129,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<h>"  :subid("68_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "backslash:sym<h>"  :subid("68_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1133
 .annotate 'line', 304
     new $P1132, 'ExceptionHandler'
@@ -11173,7 +11173,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<r>"  :subid("69_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "backslash:sym<r>"  :subid("69_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1149
 .annotate 'line', 310
     new $P1148, 'ExceptionHandler'
@@ -11217,7 +11217,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<t>"  :subid("70_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "backslash:sym<t>"  :subid("70_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1165
 .annotate 'line', 316
     new $P1164, 'ExceptionHandler'
@@ -11261,7 +11261,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<v>"  :subid("71_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "backslash:sym<v>"  :subid("71_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1181
 .annotate 'line', 322
     new $P1180, 'ExceptionHandler'
@@ -11305,7 +11305,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<o>"  :subid("72_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "backslash:sym<o>"  :subid("72_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1197
 .annotate 'line', 329
     new $P1196, 'ExceptionHandler'
@@ -11389,7 +11389,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<x>"  :subid("73_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "backslash:sym<x>"  :subid("73_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1228
 .annotate 'line', 338
     new $P1227, 'ExceptionHandler'
@@ -11473,7 +11473,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<c>"  :subid("74_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "backslash:sym<c>"  :subid("74_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1259
 .annotate 'line', 347
     new $P1258, 'ExceptionHandler'
@@ -11509,7 +11509,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<misc>"  :subid("75_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "backslash:sym<misc>"  :subid("75_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1272
 .annotate 'line', 351
     new $P1271, 'ExceptionHandler'
@@ -11543,7 +11543,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "assertion:sym<?>"  :subid("76_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "assertion:sym<?>"  :subid("76_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1286
 .annotate 'line', 357
     new $P1285, 'ExceptionHandler'
@@ -11604,7 +11604,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "assertion:sym<!>"  :subid("77_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "assertion:sym<!>"  :subid("77_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1304
 .annotate 'line', 367
     new $P1303, 'ExceptionHandler'
@@ -11673,7 +11673,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "assertion:sym<method>"  :subid("78_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "assertion:sym<method>"  :subid("78_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1328
 .annotate 'line', 380
     new $P1327, 'ExceptionHandler'
@@ -11717,10 +11717,12 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "assertion:sym<name>"  :subid("79_1279564394.02125") :method :outer("11_1279564394.02125")
+.sub "assertion:sym<name>"  :subid("79_1279589166.57432") :method :outer("11_1279589166.57432")
     .param pmc param_1342
 .annotate 'line', 387
-    .const 'Sub' $P1365 = "80_1279564394.02125" 
+    .const 'Sub' $P1399 = "81_1279589166.57432" 
+    capture_lex $P1399
+    .const 'Sub' $P1365 = "80_1279589166.57432" 
     capture_lex $P1365
     new $P1341, 'ExceptionHandler'
     set_addr $P1341, control_1340
@@ -11768,11 +11770,93 @@
     find_lex $P1376, "$/"
     $P1377 = $P1375."named_assertion"($P1376)
     store_lex "$past", $P1377
+.annotate 'line', 411
+    find_lex $P1379, "$/"
+    unless_null $P1379, vivify_321
+    $P1379 = root_new ['parrot';'Hash']
+  vivify_321:
+    set $P1380, $P1379["nibbler"]
+    unless_null $P1380, vivify_322
+    new $P1380, "Undef"
+  vivify_322:
+    if $P1380, if_1378
+.annotate 'line', 414
+    find_lex $P1388, "$/"
+    unless_null $P1388, vivify_323
+    $P1388 = root_new ['parrot';'Hash']
+  vivify_323:
+    set $P1389, $P1388["arglist"]
+    unless_null $P1389, vivify_324
+    new $P1389, "Undef"
+  vivify_324:
+    unless $P1389, if_1387_end
+.annotate 'line', 415
+    find_lex $P1391, "$/"
+    unless_null $P1391, vivify_325
+    $P1391 = root_new ['parrot';'Hash']
+  vivify_325:
+    set $P1392, $P1391["arglist"]
+    unless_null $P1392, vivify_326
+    $P1392 = root_new ['parrot';'ResizablePMCArray']
+  vivify_326:
+    set $P1393, $P1392[0]
+    unless_null $P1393, vivify_327
+    new $P1393, "Undef"
+  vivify_327:
+    $P1394 = $P1393."ast"()
+    $P1395 = $P1394."list"()
+    defined $I1396, $P1395
+    unless $I1396, for_undef_328
+    iter $P1390, $P1395
+    new $P1405, 'ExceptionHandler'
+    set_addr $P1405, loop1404_handler
+    $P1405."handle_types"(.CONTROL_LOOP_NEXT, .CONTROL_LOOP_REDO, .CONTROL_LOOP_LAST)
+    push_eh $P1405
+  loop1404_test:
+    unless $P1390, loop1404_done
+    shift $P1397, $P1390
+  loop1404_redo:
+    .const 'Sub' $P1399 = "81_1279589166.57432" 
+    capture_lex $P1399
+    $P1399($P1397)
+  loop1404_next:
+    goto loop1404_test
+  loop1404_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1406, exception, 'type'
+    eq $P1406, .CONTROL_LOOP_NEXT, loop1404_next
+    eq $P1406, .CONTROL_LOOP_REDO, loop1404_redo
+  loop1404_done:
+    pop_eh 
+  for_undef_328:
+  if_1387_end:
+.annotate 'line', 414
+    goto if_1378_end
+  if_1378:
+.annotate 'line', 412
+    find_lex $P1381, "$past"
+    find_lex $P1382, "$/"
+    unless_null $P1382, vivify_329
+    $P1382 = root_new ['parrot';'Hash']
+  vivify_329:
+    set $P1383, $P1382["nibbler"]
+    unless_null $P1383, vivify_330
+    $P1383 = root_new ['parrot';'ResizablePMCArray']
+  vivify_330:
+    set $P1384, $P1383[0]
+    unless_null $P1384, vivify_331
+    new $P1384, "Undef"
+  vivify_331:
+    $P1385 = $P1384."ast"()
+    $P1386 = "buildsub"($P1385)
+    $P1381."push"($P1386)
+  if_1378_end:
 .annotate 'line', 409
     goto if_1360_end
   if_1360:
 .annotate 'line', 394
-    .const 'Sub' $P1365 = "80_1279564394.02125" 
+    .const 'Sub' $P1365 = "80_1279589166.57432" 
     capture_lex $P1365
     $P1365()
   if_1360_end:
@@ -11780,17 +11864,17 @@
   if_1350:
 .annotate 'line', 391
     find_lex $P1353, "$/"
-    unless_null $P1353, vivify_321
+    unless_null $P1353, vivify_332
     $P1353 = root_new ['parrot';'Hash']
-  vivify_321:
+  vivify_332:
     set $P1354, $P1353["assertion"]
-    unless_null $P1354, vivify_322
+    unless_null $P1354, vivify_333
     $P1354 = root_new ['parrot';'ResizablePMCArray']
-  vivify_322:
+  vivify_333:
     set $P1355, $P1354[0]
-    unless_null $P1355, vivify_323
+    unless_null $P1355, vivify_334
     new $P1355, "Undef"
-  vivify_323:
+  vivify_334:
     $P1356 = $P1355."ast"()
     store_lex "$past", $P1356
 .annotate 'line', 392
@@ -11799,22 +11883,34 @@
     find_lex $P1359, "$name"
     $P1357."subrule_alias"($P1358, $P1359)
   if_1350_end:
-.annotate 'line', 412
-    find_lex $P1378, "$/"
-    find_lex $P1379, "$past"
-    $P1380 = $P1378."!make"($P1379)
+.annotate 'line', 418
+    find_lex $P1407, "$/"
+    find_lex $P1408, "$past"
+    $P1409 = $P1407."!make"($P1408)
 .annotate 'line', 387
-    .return ($P1380)
+    .return ($P1409)
   control_1340:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1381, exception, "payload"
-    .return ($P1381)
+    getattribute $P1410, exception, "payload"
+    .return ($P1410)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1364"  :anon :subid("80_1279564394.02125") :outer("79_1279564394.02125")
+.sub "_block1398"  :anon :subid("81_1279589166.57432") :outer("79_1279589166.57432")
+    .param pmc param_1400
+.annotate 'line', 415
+    .lex "$_", param_1400
+    find_lex $P1401, "$past"
+    find_lex $P1402, "$_"
+    $P1403 = $P1401."push"($P1402)
+    .return ($P1403)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block1364"  :anon :subid("80_1279589166.57432") :outer("79_1279589166.57432")
 .annotate 'line', 395
     new $P1366, "Undef"
     .lex "$regexsym", $P1366
@@ -11846,369 +11942,369 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "assertion:sym<[>"  :subid("81_1279564394.02125") :method :outer("11_1279564394.02125")
-    .param pmc param_1385
-.annotate 'line', 415
-    .const 'Sub' $P1420 = "82_1279564394.02125" 
-    capture_lex $P1420
-    new $P1384, 'ExceptionHandler'
-    set_addr $P1384, control_1383
-    $P1384."handle_types"(.CONTROL_RETURN)
-    push_eh $P1384
-    .lex "self", self
-    .lex "$/", param_1385
-.annotate 'line', 416
-    new $P1386, "Undef"
-    .lex "$clist", $P1386
-.annotate 'line', 417
-    new $P1387, "Undef"
-    .lex "$past", $P1387
-.annotate 'line', 426
-    new $P1388, "Undef"
-    .lex "$i", $P1388
-.annotate 'line', 427
-    new $P1389, "Undef"
-    .lex "$n", $P1389
-.annotate 'line', 416
-    find_lex $P1390, "$/"
-    unless_null $P1390, vivify_324
-    $P1390 = root_new ['parrot';'Hash']
-  vivify_324:
-    set $P1391, $P1390["cclass_elem"]
-    unless_null $P1391, vivify_325
-    new $P1391, "Undef"
-  vivify_325:
-    store_lex "$clist", $P1391
-.annotate 'line', 417
-    find_lex $P1392, "$clist"
-    unless_null $P1392, vivify_326
-    $P1392 = root_new ['parrot';'ResizablePMCArray']
-  vivify_326:
-    set $P1393, $P1392[0]
-    unless_null $P1393, vivify_327
-    new $P1393, "Undef"
-  vivify_327:
-    $P1394 = $P1393."ast"()
-    store_lex "$past", $P1394
-.annotate 'line', 418
-    find_lex $P1398, "$past"
-    $P1399 = $P1398."negate"()
-    if $P1399, if_1397
-    set $P1396, $P1399
-    goto if_1397_end
-  if_1397:
-    find_lex $P1400, "$past"
-    $S1401 = $P1400."pasttype"()
-    iseq $I1402, $S1401, "subrule"
-    new $P1396, 'Integer'
-    set $P1396, $I1402
-  if_1397_end:
-    unless $P1396, if_1395_end
-.annotate 'line', 419
-    find_lex $P1403, "$past"
-    $P1403."subtype"("zerowidth")
-.annotate 'line', 420
-    get_hll_global $P1404, ["PAST"], "Regex"
-    find_lex $P1405, "$past"
+.sub "assertion:sym<[>"  :subid("82_1279589166.57432") :method :outer("11_1279589166.57432")
+    .param pmc param_1414
+.annotate 'line', 421
+    .const 'Sub' $P1449 = "83_1279589166.57432" 
+    capture_lex $P1449
+    new $P1413, 'ExceptionHandler'
+    set_addr $P1413, control_1412
+    $P1413."handle_types"(.CONTROL_RETURN)
+    push_eh $P1413
+    .lex "self", self
+    .lex "$/", param_1414
 .annotate 'line', 422
-    get_hll_global $P1406, ["PAST"], "Regex"
-    $P1407 = $P1406."new"("charclass" :named("pasttype"), "." :named("subtype"))
-    find_lex $P1408, "$/"
-    $P1409 = $P1404."new"($P1405, $P1407, $P1408 :named("node"))
-.annotate 'line', 420
-    store_lex "$past", $P1409
-  if_1395_end:
+    new $P1415, "Undef"
+    .lex "$clist", $P1415
+.annotate 'line', 423
+    new $P1416, "Undef"
+    .lex "$past", $P1416
+.annotate 'line', 432
+    new $P1417, "Undef"
+    .lex "$i", $P1417
+.annotate 'line', 433
+    new $P1418, "Undef"
+    .lex "$n", $P1418
+.annotate 'line', 422
+    find_lex $P1419, "$/"
+    unless_null $P1419, vivify_335
+    $P1419 = root_new ['parrot';'Hash']
+  vivify_335:
+    set $P1420, $P1419["cclass_elem"]
+    unless_null $P1420, vivify_336
+    new $P1420, "Undef"
+  vivify_336:
+    store_lex "$clist", $P1420
+.annotate 'line', 423
+    find_lex $P1421, "$clist"
+    unless_null $P1421, vivify_337
+    $P1421 = root_new ['parrot';'ResizablePMCArray']
+  vivify_337:
+    set $P1422, $P1421[0]
+    unless_null $P1422, vivify_338
+    new $P1422, "Undef"
+  vivify_338:
+    $P1423 = $P1422."ast"()
+    store_lex "$past", $P1423
+.annotate 'line', 424
+    find_lex $P1427, "$past"
+    $P1428 = $P1427."negate"()
+    if $P1428, if_1426
+    set $P1425, $P1428
+    goto if_1426_end
+  if_1426:
+    find_lex $P1429, "$past"
+    $S1430 = $P1429."pasttype"()
+    iseq $I1431, $S1430, "subrule"
+    new $P1425, 'Integer'
+    set $P1425, $I1431
+  if_1426_end:
+    unless $P1425, if_1424_end
+.annotate 'line', 425
+    find_lex $P1432, "$past"
+    $P1432."subtype"("zerowidth")
 .annotate 'line', 426
-    new $P1410, "Integer"
-    assign $P1410, 1
-    store_lex "$i", $P1410
-.annotate 'line', 427
-    find_lex $P1411, "$clist"
-    set $N1412, $P1411
-    new $P1413, 'Float'
-    set $P1413, $N1412
-    store_lex "$n", $P1413
+    get_hll_global $P1433, ["PAST"], "Regex"
+    find_lex $P1434, "$past"
 .annotate 'line', 428
-    new $P1444, 'ExceptionHandler'
-    set_addr $P1444, loop1443_handler
-    $P1444."handle_types"(.CONTROL_LOOP_NEXT, .CONTROL_LOOP_REDO, .CONTROL_LOOP_LAST)
-    push_eh $P1444
-  loop1443_test:
-    find_lex $P1414, "$i"
-    set $N1415, $P1414
-    find_lex $P1416, "$n"
-    set $N1417, $P1416
-    islt $I1418, $N1415, $N1417
-    unless $I1418, loop1443_done
-  loop1443_redo:
-    .const 'Sub' $P1420 = "82_1279564394.02125" 
-    capture_lex $P1420
-    $P1420()
-  loop1443_next:
-    goto loop1443_test
-  loop1443_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P1445, exception, 'type'
-    eq $P1445, .CONTROL_LOOP_NEXT, loop1443_next
-    eq $P1445, .CONTROL_LOOP_REDO, loop1443_redo
-  loop1443_done:
+    get_hll_global $P1435, ["PAST"], "Regex"
+    $P1436 = $P1435."new"("charclass" :named("pasttype"), "." :named("subtype"))
+    find_lex $P1437, "$/"
+    $P1438 = $P1433."new"($P1434, $P1436, $P1437 :named("node"))
+.annotate 'line', 426
+    store_lex "$past", $P1438
+  if_1424_end:
+.annotate 'line', 432
+    new $P1439, "Integer"
+    assign $P1439, 1
+    store_lex "$i", $P1439
+.annotate 'line', 433
+    find_lex $P1440, "$clist"
+    set $N1441, $P1440
+    new $P1442, 'Float'
+    set $P1442, $N1441
+    store_lex "$n", $P1442
+.annotate 'line', 434
+    new $P1473, 'ExceptionHandler'
+    set_addr $P1473, loop1472_handler
+    $P1473."handle_types"(.CONTROL_LOOP_NEXT, .CONTROL_LOOP_REDO, .CONTROL_LOOP_LAST)
+    push_eh $P1473
+  loop1472_test:
+    find_lex $P1443, "$i"
+    set $N1444, $P1443
+    find_lex $P1445, "$n"
+    set $N1446, $P1445
+    islt $I1447, $N1444, $N1446
+    unless $I1447, loop1472_done
+  loop1472_redo:
+    .const 'Sub' $P1449 = "83_1279589166.57432" 
+    capture_lex $P1449
+    $P1449()
+  loop1472_next:
+    goto loop1472_test
+  loop1472_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1474, exception, 'type'
+    eq $P1474, .CONTROL_LOOP_NEXT, loop1472_next
+    eq $P1474, .CONTROL_LOOP_REDO, loop1472_redo
+  loop1472_done:
     pop_eh 
-.annotate 'line', 439
-    find_lex $P1446, "$/"
-    find_lex $P1447, "$past"
-    $P1448 = $P1446."!make"($P1447)
-.annotate 'line', 415
-    .return ($P1448)
-  control_1383:
+.annotate 'line', 445
+    find_lex $P1475, "$/"
+    find_lex $P1476, "$past"
+    $P1477 = $P1475."!make"($P1476)
+.annotate 'line', 421
+    .return ($P1477)
+  control_1412:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1449, exception, "payload"
-    .return ($P1449)
+    getattribute $P1478, exception, "payload"
+    .return ($P1478)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1419"  :anon :subid("82_1279564394.02125") :outer("81_1279564394.02125")
-.annotate 'line', 429
-    new $P1421, "Undef"
-    .lex "$ast", $P1421
-    find_lex $P1422, "$i"
-    set $I1423, $P1422
-    find_lex $P1424, "$clist"
-    unless_null $P1424, vivify_328
-    $P1424 = root_new ['parrot';'ResizablePMCArray']
-  vivify_328:
-    set $P1425, $P1424[$I1423]
-    unless_null $P1425, vivify_329
-    new $P1425, "Undef"
-  vivify_329:
-    $P1426 = $P1425."ast"()
-    store_lex "$ast", $P1426
-.annotate 'line', 430
-    find_lex $P1428, "$ast"
-    $P1429 = $P1428."negate"()
-    if $P1429, if_1427
+.sub "_block1448"  :anon :subid("83_1279589166.57432") :outer("82_1279589166.57432")
 .annotate 'line', 435
-    get_hll_global $P1436, ["PAST"], "Regex"
-    find_lex $P1437, "$past"
-    find_lex $P1438, "$ast"
-    find_lex $P1439, "$/"
-    $P1440 = $P1436."new"($P1437, $P1438, "alt" :named("pasttype"), $P1439 :named("node"))
-    store_lex "$past", $P1440
-.annotate 'line', 434
-    goto if_1427_end
-  if_1427:
-.annotate 'line', 431
-    find_lex $P1430, "$ast"
-    $P1430."subtype"("zerowidth")
-.annotate 'line', 432
-    get_hll_global $P1431, ["PAST"], "Regex"
-    find_lex $P1432, "$ast"
-    find_lex $P1433, "$past"
-    find_lex $P1434, "$/"
-    $P1435 = $P1431."new"($P1432, $P1433, "concat" :named("pasttype"), $P1434 :named("node"))
-    store_lex "$past", $P1435
-  if_1427_end:
+    new $P1450, "Undef"
+    .lex "$ast", $P1450
+    find_lex $P1451, "$i"
+    set $I1452, $P1451
+    find_lex $P1453, "$clist"
+    unless_null $P1453, vivify_339
+    $P1453 = root_new ['parrot';'ResizablePMCArray']
+  vivify_339:
+    set $P1454, $P1453[$I1452]
+    unless_null $P1454, vivify_340
+    new $P1454, "Undef"
+  vivify_340:
+    $P1455 = $P1454."ast"()
+    store_lex "$ast", $P1455
+.annotate 'line', 436
+    find_lex $P1457, "$ast"
+    $P1458 = $P1457."negate"()
+    if $P1458, if_1456
+.annotate 'line', 441
+    get_hll_global $P1465, ["PAST"], "Regex"
+    find_lex $P1466, "$past"
+    find_lex $P1467, "$ast"
+    find_lex $P1468, "$/"
+    $P1469 = $P1465."new"($P1466, $P1467, "alt" :named("pasttype"), $P1468 :named("node"))
+    store_lex "$past", $P1469
+.annotate 'line', 440
+    goto if_1456_end
+  if_1456:
 .annotate 'line', 437
-    find_lex $P1441, "$i"
-    add $P1442, $P1441, 1
-    store_lex "$i", $P1442
-.annotate 'line', 428
-    .return ($P1442)
+    find_lex $P1459, "$ast"
+    $P1459."subtype"("zerowidth")
+.annotate 'line', 438
+    get_hll_global $P1460, ["PAST"], "Regex"
+    find_lex $P1461, "$ast"
+    find_lex $P1462, "$past"
+    find_lex $P1463, "$/"
+    $P1464 = $P1460."new"($P1461, $P1462, "concat" :named("pasttype"), $P1463 :named("node"))
+    store_lex "$past", $P1464
+  if_1456_end:
+.annotate 'line', 443
+    find_lex $P1470, "$i"
+    add $P1471, $P1470, 1
+    store_lex "$i", $P1471
+.annotate 'line', 434
+    .return ($P1471)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "cclass_elem"  :subid("83_1279564394.02125") :method :outer("11_1279564394.02125")
-    .param pmc param_1453
-.annotate 'line', 442
-    .const 'Sub' $P1478 = "85_1279564394.02125" 
-    capture_lex $P1478
-    .const 'Sub' $P1462 = "84_1279564394.02125" 
-    capture_lex $P1462
-    new $P1452, 'ExceptionHandler'
-    set_addr $P1452, control_1451
-    $P1452."handle_types"(.CONTROL_RETURN)
-    push_eh $P1452
+.sub "cclass_elem"  :subid("84_1279589166.57432") :method :outer("11_1279589166.57432")
+    .param pmc param_1482
+.annotate 'line', 448
+    .const 'Sub' $P1507 = "86_1279589166.57432" 
+    capture_lex $P1507
+    .const 'Sub' $P1491 = "85_1279589166.57432" 
+    capture_lex $P1491
+    new $P1481, 'ExceptionHandler'
+    set_addr $P1481, control_1480
+    $P1481."handle_types"(.CONTROL_RETURN)
+    push_eh $P1481
     .lex "self", self
-    .lex "$/", param_1453
-.annotate 'line', 443
-    new $P1454, "Undef"
-    .lex "$str", $P1454
-.annotate 'line', 444
-    new $P1455, "Undef"
-    .lex "$past", $P1455
-.annotate 'line', 443
-    new $P1456, "String"
-    assign $P1456, ""
-    store_lex "$str", $P1456
-    find_lex $P1457, "$past"
-.annotate 'line', 445
-    find_lex $P1459, "$/"
-    unless_null $P1459, vivify_330
-    $P1459 = root_new ['parrot';'Hash']
-  vivify_330:
-    set $P1460, $P1459["name"]
-    unless_null $P1460, vivify_331
-    new $P1460, "Undef"
-  vivify_331:
-    if $P1460, if_1458
+    .lex "$/", param_1482
 .annotate 'line', 449
-    find_lex $P1473, "$/"
-    unless_null $P1473, vivify_332
-    $P1473 = root_new ['parrot';'Hash']
-  vivify_332:
-    set $P1474, $P1473["charspec"]
-    unless_null $P1474, vivify_333
-    new $P1474, "Undef"
-  vivify_333:
-    defined $I1475, $P1474
-    unless $I1475, for_undef_334
-    iter $P1472, $P1474
-    new $P1504, 'ExceptionHandler'
-    set_addr $P1504, loop1503_handler
-    $P1504."handle_types"(.CONTROL_LOOP_NEXT, .CONTROL_LOOP_REDO, .CONTROL_LOOP_LAST)
-    push_eh $P1504
-  loop1503_test:
-    unless $P1472, loop1503_done
-    shift $P1476, $P1472
-  loop1503_redo:
-    .const 'Sub' $P1478 = "85_1279564394.02125" 
-    capture_lex $P1478
-    $P1478($P1476)
-  loop1503_next:
-    goto loop1503_test
-  loop1503_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P1505, exception, 'type'
-    eq $P1505, .CONTROL_LOOP_NEXT, loop1503_next
-    eq $P1505, .CONTROL_LOOP_REDO, loop1503_redo
-  loop1503_done:
+    new $P1483, "Undef"
+    .lex "$str", $P1483
+.annotate 'line', 450
+    new $P1484, "Undef"
+    .lex "$past", $P1484
+.annotate 'line', 449
+    new $P1485, "String"
+    assign $P1485, ""
+    store_lex "$str", $P1485
+    find_lex $P1486, "$past"
+.annotate 'line', 451
+    find_lex $P1488, "$/"
+    unless_null $P1488, vivify_341
+    $P1488 = root_new ['parrot';'Hash']
+  vivify_341:
+    set $P1489, $P1488["name"]
+    unless_null $P1489, vivify_342
+    new $P1489, "Undef"
+  vivify_342:
+    if $P1489, if_1487
+.annotate 'line', 455
+    find_lex $P1502, "$/"
+    unless_null $P1502, vivify_343
+    $P1502 = root_new ['parrot';'Hash']
+  vivify_343:
+    set $P1503, $P1502["charspec"]
+    unless_null $P1503, vivify_344
+    new $P1503, "Undef"
+  vivify_344:
+    defined $I1504, $P1503
+    unless $I1504, for_undef_345
+    iter $P1501, $P1503
+    new $P1533, 'ExceptionHandler'
+    set_addr $P1533, loop1532_handler
+    $P1533."handle_types"(.CONTROL_LOOP_NEXT, .CONTROL_LOOP_REDO, .CONTROL_LOOP_LAST)
+    push_eh $P1533
+  loop1532_test:
+    unless $P1501, loop1532_done
+    shift $P1505, $P1501
+  loop1532_redo:
+    .const 'Sub' $P1507 = "86_1279589166.57432" 
+    capture_lex $P1507
+    $P1507($P1505)
+  loop1532_next:
+    goto loop1532_test
+  loop1532_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1534, exception, 'type'
+    eq $P1534, .CONTROL_LOOP_NEXT, loop1532_next
+    eq $P1534, .CONTROL_LOOP_REDO, loop1532_redo
+  loop1532_done:
     pop_eh 
-  for_undef_334:
-.annotate 'line', 474
-    get_hll_global $P1506, ["PAST"], "Regex"
-    find_lex $P1507, "$str"
-    find_lex $P1508, "$/"
-    $P1509 = $P1506."new"($P1507, "enumcharlist" :named("pasttype"), $P1508 :named("node"))
-    store_lex "$past", $P1509
+  for_undef_345:
+.annotate 'line', 480
+    get_hll_global $P1535, ["PAST"], "Regex"
+    find_lex $P1536, "$str"
+    find_lex $P1537, "$/"
+    $P1538 = $P1535."new"($P1536, "enumcharlist" :named("pasttype"), $P1537 :named("node"))
+    store_lex "$past", $P1538
+.annotate 'line', 454
+    goto if_1487_end
+  if_1487:
+.annotate 'line', 451
+    .const 'Sub' $P1491 = "85_1279589166.57432" 
+    capture_lex $P1491
+    $P1491()
+  if_1487_end:
+.annotate 'line', 482
+    find_lex $P1539, "$past"
+    find_lex $P1540, "$/"
+    unless_null $P1540, vivify_357
+    $P1540 = root_new ['parrot';'Hash']
+  vivify_357:
+    set $P1541, $P1540["sign"]
+    unless_null $P1541, vivify_358
+    new $P1541, "Undef"
+  vivify_358:
+    set $S1542, $P1541
+    iseq $I1543, $S1542, "-"
+    $P1539."negate"($I1543)
+.annotate 'line', 483
+    find_lex $P1544, "$/"
+    find_lex $P1545, "$past"
+    $P1546 = $P1544."!make"($P1545)
 .annotate 'line', 448
-    goto if_1458_end
-  if_1458:
-.annotate 'line', 445
-    .const 'Sub' $P1462 = "84_1279564394.02125" 
-    capture_lex $P1462
-    $P1462()
-  if_1458_end:
-.annotate 'line', 476
-    find_lex $P1510, "$past"
-    find_lex $P1511, "$/"
-    unless_null $P1511, vivify_346
-    $P1511 = root_new ['parrot';'Hash']
-  vivify_346:
-    set $P1512, $P1511["sign"]
-    unless_null $P1512, vivify_347
-    new $P1512, "Undef"
-  vivify_347:
-    set $S1513, $P1512
-    iseq $I1514, $S1513, "-"
-    $P1510."negate"($I1514)
-.annotate 'line', 477
-    find_lex $P1515, "$/"
-    find_lex $P1516, "$past"
-    $P1517 = $P1515."!make"($P1516)
-.annotate 'line', 442
-    .return ($P1517)
-  control_1451:
+    .return ($P1546)
+  control_1480:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1518, exception, "payload"
-    .return ($P1518)
+    getattribute $P1547, exception, "payload"
+    .return ($P1547)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1477"  :anon :subid("85_1279564394.02125") :outer("83_1279564394.02125")
-    .param pmc param_1479
-.annotate 'line', 449
-    .const 'Sub' $P1485 = "86_1279564394.02125" 
-    capture_lex $P1485
-    .lex "$_", param_1479
-.annotate 'line', 450
-    find_lex $P1482, "$_"
-    unless_null $P1482, vivify_335
-    $P1482 = root_new ['parrot';'ResizablePMCArray']
-  vivify_335:
-    set $P1483, $P1482[1]
-    unless_null $P1483, vivify_336
-    new $P1483, "Undef"
-  vivify_336:
-    if $P1483, if_1481
-.annotate 'line', 472
-    find_lex $P1499, "$str"
-    find_lex $P1500, "$_"
-    unless_null $P1500, vivify_337
-    $P1500 = root_new ['parrot';'ResizablePMCArray']
-  vivify_337:
-    set $P1501, $P1500[0]
-    unless_null $P1501, vivify_338
-    new $P1501, "Undef"
-  vivify_338:
-    concat $P1502, $P1499, $P1501
-    store_lex "$str", $P1502
-    set $P1480, $P1502
-.annotate 'line', 450
-    goto if_1481_end
-  if_1481:
-    .const 'Sub' $P1485 = "86_1279564394.02125" 
-    capture_lex $P1485
-    $P1498 = $P1485()
-    set $P1480, $P1498
-  if_1481_end:
-.annotate 'line', 449
-    .return ($P1480)
+.sub "_block1506"  :anon :subid("86_1279589166.57432") :outer("84_1279589166.57432")
+    .param pmc param_1508
+.annotate 'line', 455
+    .const 'Sub' $P1514 = "87_1279589166.57432" 
+    capture_lex $P1514
+    .lex "$_", param_1508
+.annotate 'line', 456
+    find_lex $P1511, "$_"
+    unless_null $P1511, vivify_346
+    $P1511 = root_new ['parrot';'ResizablePMCArray']
+  vivify_346:
+    set $P1512, $P1511[1]
+    unless_null $P1512, vivify_347
+    new $P1512, "Undef"
+  vivify_347:
+    if $P1512, if_1510
+.annotate 'line', 478
+    find_lex $P1528, "$str"
+    find_lex $P1529, "$_"
+    unless_null $P1529, vivify_348
+    $P1529 = root_new ['parrot';'ResizablePMCArray']
+  vivify_348:
+    set $P1530, $P1529[0]
+    unless_null $P1530, vivify_349
+    new $P1530, "Undef"
+  vivify_349:
+    concat $P1531, $P1528, $P1530
+    store_lex "$str", $P1531
+    set $P1509, $P1531
+.annotate 'line', 456
+    goto if_1510_end
+  if_1510:
+    .const 'Sub' $P1514 = "87_1279589166.57432" 
+    capture_lex $P1514
+    $P1527 = $P1514()
+    set $P1509, $P1527
+  if_1510_end:
+.annotate 'line', 455
+    .return ($P1509)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1484"  :anon :subid("86_1279564394.02125") :outer("85_1279564394.02125")
-.annotate 'line', 451
-    new $P1486, "Undef"
-    .lex "$a", $P1486
-.annotate 'line', 452
-    new $P1487, "Undef"
-    .lex "$b", $P1487
-.annotate 'line', 453
-    new $P1488, "Undef"
-    .lex "$c", $P1488
-.annotate 'line', 451
-    find_lex $P1489, "$_"
-    unless_null $P1489, vivify_339
-    $P1489 = root_new ['parrot';'ResizablePMCArray']
-  vivify_339:
-    set $P1490, $P1489[0]
-    unless_null $P1490, vivify_340
-    new $P1490, "Undef"
-  vivify_340:
-    store_lex "$a", $P1490
-.annotate 'line', 452
-    find_lex $P1491, "$_"
-    unless_null $P1491, vivify_341
-    $P1491 = root_new ['parrot';'ResizablePMCArray']
-  vivify_341:
-    set $P1492, $P1491[1]
-    unless_null $P1492, vivify_342
-    $P1492 = root_new ['parrot';'ResizablePMCArray']
-  vivify_342:
-    set $P1493, $P1492[0]
-    unless_null $P1493, vivify_343
-    new $P1493, "Undef"
-  vivify_343:
-    store_lex "$b", $P1493
-.annotate 'line', 453
+.sub "_block1513"  :anon :subid("87_1279589166.57432") :outer("86_1279589166.57432")
+.annotate 'line', 457
+    new $P1515, "Undef"
+    .lex "$a", $P1515
+.annotate 'line', 458
+    new $P1516, "Undef"
+    .lex "$b", $P1516
+.annotate 'line', 459
+    new $P1517, "Undef"
+    .lex "$c", $P1517
+.annotate 'line', 457
+    find_lex $P1518, "$_"
+    unless_null $P1518, vivify_350
+    $P1518 = root_new ['parrot';'ResizablePMCArray']
+  vivify_350:
+    set $P1519, $P1518[0]
+    unless_null $P1519, vivify_351
+    new $P1519, "Undef"
+  vivify_351:
+    store_lex "$a", $P1519
+.annotate 'line', 458
+    find_lex $P1520, "$_"
+    unless_null $P1520, vivify_352
+    $P1520 = root_new ['parrot';'ResizablePMCArray']
+  vivify_352:
+    set $P1521, $P1520[1]
+    unless_null $P1521, vivify_353
+    $P1521 = root_new ['parrot';'ResizablePMCArray']
+  vivify_353:
+    set $P1522, $P1521[0]
+    unless_null $P1522, vivify_354
+    new $P1522, "Undef"
+  vivify_354:
+    store_lex "$b", $P1522
+.annotate 'line', 459
 
                              $P0 = find_lex '$a'
                              $S0 = $P0
@@ -12224,318 +12320,233 @@
                              inc $I0
                              goto cclass_loop
                            cclass_done:
-                             $P1494 = box $S2
+                             $P1523 = box $S2
                          
-    store_lex "$c", $P1494
-.annotate 'line', 470
-    find_lex $P1495, "$str"
-    find_lex $P1496, "$c"
-    concat $P1497, $P1495, $P1496
-    store_lex "$str", $P1497
-.annotate 'line', 450
-    .return ($P1497)
+    store_lex "$c", $P1523
+.annotate 'line', 476
+    find_lex $P1524, "$str"
+    find_lex $P1525, "$c"
+    concat $P1526, $P1524, $P1525
+    store_lex "$str", $P1526
+.annotate 'line', 456
+    .return ($P1526)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1461"  :anon :subid("84_1279564394.02125") :outer("83_1279564394.02125")
-.annotate 'line', 446
-    new $P1463, "Undef"
-    .lex "$name", $P1463
-    find_lex $P1464, "$/"
-    unless_null $P1464, vivify_344
-    $P1464 = root_new ['parrot';'Hash']
-  vivify_344:
-    set $P1465, $P1464["name"]
-    unless_null $P1465, vivify_345
-    new $P1465, "Undef"
-  vivify_345:
-    set $S1466, $P1465
-    new $P1467, 'String'
-    set $P1467, $S1466
-    store_lex "$name", $P1467
-.annotate 'line', 447
-    get_hll_global $P1468, ["PAST"], "Regex"
-    find_lex $P1469, "$name"
-    find_lex $P1470, "$/"
-    $P1471 = $P1468."new"($P1469, "subrule" :named("pasttype"), "method" :named("subtype"), $P1470 :named("node"))
-    store_lex "$past", $P1471
-.annotate 'line', 445
-    .return ($P1471)
+.sub "_block1490"  :anon :subid("85_1279589166.57432") :outer("84_1279589166.57432")
+.annotate 'line', 452
+    new $P1492, "Undef"
+    .lex "$name", $P1492
+    find_lex $P1493, "$/"
+    unless_null $P1493, vivify_355
+    $P1493 = root_new ['parrot';'Hash']
+  vivify_355:
+    set $P1494, $P1493["name"]
+    unless_null $P1494, vivify_356
+    new $P1494, "Undef"
+  vivify_356:
+    set $S1495, $P1494
+    new $P1496, 'String'
+    set $P1496, $S1495
+    store_lex "$name", $P1496
+.annotate 'line', 453
+    get_hll_global $P1497, ["PAST"], "Regex"
+    find_lex $P1498, "$name"
+    find_lex $P1499, "$/"
+    $P1500 = $P1497."new"($P1498, "subrule" :named("pasttype"), "method" :named("subtype"), $P1499 :named("node"))
+    store_lex "$past", $P1500
+.annotate 'line', 451
+    .return ($P1500)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "mod_internal"  :subid("87_1279564394.02125") :method :outer("11_1279564394.02125")
-    .param pmc param_1522
-.annotate 'line', 480
-    new $P1521, 'ExceptionHandler'
-    set_addr $P1521, control_1520
-    $P1521."handle_types"(.CONTROL_RETURN)
-    push_eh $P1521
-    .lex "self", self
-    .lex "$/", param_1522
-.annotate 'line', 481
-    $P1523 = root_new ['parrot';'Hash']
-    .lex "%mods", $P1523
-.annotate 'line', 482
-    new $P1524, "Undef"
-    .lex "$n", $P1524
-.annotate 'line', 481
-    get_global $P1525, "@MODIFIERS"
-    unless_null $P1525, vivify_348
-    $P1525 = root_new ['parrot';'ResizablePMCArray']
-  vivify_348:
-    set $P1526, $P1525[0]
-    unless_null $P1526, vivify_349
-    new $P1526, "Undef"
-  vivify_349:
-    store_lex "%mods", $P1526
-.annotate 'line', 482
-    find_lex $P1529, "$/"
-    unless_null $P1529, vivify_350
-    $P1529 = root_new ['parrot';'Hash']
-  vivify_350:
-    set $P1530, $P1529["n"]
-    unless_null $P1530, vivify_351
-    $P1530 = root_new ['parrot';'ResizablePMCArray']
-  vivify_351:
-    set $P1531, $P1530[0]
-    unless_null $P1531, vivify_352
-    new $P1531, "Undef"
-  vivify_352:
-    set $S1532, $P1531
-    isgt $I1533, $S1532, ""
-    if $I1533, if_1528
-    new $P1538, "Integer"
-    assign $P1538, 1
-    set $P1527, $P1538
-    goto if_1528_end
-  if_1528:
-    find_lex $P1534, "$/"
-    unless_null $P1534, vivify_353
-    $P1534 = root_new ['parrot';'Hash']
-  vivify_353:
-    set $P1535, $P1534["n"]
-    unless_null $P1535, vivify_354
-    $P1535 = root_new ['parrot';'ResizablePMCArray']
-  vivify_354:
-    set $P1536, $P1535[0]
-    unless_null $P1536, vivify_355
-    new $P1536, "Undef"
-  vivify_355:
-    set $N1537, $P1536
-    new $P1527, 'Float'
-    set $P1527, $N1537
-  if_1528_end:
-    store_lex "$n", $P1527
-.annotate 'line', 483
-    find_lex $P1539, "$n"
-    find_lex $P1540, "$/"
-    unless_null $P1540, vivify_356
-    $P1540 = root_new ['parrot';'Hash']
-  vivify_356:
-    set $P1541, $P1540["mod_ident"]
-    unless_null $P1541, vivify_357
-    $P1541 = root_new ['parrot';'Hash']
-  vivify_357:
-    set $P1542, $P1541["sym"]
-    unless_null $P1542, vivify_358
-    new $P1542, "Undef"
-  vivify_358:
-    set $S1543, $P1542
-    find_lex $P1544, "%mods"
-    unless_null $P1544, vivify_359
-    $P1544 = root_new ['parrot';'Hash']
-    store_lex "%mods", $P1544
+.sub "mod_internal"  :subid("88_1279589166.57432") :method :outer("11_1279589166.57432")
+    .param pmc param_1551
+.annotate 'line', 486
+    new $P1550, 'ExceptionHandler'
+    set_addr $P1550, control_1549
+    $P1550."handle_types"(.CONTROL_RETURN)
+    push_eh $P1550
+    .lex "self", self
+    .lex "$/", param_1551
+.annotate 'line', 487
+    $P1552 = root_new ['parrot';'Hash']
+    .lex "%mods", $P1552
+.annotate 'line', 488
+    new $P1553, "Undef"
+    .lex "$n", $P1553
+.annotate 'line', 487
+    get_global $P1554, "@MODIFIERS"
+    unless_null $P1554, vivify_359
+    $P1554 = root_new ['parrot';'ResizablePMCArray']
   vivify_359:
-    set $P1544[$S1543], $P1539
-.annotate 'line', 484
-    find_lex $P1545, "$/"
-    $P1546 = $P1545."!make"(0)
-.annotate 'line', 480
-    .return ($P1546)
-  control_1520:
+    set $P1555, $P1554[0]
+    unless_null $P1555, vivify_360
+    new $P1555, "Undef"
+  vivify_360:
+    store_lex "%mods", $P1555
+.annotate 'line', 488
+    find_lex $P1558, "$/"
+    unless_null $P1558, vivify_361
+    $P1558 = root_new ['parrot';'Hash']
+  vivify_361:
+    set $P1559, $P1558["n"]
+    unless_null $P1559, vivify_362
+    $P1559 = root_new ['parrot';'ResizablePMCArray']
+  vivify_362:
+    set $P1560, $P1559[0]
+    unless_null $P1560, vivify_363
+    new $P1560, "Undef"
+  vivify_363:
+    set $S1561, $P1560
+    isgt $I1562, $S1561, ""
+    if $I1562, if_1557
+    new $P1567, "Integer"
+    assign $P1567, 1
+    set $P1556, $P1567
+    goto if_1557_end
+  if_1557:
+    find_lex $P1563, "$/"
+    unless_null $P1563, vivify_364
+    $P1563 = root_new ['parrot';'Hash']
+  vivify_364:
+    set $P1564, $P1563["n"]
+    unless_null $P1564, vivify_365
+    $P1564 = root_new ['parrot';'ResizablePMCArray']
+  vivify_365:
+    set $P1565, $P1564[0]
+    unless_null $P1565, vivify_366
+    new $P1565, "Undef"
+  vivify_366:
+    set $N1566, $P1565
+    new $P1556, 'Float'
+    set $P1556, $N1566
+  if_1557_end:
+    store_lex "$n", $P1556
+.annotate 'line', 489
+    find_lex $P1568, "$n"
+    find_lex $P1569, "$/"
+    unless_null $P1569, vivify_367
+    $P1569 = root_new ['parrot';'Hash']
+  vivify_367:
+    set $P1570, $P1569["mod_ident"]
+    unless_null $P1570, vivify_368
+    $P1570 = root_new ['parrot';'Hash']
+  vivify_368:
+    set $P1571, $P1570["sym"]
+    unless_null $P1571, vivify_369
+    new $P1571, "Undef"
+  vivify_369:
+    set $S1572, $P1571
+    find_lex $P1573, "%mods"
+    unless_null $P1573, vivify_370
+    $P1573 = root_new ['parrot';'Hash']
+    store_lex "%mods", $P1573
+  vivify_370:
+    set $P1573[$S1572], $P1568
+.annotate 'line', 490
+    find_lex $P1574, "$/"
+    $P1575 = $P1574."!make"(0)
+.annotate 'line', 486
+    .return ($P1575)
+  control_1549:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1547, exception, "payload"
-    .return ($P1547)
+    getattribute $P1576, exception, "payload"
+    .return ($P1576)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "subrule_alias"  :subid("88_1279564394.02125") :method :outer("11_1279564394.02125")
-    .param pmc param_1554
-    .param pmc param_1555
-.annotate 'line', 578
-    new $P1553, 'ExceptionHandler'
-    set_addr $P1553, control_1552
-    $P1553."handle_types"(.CONTROL_RETURN)
-    push_eh $P1553
+.sub "subrule_alias"  :subid("89_1279589166.57432") :method :outer("11_1279589166.57432")
+    .param pmc param_1583
+    .param pmc param_1584
+.annotate 'line', 584
+    new $P1582, 'ExceptionHandler'
+    set_addr $P1582, control_1581
+    $P1582."handle_types"(.CONTROL_RETURN)
+    push_eh $P1582
     .lex "self", self
-    .lex "$past", param_1554
-    .lex "$name", param_1555
-.annotate 'line', 579
-    find_lex $P1557, "$past"
-    $S1558 = $P1557."name"()
-    isgt $I1559, $S1558, ""
-    if $I1559, if_1556
-.annotate 'line', 580
-    find_lex $P1566, "$past"
-    find_lex $P1567, "$name"
-    $P1566."name"($P1567)
-    goto if_1556_end
-  if_1556:
-.annotate 'line', 579
-    find_lex $P1560, "$past"
-    find_lex $P1561, "$name"
-    concat $P1562, $P1561, "="
-    find_lex $P1563, "$past"
-    $S1564 = $P1563."name"()
-    concat $P1565, $P1562, $S1564
-    $P1560."name"($P1565)
-  if_1556_end:
-.annotate 'line', 581
-    find_lex $P1568, "$past"
-    $P1569 = $P1568."subtype"("capture")
-.annotate 'line', 578
-    .return ($P1569)
-  control_1552:
+    .lex "$past", param_1583
+    .lex "$name", param_1584
+.annotate 'line', 585
+    find_lex $P1586, "$past"
+    $S1587 = $P1586."name"()
+    isgt $I1588, $S1587, ""
+    if $I1588, if_1585
+.annotate 'line', 586
+    find_lex $P1595, "$past"
+    find_lex $P1596, "$name"
+    $P1595."name"($P1596)
+    goto if_1585_end
+  if_1585:
+.annotate 'line', 585
+    find_lex $P1589, "$past"
+    find_lex $P1590, "$name"
+    concat $P1591, $P1590, "="
+    find_lex $P1592, "$past"
+    $S1593 = $P1592."name"()
+    concat $P1594, $P1591, $S1593
+    $P1589."name"($P1594)
+  if_1585_end:
+.annotate 'line', 587
+    find_lex $P1597, "$past"
+    $P1598 = $P1597."subtype"("capture")
+.annotate 'line', 584
+    .return ($P1598)
+  control_1581:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1570, exception, "payload"
-    .return ($P1570)
+    getattribute $P1599, exception, "payload"
+    .return ($P1599)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "named_assertion"  :subid("89_1279564394.02125") :method :outer("11_1279564394.02125")
-    .param pmc param_1574
-.annotate 'line', 584
-    .const 'Sub' $P1607 = "90_1279564394.02125" 
-    capture_lex $P1607
-    new $P1573, 'ExceptionHandler'
-    set_addr $P1573, control_1572
-    $P1573."handle_types"(.CONTROL_RETURN)
-    push_eh $P1573
+.sub "named_assertion"  :subid("90_1279589166.57432") :method :outer("11_1279589166.57432")
+    .param pmc param_1603
+.annotate 'line', 590
+    new $P1602, 'ExceptionHandler'
+    set_addr $P1602, control_1601
+    $P1602."handle_types"(.CONTROL_RETURN)
+    push_eh $P1602
     .lex "self", self
-    .lex "$/", param_1574
-.annotate 'line', 585
-    new $P1575, "Undef"
-    .lex "$name", $P1575
-.annotate 'line', 586
-    new $P1576, "Undef"
-    .lex "$past", $P1576
-.annotate 'line', 585
-    find_lex $P1577, "$/"
-    unless_null $P1577, vivify_360
-    $P1577 = root_new ['parrot';'Hash']
-  vivify_360:
-    set $P1578, $P1577["longname"]
-    unless_null $P1578, vivify_361
-    new $P1578, "Undef"
-  vivify_361:
-    set $S1579, $P1578
-    new $P1580, 'String'
-    set $P1580, $S1579
-    store_lex "$name", $P1580
-.annotate 'line', 586
-    get_hll_global $P1581, ["PAST"], "Regex"
-    find_lex $P1582, "$name"
-    find_lex $P1583, "$name"
-    find_lex $P1584, "$/"
-    $P1585 = $P1581."new"($P1582, $P1583 :named("name"), "subrule" :named("pasttype"), "capture" :named("subtype"), $P1584 :named("node"))
-    store_lex "$past", $P1585
-.annotate 'line', 588
-    find_lex $P1587, "$/"
-    unless_null $P1587, vivify_362
-    $P1587 = root_new ['parrot';'Hash']
-  vivify_362:
-    set $P1588, $P1587["nibbler"]
-    unless_null $P1588, vivify_363
-    new $P1588, "Undef"
-  vivify_363:
-    if $P1588, if_1586
+    .lex "$/", param_1603
 .annotate 'line', 591
-    find_lex $P1596, "$/"
-    unless_null $P1596, vivify_364
-    $P1596 = root_new ['parrot';'Hash']
-  vivify_364:
-    set $P1597, $P1596["arglist"]
-    unless_null $P1597, vivify_365
-    new $P1597, "Undef"
-  vivify_365:
-    unless $P1597, if_1595_end
+    new $P1604, "Undef"
+    .lex "$name", $P1604
 .annotate 'line', 592
-    find_lex $P1599, "$/"
-    unless_null $P1599, vivify_366
-    $P1599 = root_new ['parrot';'Hash']
-  vivify_366:
-    set $P1600, $P1599["arglist"]
-    unless_null $P1600, vivify_367
-    $P1600 = root_new ['parrot';'ResizablePMCArray']
-  vivify_367:
-    set $P1601, $P1600[0]
-    unless_null $P1601, vivify_368
-    new $P1601, "Undef"
-  vivify_368:
-    $P1602 = $P1601."ast"()
-    $P1603 = $P1602."list"()
-    defined $I1604, $P1603
-    unless $I1604, for_undef_369
-    iter $P1598, $P1603
-    new $P1613, 'ExceptionHandler'
-    set_addr $P1613, loop1612_handler
-    $P1613."handle_types"(.CONTROL_LOOP_NEXT, .CONTROL_LOOP_REDO, .CONTROL_LOOP_LAST)
-    push_eh $P1613
-  loop1612_test:
-    unless $P1598, loop1612_done
-    shift $P1605, $P1598
-  loop1612_redo:
-    .const 'Sub' $P1607 = "90_1279564394.02125" 
-    capture_lex $P1607
-    $P1607($P1605)
-  loop1612_next:
-    goto loop1612_test
-  loop1612_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P1614, exception, 'type'
-    eq $P1614, .CONTROL_LOOP_NEXT, loop1612_next
-    eq $P1614, .CONTROL_LOOP_REDO, loop1612_redo
-  loop1612_done:
-    pop_eh 
-  for_undef_369:
-  if_1595_end:
+    new $P1605, "Undef"
+    .lex "$past", $P1605
 .annotate 'line', 591
-    goto if_1586_end
-  if_1586:
-.annotate 'line', 589
-    find_lex $P1589, "$past"
-    find_lex $P1590, "$/"
-    unless_null $P1590, vivify_370
-    $P1590 = root_new ['parrot';'Hash']
-  vivify_370:
-    set $P1591, $P1590["nibbler"]
-    unless_null $P1591, vivify_371
-    $P1591 = root_new ['parrot';'ResizablePMCArray']
+    find_lex $P1606, "$/"
+    unless_null $P1606, vivify_371
+    $P1606 = root_new ['parrot';'Hash']
   vivify_371:
-    set $P1592, $P1591[0]
-    unless_null $P1592, vivify_372
-    new $P1592, "Undef"
+    set $P1607, $P1606["longname"]
+    unless_null $P1607, vivify_372
+    new $P1607, "Undef"
   vivify_372:
-    $P1593 = $P1592."ast"()
-    $P1594 = "buildsub"($P1593)
-    $P1589."push"($P1594)
-  if_1586_end:
-.annotate 'line', 588
+    set $S1608, $P1607
+    new $P1609, 'String'
+    set $P1609, $S1608
+    store_lex "$name", $P1609
+.annotate 'line', 592
+    get_hll_global $P1610, ["PAST"], "Regex"
+    find_lex $P1611, "$name"
+    find_lex $P1612, "$name"
+    find_lex $P1613, "$/"
+    $P1614 = $P1610."new"($P1611, $P1612 :named("name"), "subrule" :named("pasttype"), "capture" :named("subtype"), $P1613 :named("node"))
+    store_lex "$past", $P1614
     find_lex $P1615, "$past"
-.annotate 'line', 584
+.annotate 'line', 590
     .return ($P1615)
-  control_1572:
+  control_1601:
     .local pmc exception 
     .get_results (exception) 
     getattribute $P1616, exception, "payload"
@@ -12544,30 +12555,18 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1606"  :anon :subid("90_1279564394.02125") :outer("89_1279564394.02125")
-    .param pmc param_1608
-.annotate 'line', 592
-    .lex "$_", param_1608
-    find_lex $P1609, "$past"
-    find_lex $P1610, "$_"
-    $P1611 = $P1609."push"($P1610)
-    .return ($P1611)
-.end
-
-
-.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1618" :load :anon :subid("91_1279564394.02125")
+.sub "_block1618" :load :anon :subid("91_1279589166.57432")
 .annotate 'line', 4
-    .const 'Sub' $P1620 = "11_1279564394.02125" 
+    .const 'Sub' $P1620 = "11_1279589166.57432" 
     $P1621 = $P1620()
     .return ($P1621)
 .end
 
 
 .namespace []
-.sub "_block1624" :load :anon :subid("92_1279564394.02125")
+.sub "_block1624" :load :anon :subid("92_1279589166.57432")
 .annotate 'line', 1
-    .const 'Sub' $P1626 = "10_1279564394.02125" 
+    .const 'Sub' $P1626 = "10_1279589166.57432" 
     $P1627 = $P1626()
     .return ($P1627)
 .end

Modified: branches/gsoc_threads/include/parrot/oplib/core_ops.h
==============================================================================
--- branches/gsoc_threads/include/parrot/oplib/core_ops.h	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/include/parrot/oplib/core_ops.h	Wed Jul 21 04:47:35 2010	(r48157)
@@ -20,7 +20,7 @@
 #include "parrot/oplib.h"
 #include "parrot/runcore_api.h"
 
- op_lib_t *Parrot_DynOp_core_2_5_0(PARROT_INTERP, long init);
+ op_lib_t *Parrot_DynOp_core_2_6_0(PARROT_INTERP, long init);
 
  opcode_t * Parrot_end(opcode_t *, PARROT_INTERP);
  opcode_t * Parrot_noop(opcode_t *, PARROT_INTERP);

Modified: branches/gsoc_threads/lib/Parrot/Docs/HTMLPage.pm
==============================================================================
--- branches/gsoc_threads/lib/Parrot/Docs/HTMLPage.pm	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/lib/Parrot/Docs/HTMLPage.pm	Wed Jul 21 04:47:35 2010	(r48157)
@@ -94,7 +94,7 @@
             </div> <!-- "mainbody" -->
             <div id="divider"></div>
             <div id="footer">
-	        Copyright &copy; 2002-2009, Parrot Foundation.
+	        Copyright &copy; 2002-2010, Parrot Foundation.
 FOOTER
 
     $footer .= "\n<br>Parrot version $version" if $version;

Modified: branches/gsoc_threads/src/ops/core_ops.c
==============================================================================
--- branches/gsoc_threads/src/ops/core_ops.c	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/src/ops/core_ops.c	Wed Jul 21 04:47:35 2010	(r48157)
@@ -25259,7 +25259,7 @@
     }
 }
 op_lib_t *
-Parrot_DynOp_core_2_5_0(PARROT_INTERP, long init) {
+Parrot_DynOp_core_2_6_0(PARROT_INTERP, long init) {
     /* initialize and return op_lib ptr */
     if (init == 1) {
 
@@ -25288,7 +25288,7 @@
 
 {
     PMC *const lib = Parrot_pmc_new(interp, enum_class_ParrotLibrary);
-    ((Parrot_ParrotLibrary_attributes*)PMC_data(lib))->oplib_init = (void *) Parrot_DynOp_core_2_5_0;
+    ((Parrot_ParrotLibrary_attributes*)PMC_data(lib))->oplib_init = (void *) Parrot_DynOp_core_2_6_0;
     dynop_register(interp, lib);
     return lib;
 }

Modified: branches/gsoc_threads/t/native_pbc/annotations.pbc
==============================================================================
Binary file (source and/or target). No diff available.

Modified: branches/gsoc_threads/t/native_pbc/integer.pbc
==============================================================================
Binary file (source and/or target). No diff available.

Modified: branches/gsoc_threads/t/native_pbc/integer_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.

Modified: branches/gsoc_threads/t/native_pbc/number.pbc
==============================================================================
Binary file (source and/or target). No diff available.

Modified: branches/gsoc_threads/t/native_pbc/number_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.

Modified: branches/gsoc_threads/t/native_pbc/string.pbc
==============================================================================
Binary file (source and/or target). No diff available.

Modified: branches/gsoc_threads/t/native_pbc/string_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.

Modified: branches/gsoc_threads/tools/util/release.json
==============================================================================
--- branches/gsoc_threads/tools/util/release.json	Wed Jul 21 04:28:22 2010	(r48156)
+++ branches/gsoc_threads/tools/util/release.json	Wed Jul 21 04:47:35 2010	(r48157)
@@ -1,9 +1,9 @@
 {
-    "release.version"  : "2.5.0",
-    "release.name"     : "Cheops",
+    "release.version"  : "2.6.0",
+    "release.name"     : "Red-rumped",
     "release.day"      : "Tuesday",
-    "release.date"     : "15 June 2010",
-    "release.nextdate" : "20 July 2010",
+    "release.date"     : "20 July 2010",
+    "release.nextdate" : "17 August 2010",
 
     "web.root"         : "http://parrot.org/",
     "web.source"       : "download",
@@ -11,12 +11,11 @@
     "web.repository"   : "https://svn.parrot.org/parrot/trunk/",
 
     "bugday.day"       : "Saturday",
-    "bugday.date"      : "17 July 2010",
+    "bugday.date"      : "14 August 2010",
 
     "wiki.root"        : "https://trac.parrot.org/parrot/wiki/",
-    "wiki.bugday"      : "bug_day_2010_07_17",
+    "wiki.bugday"      : "bug_day_2010_08_14",
 
-    "ftp.path"         : "ftp://ftp.parrot.org/pub/parrot/releases/devel/2.5.0/",
-    "subversion.root"  : "http://subversion.apache.org/",
-    "svk.root"         : "http://svk.bestpractical.com/"
+    "ftp.path"         : "ftp://ftp.parrot.org/pub/parrot/releases/supported/2.6.0/",
+    "subversion.root"  : "http://subversion.apache.org/"
 }


More information about the parrot-commits mailing list