[svn:parrot] r45948 - in branches/runcore_purge: . compilers/data_json compilers/imcc compilers/pge/PGE config/auto config/auto/zlib config/gen/makefiles config/gen/platform/generic docs docs/pdds docs/project ext/Parrot-Embed ext/SQLite3 ext/nqp-rx ext/nqp-rx/src/stage0 include/parrot lib/Parrot lib/Parrot/Configure/Options lib/Parrot/Configure/Options/Conf lib/Parrot/Configure/Options/Test lib/Parrot/Configure/Step lib/Parrot/Pmc2c ports/cpan ports/fedora ports/fedora/2.3.0 ports/suse ports/suse/2.2.0 runtime/parrot/library runtime/parrot/library/TAP src src/call src/dynpmc src/interp src/io src/ops src/packfile src/pmc src/runcore src/string src/string/charset src/string/encoding t t/compilers/imcc/syn t/distro t/dynpmc t/library t/native_pbc t/op t/pmc t/src t/steps/auto tools/dev

cotto at svn.parrot.org cotto at svn.parrot.org
Sat Apr 24 00:51:42 UTC 2010


Author: cotto
Date: Sat Apr 24 00:51:33 2010
New Revision: 45948
URL: https://trac.parrot.org/parrot/changeset/45948

Log:
sync branch with trunk

Added:
   branches/runcore_purge/.gitignore
      - copied unchanged from r45947, trunk/.gitignore
   branches/runcore_purge/config/auto/zlib/
      - copied from r45947, trunk/config/auto/zlib/
   branches/runcore_purge/config/auto/zlib.pm
      - copied unchanged from r45947, trunk/config/auto/zlib.pm
   branches/runcore_purge/ports/fedora/2.3.0/
      - copied from r45947, trunk/ports/fedora/2.3.0/
   branches/runcore_purge/ports/suse/2.2.0/
      - copied from r45947, trunk/ports/suse/2.2.0/
   branches/runcore_purge/src/dynpmc/gziphandle.pmc
      - copied unchanged from r45947, trunk/src/dynpmc/gziphandle.pmc
   branches/runcore_purge/t/dynpmc/gziphandle.t
      - copied unchanged from r45947, trunk/t/dynpmc/gziphandle.t
   branches/runcore_purge/t/harness.pir
      - copied unchanged from r45947, trunk/t/harness.pir
   branches/runcore_purge/t/steps/auto/zlib-01.t
      - copied unchanged from r45947, trunk/t/steps/auto/zlib-01.t
Replaced:
   branches/runcore_purge/config/auto/zlib/zlib_c.in
      - copied unchanged from r45947, trunk/config/auto/zlib/zlib_c.in
   branches/runcore_purge/ports/fedora/2.3.0/parrot.desk.in.tar.gz
      - copied unchanged from r45947, trunk/ports/fedora/2.3.0/parrot.desk.in.tar.gz
   branches/runcore_purge/ports/fedora/2.3.0/parrot.patch
      - copied unchanged from r45947, trunk/ports/fedora/2.3.0/parrot.patch
   branches/runcore_purge/ports/fedora/2.3.0/parrot.spec
      - copied unchanged from r45947, trunk/ports/fedora/2.3.0/parrot.spec
   branches/runcore_purge/ports/suse/2.2.0/parrot.diff
      - copied unchanged from r45947, trunk/ports/suse/2.2.0/parrot.diff
   branches/runcore_purge/ports/suse/2.2.0/parrot.spec
      - copied unchanged from r45947, trunk/ports/suse/2.2.0/parrot.spec
Deleted:
   branches/runcore_purge/META.yml
   branches/runcore_purge/Makefile.PL
   branches/runcore_purge/ext/SQLite3/
   branches/runcore_purge/ext/nqp-rx/.gitignore
   branches/runcore_purge/ports/cpan/
   branches/runcore_purge/ports/fedora/parrot.patch
   branches/runcore_purge/ports/fedora/parrot.spec.fedora
   branches/runcore_purge/ports/suse/parrot.spec.suse
   branches/runcore_purge/runtime/parrot/library/SQLite3.pir
   branches/runcore_purge/src/pmc/retcontinuation.pmc
   branches/runcore_purge/t/distro/meta_yml.t
   branches/runcore_purge/t/pmc/retcontinuation.t
Modified:
   branches/runcore_purge/   (props changed)
   branches/runcore_purge/DEPRECATED.pod
   branches/runcore_purge/MANIFEST
   branches/runcore_purge/MANIFEST.SKIP
   branches/runcore_purge/MANIFEST.generated
   branches/runcore_purge/NEWS
   branches/runcore_purge/PBC_COMPAT
   branches/runcore_purge/compilers/data_json/Defines.mak
   branches/runcore_purge/compilers/data_json/Rules.mak
   branches/runcore_purge/compilers/imcc/parser_util.c
   branches/runcore_purge/compilers/imcc/pbc.c
   branches/runcore_purge/compilers/pge/PGE/Exp.pir
   branches/runcore_purge/config/gen/makefiles/dynpmc.in
   branches/runcore_purge/config/gen/makefiles/root.in
   branches/runcore_purge/config/gen/platform/generic/itimer.c
   branches/runcore_purge/docs/embed.pod
   branches/runcore_purge/docs/pdds/pdd28_strings.pod
   branches/runcore_purge/docs/project/release_manager_guide.pod
   branches/runcore_purge/ext/Parrot-Embed/MANIFEST
   branches/runcore_purge/ext/nqp-rx/src/stage0/HLL-s0.pir
   branches/runcore_purge/ext/nqp-rx/src/stage0/NQP-s0.pir
   branches/runcore_purge/ext/nqp-rx/src/stage0/P6Regex-s0.pir
   branches/runcore_purge/ext/nqp-rx/src/stage0/Regex-s0.pir
   branches/runcore_purge/include/parrot/charset.h
   branches/runcore_purge/include/parrot/encoding.h
   branches/runcore_purge/include/parrot/io.h
   branches/runcore_purge/include/parrot/packfile.h
   branches/runcore_purge/include/parrot/runcore_trace.h   (props changed)
   branches/runcore_purge/include/parrot/string_funcs.h
   branches/runcore_purge/include/parrot/string_primitives.h
   branches/runcore_purge/include/parrot/sub.h
   branches/runcore_purge/lib/Parrot/Configure/Options/Conf.pm
   branches/runcore_purge/lib/Parrot/Configure/Options/Conf/Shared.pm
   branches/runcore_purge/lib/Parrot/Configure/Options/Test/Prepare.pm
   branches/runcore_purge/lib/Parrot/Configure/Step/List.pm
   branches/runcore_purge/lib/Parrot/Distribution.pm
   branches/runcore_purge/lib/Parrot/Pmc2c/PMCEmitter.pm
   branches/runcore_purge/runtime/parrot/library/TAP/Formatter.pir
   branches/runcore_purge/runtime/parrot/library/TAP/Harness.pir
   branches/runcore_purge/runtime/parrot/library/TAP/Parser.pir
   branches/runcore_purge/runtime/parrot/library/distutils.pir
   branches/runcore_purge/runtime/parrot/library/osutils.pir
   branches/runcore_purge/src/call/args.c
   branches/runcore_purge/src/call/context.c
   branches/runcore_purge/src/call/pcc.c
   branches/runcore_purge/src/dynext.c
   branches/runcore_purge/src/embed.c
   branches/runcore_purge/src/hash.c
   branches/runcore_purge/src/hll.c
   branches/runcore_purge/src/interp/inter_create.c   (props changed)
   branches/runcore_purge/src/interp/inter_misc.c
   branches/runcore_purge/src/io/api.c
   branches/runcore_purge/src/io/buffer.c
   branches/runcore_purge/src/io/filehandle.c
   branches/runcore_purge/src/io/utf8.c
   branches/runcore_purge/src/io/win32.c
   branches/runcore_purge/src/key.c
   branches/runcore_purge/src/library.c
   branches/runcore_purge/src/ops/bit.ops
   branches/runcore_purge/src/ops/core.ops
   branches/runcore_purge/src/ops/ops.num
   branches/runcore_purge/src/ops/set.ops
   branches/runcore_purge/src/ops/string.ops
   branches/runcore_purge/src/packdump.c
   branches/runcore_purge/src/packfile.c
   branches/runcore_purge/src/packfile/pf_items.c
   branches/runcore_purge/src/pbc_dump.c
   branches/runcore_purge/src/pbc_merge.c
   branches/runcore_purge/src/pmc/bigint.pmc
   branches/runcore_purge/src/pmc/bignum.pmc
   branches/runcore_purge/src/pmc/callcontext.pmc
   branches/runcore_purge/src/pmc/class.pmc
   branches/runcore_purge/src/pmc/codestring.pmc
   branches/runcore_purge/src/pmc/continuation.pmc
   branches/runcore_purge/src/pmc/coroutine.pmc
   branches/runcore_purge/src/pmc/eventhandler.pmc
   branches/runcore_purge/src/pmc/filehandle.pmc
   branches/runcore_purge/src/pmc/fixedbooleanarray.pmc
   branches/runcore_purge/src/pmc/fixedintegerarray.pmc
   branches/runcore_purge/src/pmc/fixedpmcarray.pmc
   branches/runcore_purge/src/pmc/fixedstringarray.pmc
   branches/runcore_purge/src/pmc/hash.pmc
   branches/runcore_purge/src/pmc/key.pmc
   branches/runcore_purge/src/pmc/lexinfo.pmc
   branches/runcore_purge/src/pmc/namespace.pmc
   branches/runcore_purge/src/pmc/object.pmc
   branches/runcore_purge/src/pmc/packfileannotations.pmc
   branches/runcore_purge/src/pmc/packfiledirectory.pmc
   branches/runcore_purge/src/pmc/packfilefixupentry.pmc
   branches/runcore_purge/src/pmc/parrotinterpreter.pmc
   branches/runcore_purge/src/pmc/pmcproxy.pmc
   branches/runcore_purge/src/pmc/resizablepmcarray.pmc
   branches/runcore_purge/src/pmc/role.pmc
   branches/runcore_purge/src/pmc/scalar.pmc
   branches/runcore_purge/src/pmc/schedulermessage.pmc
   branches/runcore_purge/src/pmc/string.pmc
   branches/runcore_purge/src/pmc/stringhandle.pmc
   branches/runcore_purge/src/pmc/sub.pmc
   branches/runcore_purge/src/runcore/cores.c   (props changed)
   branches/runcore_purge/src/runcore/profiling.c
   branches/runcore_purge/src/runcore/trace.c   (props changed)
   branches/runcore_purge/src/spf_render.c
   branches/runcore_purge/src/spf_vtable.c
   branches/runcore_purge/src/string/api.c
   branches/runcore_purge/src/string/charset.c
   branches/runcore_purge/src/string/charset/ascii.c
   branches/runcore_purge/src/string/charset/ascii.h
   branches/runcore_purge/src/string/charset/binary.c
   branches/runcore_purge/src/string/charset/binary.h
   branches/runcore_purge/src/string/charset/iso-8859-1.c
   branches/runcore_purge/src/string/charset/iso-8859-1.h
   branches/runcore_purge/src/string/charset/unicode.c
   branches/runcore_purge/src/string/charset/unicode.h
   branches/runcore_purge/src/string/encoding/fixed_8.c
   branches/runcore_purge/src/string/encoding/fixed_8.h
   branches/runcore_purge/src/string/encoding/ucs2.c
   branches/runcore_purge/src/string/encoding/ucs2.h
   branches/runcore_purge/src/string/encoding/utf16.c
   branches/runcore_purge/src/string/encoding/utf16.h
   branches/runcore_purge/src/string/encoding/utf8.c
   branches/runcore_purge/src/string/encoding/utf8.h
   branches/runcore_purge/src/string/primitives.c
   branches/runcore_purge/src/sub.c
   branches/runcore_purge/t/compilers/imcc/syn/regressions.t
   branches/runcore_purge/t/library/mime_base64.t
   branches/runcore_purge/t/library/pcre.t
   branches/runcore_purge/t/native_pbc/annotations.pbc
   branches/runcore_purge/t/native_pbc/integer_1.pbc
   branches/runcore_purge/t/native_pbc/number_1.pbc
   branches/runcore_purge/t/native_pbc/string_1.pbc
   branches/runcore_purge/t/op/00ff-unix.t
   branches/runcore_purge/t/op/fetch.t
   branches/runcore_purge/t/op/gc-leaky.t
   branches/runcore_purge/t/op/gc.t
   branches/runcore_purge/t/op/string.t
   branches/runcore_purge/t/op/vivify.t
   branches/runcore_purge/t/pmc/bigint.t
   branches/runcore_purge/t/pmc/namespace.t
   branches/runcore_purge/t/pmc/string.t
   branches/runcore_purge/t/src/embed.t   (props changed)
   branches/runcore_purge/tools/dev/checkdepend.pl
   branches/runcore_purge/tools/dev/mk_gitignore.pl   (props changed)
   branches/runcore_purge/tools/dev/mk_manifest_and_skip.pl
   branches/runcore_purge/tools/dev/nci_thunk_gen.pir
   branches/runcore_purge/tools/dev/pbc_to_exe.pir
   branches/runcore_purge/tools/dev/tapir.pir

Copied: branches/runcore_purge/.gitignore (from r45947, trunk/.gitignore)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/runcore_purge/.gitignore	Sat Apr 24 00:51:33 2010	(r45948, copy of r45947, trunk/.gitignore)
@@ -0,0 +1,604 @@
+# ex: set ro:
+# $Id
+# generated by tools/dev/mk_manifest_and_skip.pl Wed Apr 21 10:28:38 2010 UT
+#
+# This file should contain a transcript of the svn:ignore properties
+# of the directories in the Parrot subversion repository. (Needed for
+# distributions or in general when svn is not available).
+# See docs/submissions.pod on how to recreate this file after SVN
+# has been told about new generated files.
+#
+# Ignore the SVN directories
+\B.svn\b
+
+# ports/ should not go into release tarballs
+ports
+# generated from svn:ignore of './'
+*.core
+*.def
+*.exe
+*.exp
+*.ilk
+*.lib
+*.manifest
+*.ncb
+*.o
+*.obj
+*.patch
+*.pdb
+*.sln
+*.sto
+*.suo
+*.tmp
+*.vcproj*
+.git
+.parrot_current_rev
+CFLAGS
+MANIFEST.configure.generated
+Makefile
+TAGS
+all_cstring.str
+blib
+config_lib.pir
+cover_db
+install_config.fpmc
+installable*
+libparrot.def
+libparrot.dll
+miniparrot
+myconfig
+parrot
+parrot-nqp
+parrot-nqp.c
+parrot-nqp.pbc
+parrot.ilk
+parrot.iss
+parrot.pc
+parrot.pdb
+parrot_config
+parrot_config.c
+parrot_config.pbc
+parrot_debugger
+parrot_nci_thunk_gen
+parrot_nci_thunk_gen.c
+parrot_nci_thunk_gen.pbc
+parrot_test_run.tar.gz
+pbc_disassemble
+pbc_dump
+pbc_info
+pbc_merge
+pbc_to_exe
+pbc_to_exe.*
+perl6
+pirc
+tags
+tapir
+tapir.*
+temp.file
+test
+test.c
+test.cco
+test.err
+test.ilk
+test.ldo
+test.out
+test.pdb
+vc60.pdb
+vc70.pdb
+vtable.dump
+# generated from svn:ignore of 'compilers/data_json/'
+compilers/data_json/data_json.pbc
+# generated from svn:ignore of 'compilers/data_json/data_json/'
+compilers/data_json/data_json/*.pbc
+compilers/data_json/data_json/*.pir
+# generated from svn:ignore of 'compilers/imcc/'
+compilers/imcc/*.flag
+compilers/imcc/*.o
+compilers/imcc/*.obj
+compilers/imcc/*.tmp
+compilers/imcc/Rules.mak
+compilers/imcc/imcc
+compilers/imcc/imclexer.c
+compilers/imcc/imcparser.c
+compilers/imcc/imcparser.h
+compilers/imcc/imcparser.output
+# generated from svn:ignore of 'compilers/json/'
+compilers/json/JSON.pbc
+# generated from svn:ignore of 'compilers/json/JSON/'
+compilers/json/JSON/*.pbc
+compilers/json/JSON/*.pir
+# generated from svn:ignore of 'compilers/ncigen/'
+compilers/ncigen/Makefile
+compilers/ncigen/ncigen.pbc
+# generated from svn:ignore of 'compilers/ncigen/src/'
+compilers/ncigen/src/gen_actions.pir
+compilers/ncigen/src/gen_builtins.pir
+compilers/ncigen/src/gen_grammar.pir
+# generated from svn:ignore of 'compilers/nqp/'
+compilers/nqp/nqp.pbc
+# generated from svn:ignore of 'compilers/nqp/bootstrap/'
+compilers/nqp/bootstrap/gen_actions.pir
+compilers/nqp/bootstrap/nqp.pbc
+# generated from svn:ignore of 'compilers/nqp/src/'
+compilers/nqp/src/Grammar_gen.pir
+# generated from svn:ignore of 'compilers/pct/src/PAST/'
+compilers/pct/src/PAST/*.pbc
+# generated from svn:ignore of 'compilers/pct/src/PCT/'
+compilers/pct/src/PCT/*.pbc
+# generated from svn:ignore of 'compilers/pct/src/POST/'
+compilers/pct/src/POST/*.pbc
+compilers/pct/src/POST/Grammar_gen.pir
+# generated from svn:ignore of 'compilers/pge/'
+compilers/pge/PGE.pbc
+# generated from svn:ignore of 'compilers/pge/PGE/'
+compilers/pge/PGE/*.dll
+compilers/pge/PGE/builtins_gen.pir
+# generated from svn:ignore of 'compilers/pirc/'
+compilers/pirc/*.o
+compilers/pirc/*.obj
+compilers/pirc/*.pbd
+compilers/pirc/pirc
+compilers/pirc/pirc.exe
+# generated from svn:ignore of 'compilers/pirc/t/'
+compilers/pirc/t/basic_?.pir
+compilers/pirc/t/basic_??.pir
+compilers/pirc/t/heredoc_?.pir
+compilers/pirc/t/macro_?.pir
+compilers/pirc/t/stmts_?.pir
+compilers/pirc/t/subflags_?.pir
+# generated from svn:ignore of 'compilers/tge/'
+compilers/tge/tgc.pbc
+# generated from svn:ignore of 'compilers/tge/TGE/'
+compilers/tge/TGE/Parser.pir
+# generated from svn:ignore of 'docs/'
+docs/*.tmp
+docs/Makefile
+docs/doc-prep
+docs/html
+docs/packfile-c.pod
+docs/packfile-perl.pod
+# generated from svn:ignore of 'docs/book/'
+docs/book/*.html
+# generated from svn:ignore of 'docs/ops/'
+docs/ops/*.pod
+# generated from svn:ignore of 'editor/'
+editor/Makefile
+editor/imc.vim
+editor/imcc.xml
+editor/pir.vim
+# generated from svn:ignore of 'examples/languages/abc/'
+examples/languages/abc/*.c
+examples/languages/abc/*.exe
+examples/languages/abc/*.iss
+examples/languages/abc/*.o
+examples/languages/abc/*.obj
+examples/languages/abc/*.pbc
+examples/languages/abc/MANIFEST
+examples/languages/abc/abc
+examples/languages/abc/installable_abc
+examples/languages/abc/man
+# generated from svn:ignore of 'examples/languages/abc/src/'
+examples/languages/abc/src/gen_actions.pir
+examples/languages/abc/src/gen_builtins.pir
+examples/languages/abc/src/gen_grammar.pir
+# generated from svn:ignore of 'examples/languages/abc/t/'
+examples/languages/abc/t/*_*.out
+examples/languages/abc/t/*_*.pir
+# generated from svn:ignore of 'examples/languages/squaak/'
+examples/languages/squaak/*.c
+examples/languages/squaak/*.exe
+examples/languages/squaak/*.iss
+examples/languages/squaak/*.o
+examples/languages/squaak/*.obj
+examples/languages/squaak/*.pbc
+examples/languages/squaak/MANIFEST
+examples/languages/squaak/installable_squaak
+examples/languages/squaak/squaak
+# generated from svn:ignore of 'examples/languages/squaak/src/'
+examples/languages/squaak/src/gen_*.pir
+# generated from svn:ignore of 'examples/mops/'
+examples/mops/*.o
+examples/mops/mops
+# generated from svn:ignore of 'examples/nci/'
+examples/nci/*.pbc
+# generated from svn:ignore of 'examples/pasm/'
+examples/pasm/hello
+examples/pasm/hello.o
+examples/pasm/hello.pbc
+# generated from svn:ignore of 'examples/pir/befunge/'
+examples/pir/befunge/*.c
+examples/pir/befunge/*.exe
+examples/pir/befunge/*.iss
+examples/pir/befunge/*.o
+examples/pir/befunge/*.obj
+examples/pir/befunge/*.pbc
+examples/pir/befunge/MANIFEST
+examples/pir/befunge/befunge
+examples/pir/befunge/installable_befunge
+# generated from svn:ignore of 'ext/'
+ext/Makefile
+# generated from svn:ignore of 'ext/Parrot-Embed/'
+ext/Parrot-Embed/*.bs
+ext/Parrot-Embed/*.bundle
+ext/Parrot-Embed/*.c
+ext/Parrot-Embed/*.def
+ext/Parrot-Embed/*.dll
+ext/Parrot-Embed/*.dump
+ext/Parrot-Embed/*.dylib
+ext/Parrot-Embed/*.exe
+ext/Parrot-Embed/*.exp
+ext/Parrot-Embed/*.h
+ext/Parrot-Embed/*.ilk
+ext/Parrot-Embed/*.lib
+ext/Parrot-Embed/*.manifest
+ext/Parrot-Embed/*.o
+ext/Parrot-Embed/*.obj
+ext/Parrot-Embed/*.old
+ext/Parrot-Embed/*.pdb
+ext/Parrot-Embed/*.pdb
+ext/Parrot-Embed/*.so
+ext/Parrot-Embed/*.tmp
+ext/Parrot-Embed/*.xs
+ext/Parrot-Embed/Build
+ext/Parrot-Embed/Build.bat
+ext/Parrot-Embed/Makefile
+ext/Parrot-Embed/Makefile.PL
+ext/Parrot-Embed/_build
+ext/Parrot-Embed/blib
+ext/Parrot-Embed/dll.base
+ext/Parrot-Embed/pm_to_blib
+# generated from svn:ignore of 'ext/Parrot-Embed/lib/Parrot/'
+ext/Parrot-Embed/lib/Parrot/*.c
+ext/Parrot-Embed/lib/Parrot/*.obj
+# generated from svn:ignore of 'ext/Parrot-Embed/t/'
+ext/Parrot-Embed/t/*.pbc
+# generated from svn:ignore of 'include/parrot/'
+include/parrot/*.tmp
+include/parrot/config.h
+include/parrot/core_pmcs.h
+include/parrot/extend_vtable.h
+include/parrot/feature.h
+include/parrot/has_header.h
+include/parrot/opsenum.h
+include/parrot/pbcversion.h
+include/parrot/platform.h
+include/parrot/platform_interface.h
+include/parrot/platform_limits.h
+include/parrot/vtable.h
+# generated from svn:ignore of 'include/parrot/oplib/'
+include/parrot/oplib/*_ops.h
+include/parrot/oplib/*_ops_cg*.h
+include/parrot/oplib/*_ops_switch.h
+include/parrot/oplib/ops.h
+# generated from svn:ignore of 'include/pmc/'
+include/pmc/*.h
+# generated from svn:ignore of 'lib/'
+lib/DumbLink.pm
+# generated from svn:ignore of 'lib/Parrot/'
+lib/Parrot/*.tmp
+lib/Parrot/Jit.pm
+lib/Parrot/Makefile
+lib/Parrot/OpLib
+lib/Parrot/PMC.pm
+lib/Parrot/PakFile2.bs
+lib/Parrot/PakFile2.c
+lib/Parrot/blib
+lib/Parrot/pm_to_blib
+# generated from svn:ignore of 'lib/Parrot/Config/'
+lib/Parrot/Config/Generated.pm
+# generated from svn:ignore of 'lib/Parrot/Pmc2c/'
+lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm
+# generated from svn:ignore of 'runtime/parrot/dynext/'
+runtime/parrot/dynext/*.bundle
+runtime/parrot/dynext/*.def
+runtime/parrot/dynext/*.dll
+runtime/parrot/dynext/*.dylib
+runtime/parrot/dynext/*.exe
+runtime/parrot/dynext/*.exp
+runtime/parrot/dynext/*.ilk
+runtime/parrot/dynext/*.lib
+runtime/parrot/dynext/*.manifest
+runtime/parrot/dynext/*.obj
+runtime/parrot/dynext/*.pdb
+runtime/parrot/dynext/*.so
+runtime/parrot/dynext/libnci.*
+# generated from svn:ignore of 'runtime/parrot/include/'
+runtime/parrot/include/*.fpmc
+runtime/parrot/include/*.pasm
+runtime/parrot/include/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/'
+runtime/parrot/library/*.pbc
+runtime/parrot/library/OpenGL_funcs.pir
+runtime/parrot/library/PAST
+runtime/parrot/library/config.pir
+# generated from svn:ignore of 'runtime/parrot/library/CGI/'
+runtime/parrot/library/CGI/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Config/'
+runtime/parrot/library/Config/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Configure/'
+runtime/parrot/library/Configure/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Data/'
+runtime/parrot/library/Data/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Data/Dumper/'
+runtime/parrot/library/Data/Dumper/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Digest/'
+runtime/parrot/library/Digest/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Getopt/'
+runtime/parrot/library/Getopt/Obj.pbc
+# generated from svn:ignore of 'runtime/parrot/library/MIME/'
+runtime/parrot/library/MIME/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Math/'
+runtime/parrot/library/Math/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/NCI/'
+runtime/parrot/library/NCI/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/OpenGL/'
+runtime/parrot/library/OpenGL/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/PCT/'
+runtime/parrot/library/PCT/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/PGE/'
+runtime/parrot/library/PGE/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Parrot/'
+runtime/parrot/library/Parrot/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/ProfTest/'
+runtime/parrot/library/ProfTest/*.pbc
+runtime/parrot/library/ProfTest/*.pir
+# generated from svn:ignore of 'runtime/parrot/library/Stream/'
+runtime/parrot/library/Stream/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/String/'
+runtime/parrot/library/String/Utils.pbc
+# generated from svn:ignore of 'runtime/parrot/library/TAP/'
+runtime/parrot/library/TAP/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Tcl/'
+runtime/parrot/library/Tcl/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Test/'
+runtime/parrot/library/Test/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Test/Builder/'
+runtime/parrot/library/Test/Builder/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/YAML/'
+runtime/parrot/library/YAML/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/YAML/Dumper/'
+runtime/parrot/library/YAML/Dumper/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/YAML/Parser/'
+runtime/parrot/library/YAML/Parser/*.pbc
+# generated from svn:ignore of 'src/'
+src/*.o
+src/*.obj
+src/*.str
+src/asmfun.*
+src/core_pmcs.c
+src/exec_cpu.c
+src/exec_dep.c
+src/exec_dep.h
+src/extend_vtable.c
+src/extra_nci_thunks.c
+src/fingerprint.c
+src/glut_callbacks.c
+src/glut_nci_thunks.c
+src/glut_nci_thunks.nci
+src/install_config.c
+src/jit_cpu.c
+src/jit_defs.c
+src/jit_emit.h
+src/null_config.c
+src/parrot_config.c
+src/parrot_config.h
+src/platform.c
+src/platform_asm.s
+src/revision.c
+# generated from svn:ignore of 'src/atomic/'
+src/atomic/*.gcda
+src/atomic/*.o
+# generated from svn:ignore of 'src/call/'
+src/call/*.o
+src/call/*.obj
+src/call/*.str
+# generated from svn:ignore of 'src/dynoplibs/'
+src/dynoplibs/*.bundle
+src/dynoplibs/*.c
+src/dynoplibs/*.dll
+src/dynoplibs/*.exp
+src/dynoplibs/*.h
+src/dynoplibs/*.ilk
+src/dynoplibs/*.lib
+src/dynoplibs/*.manifest
+src/dynoplibs/*.o
+src/dynoplibs/*.obj
+src/dynoplibs/*.pdb
+src/dynoplibs/*.so
+src/dynoplibs/Defines.mak
+src/dynoplibs/Rules.mak
+# generated from svn:ignore of 'src/dynpmc/'
+src/dynpmc/*.bundle
+src/dynpmc/*.c
+src/dynpmc/*.def
+src/dynpmc/*.dll
+src/dynpmc/*.dump
+src/dynpmc/*.dylib
+src/dynpmc/*.exe
+src/dynpmc/*.exp
+src/dynpmc/*.h
+src/dynpmc/*.ilk
+src/dynpmc/*.lib
+src/dynpmc/*.manifest
+src/dynpmc/*.o
+src/dynpmc/*.obj
+src/dynpmc/*.pdb
+src/dynpmc/*.so
+src/dynpmc/Makefile
+src/dynpmc/md2.pmc
+src/dynpmc/md4.pmc
+src/dynpmc/md5.pmc
+src/dynpmc/ripemd160.pmc
+src/dynpmc/sha.pmc
+src/dynpmc/sha1.pmc
+src/dynpmc/sha256.pmc
+src/dynpmc/sha512.pmc
+# generated from svn:ignore of 'src/gc/'
+src/gc/*.bundle
+src/gc/*.c
+src/gc/*.def
+src/gc/*.dll
+src/gc/*.dump
+src/gc/*.dylib
+src/gc/*.exe
+src/gc/*.exp
+src/gc/*.h
+src/gc/*.ilk
+src/gc/*.lib
+src/gc/*.manifest
+src/gc/*.o
+src/gc/*.obj
+src/gc/*.pdb
+src/gc/*.so
+src/gc/Makefile
+# generated from svn:ignore of 'src/interp/'
+src/interp/*.o
+src/interp/*.str
+# generated from svn:ignore of 'src/io/'
+src/io/*.o
+src/io/*.obj
+src/io/*.str
+# generated from svn:ignore of 'src/nci/'
+src/nci/*.o
+src/nci/*.obj
+src/nci/*.str
+# generated from svn:ignore of 'src/ops/'
+src/ops/*.c
+src/ops/*.o
+src/ops/*.obj
+# generated from svn:ignore of 'src/packfile/'
+src/packfile/*.o
+src/packfile/*.obj
+# generated from svn:ignore of 'src/pmc/'
+src/pmc/*.c
+src/pmc/*.dump
+src/pmc/*.h
+src/pmc/*.o
+src/pmc/*.obj
+src/pmc/*.str
+src/pmc/*.tmp
+src/pmc/Makefile
+# generated from svn:ignore of 'src/runcore/'
+src/runcore/*.o
+src/runcore/*.obj
+src/runcore/*.str
+# generated from svn:ignore of 'src/string/'
+src/string/*.o
+src/string/*.obj
+src/string/*.str
+src/string/private_cstring.h
+# generated from svn:ignore of 'src/string/charset/'
+src/string/charset/*.o
+src/string/charset/*.obj
+# generated from svn:ignore of 'src/string/encoding/'
+src/string/encoding/*.o
+src/string/encoding/*.obj
+# generated from svn:ignore of 't/benchmark/'
+t/benchmark/*.pasm
+t/benchmark/*.pir
+# generated from svn:ignore of 't/compilers/imcc/'
+t/compilers/imcc/*.pbc
+# generated from svn:ignore of 't/compilers/imcc/imcpasm/'
+t/compilers/imcc/imcpasm/*.pasm
+t/compilers/imcc/imcpasm/*.pbc
+t/compilers/imcc/imcpasm/*.pir
+t/compilers/imcc/imcpasm/*_pbcexe
+# generated from svn:ignore of 't/compilers/imcc/reg/'
+t/compilers/imcc/reg/*.pasm
+t/compilers/imcc/reg/*.pbc
+t/compilers/imcc/reg/*.pir
+t/compilers/imcc/reg/*_pbcexe*
+# generated from svn:ignore of 't/compilers/imcc/syn/'
+t/compilers/imcc/syn/*.pasm
+t/compilers/imcc/syn/*.pbc
+t/compilers/imcc/syn/*.pir
+t/compilers/imcc/syn/*_pbcexe*
+# generated from svn:ignore of 't/compilers/json/'
+t/compilers/json/*.pbc
+t/compilers/json/*.pir
+t/compilers/json/*_pbcexe
+# generated from svn:ignore of 't/compilers/pct/'
+t/compilers/pct/*.pbc
+t/compilers/pct/*.pir
+# generated from svn:ignore of 't/compilers/pge/'
+t/compilers/pge/*.pasm
+t/compilers/pge/*.pbc
+t/compilers/pge/*.pir
+t/compilers/pge/*_pbcexe
+# generated from svn:ignore of 't/compilers/pge/p5regex/'
+t/compilers/pge/p5regex/*.pir
+# generated from svn:ignore of 't/compilers/pge/perl6regex/'
+t/compilers/pge/perl6regex/*.pbc
+t/compilers/pge/perl6regex/*.pir
+# generated from svn:ignore of 't/compilers/tge/'
+t/compilers/tge/*.pbc
+t/compilers/tge/*.pir
+t/compilers/tge/*_pbcexe
+# generated from svn:ignore of 't/dynoplibs/'
+t/dynoplibs/*.pasm
+t/dynoplibs/*.pbc
+t/dynoplibs/*.pir
+# generated from svn:ignore of 't/dynpmc/'
+t/dynpmc/*.pasm
+t/dynpmc/*.pbc
+t/dynpmc/*.pir
+t/dynpmc/*_pbcexe*
+t/dynpmc/md2.t
+t/dynpmc/md4.t
+t/dynpmc/md5.t
+t/dynpmc/ripemd160.t
+t/dynpmc/sha.t
+t/dynpmc/sha1.t
+t/dynpmc/sha256.t
+t/dynpmc/sha512.t
+# generated from svn:ignore of 't/examples/'
+t/examples/*.pasm
+t/examples/*.pbc
+t/examples/*.pir
+t/examples/*_pbcexe*
+# generated from svn:ignore of 't/library/'
+t/library/*.out
+t/library/*.pasm
+t/library/*.pbc
+t/library/*.pir
+t/library/*_pbcexe*
+# generated from svn:ignore of 't/native_pbc/'
+t/native_pbc/*_pbcexe*
+# generated from svn:ignore of 't/oo/'
+t/oo/*.pbc
+t/oo/*.pir
+# generated from svn:ignore of 't/op/'
+t/op/*.out
+t/op/*.pasm
+t/op/*.pbc
+t/op/*.pir
+t/op/*_pbcexe*
+# generated from svn:ignore of 't/perl/'
+t/perl/Parrot_Test_1.pasm
+t/perl/Parrot_Test_1.pir
+# generated from svn:ignore of 't/pmc/'
+t/pmc/*.out
+t/pmc/*.pasm
+t/pmc/*.pbc
+t/pmc/*.pir
+t/pmc/*_pbcexe*
+# generated from svn:ignore of 't/src/'
+t/src/*_*
+# generated from svn:ignore of 't/stress/'
+t/stress/*.out
+t/stress/*.pasm
+t/stress/*.pbc
+t/stress/*.pir
+t/stress/*_pbcexe*
+# generated from svn:ignore of 't/tools/'
+t/tools/*.pbc
+t/tools/*.pir
+t/tools/pdb.t.*
+t/tools/pmc2c.*.c
+t/tools/pmc2c.*.dump
+t/tools/pmc2c.*.h
+t/tools/pmc2c.*.pmc
+# Local variables:
+#   mode: text
+#   buffer-read-only: t
+# End:

Modified: branches/runcore_purge/DEPRECATED.pod
==============================================================================
--- branches/runcore_purge/DEPRECATED.pod	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/DEPRECATED.pod	Sat Apr 24 00:51:33 2010	(r45948)
@@ -37,6 +37,8 @@
 
 =over 4
 
+=item gziphandle [experimental]
+
 =item RetContinuation [eligible in 2.4]
 
 In future, just use Continuation.

Modified: branches/runcore_purge/MANIFEST
==============================================================================
--- branches/runcore_purge/MANIFEST	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/MANIFEST	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,12 +1,13 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Apr 21 03:55:26 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sat Apr 24 00:39:15 2010 UT
 #
 # See below for documentation on the format of this file.
 #
 # See docs/submissions.pod on how to recreate this file after SVN
 # has been told about new or deleted files.
+.gitignore                                                  []
 CREDITS                                                     [main]doc
 ChangeLog                                                   []
 Configure.pl                                                []
@@ -17,8 +18,6 @@
 MANIFEST                                                    []
 MANIFEST.SKIP                                               []
 MANIFEST.generated                                          []
-META.yml                                                    []
-Makefile.PL                                                 []
 NEWS                                                        [main]doc
 PBC_COMPAT                                                  [main]doc
 PLATFORMS                                                   [devel]doc
@@ -297,6 +296,8 @@
 config/auto/va_ptr/test_c.in                                []
 config/auto/warnings.pm                                     []
 config/auto/warnings/test_c.in                              []
+config/auto/zlib.pm                                         []
+config/auto/zlib/zlib_c.in                                  []
 config/gen/config_h.pm                                      []
 config/gen/config_h/config_h.in                             []
 config/gen/config_h/feature_h.in                            []
@@ -916,15 +917,6 @@
 ext/Parrot-Embed/tools/check_embed_coverage.pl              []
 ext/Parrot-Embed/tools/write_typemap.pl                     []
 ext/Parrot-Embed/typemap                                    []
-ext/SQLite3/DBDI.pm                                         []
-ext/SQLite3/DBDI/Driver/SQLite3.pm                          []
-ext/SQLite3/Makefile.PL                                     []
-ext/SQLite3/Makefile.in                                     []
-ext/SQLite3/SQLite3.pir                                     []
-ext/SQLite3/gen_sqlite3.pl                                  []
-ext/SQLite3/t/test.p6                                       [test]
-ext/SQLite3/test.pir                                        []
-ext/nqp-rx/.gitignore                                       []
 ext/nqp-rx/CREDITS                                          []
 ext/nqp-rx/Defines.mak                                      []
 ext/nqp-rx/LICENSE                                          []
@@ -1248,7 +1240,6 @@
 runtime/parrot/library/SDL/Sprite.pir                       [library]
 runtime/parrot/library/SDL/StopWatch.pir                    [library]
 runtime/parrot/library/SDL/Surface.pir                      [library]
-runtime/parrot/library/SQLite3.pir                          [library]
 runtime/parrot/library/Stream/Base.pir                      [library]
 runtime/parrot/library/Stream/Combiner.pir                  [library]
 runtime/parrot/library/Stream/Coroutine.pir                 [library]
@@ -1311,6 +1302,7 @@
 src/dynpmc/ext.pir                                          []
 src/dynpmc/foo.pmc                                          []
 src/dynpmc/foo2.pmc                                         []
+src/dynpmc/gziphandle.pmc                                   []
 src/dynpmc/main.pasm                                        []
 src/dynpmc/pccmethod_test.pmc                               []
 src/dynpmc/rational.pmc                                     []
@@ -1459,7 +1451,6 @@
 src/pmc/resizableintegerarray.pmc                           []
 src/pmc/resizablepmcarray.pmc                               []
 src/pmc/resizablestringarray.pmc                            []
-src/pmc/retcontinuation.pmc                                 []
 src/pmc/role.pmc                                            []
 src/pmc/scalar.pmc                                          []
 src/pmc/scheduler.pmc                                       []
@@ -1682,12 +1673,12 @@
 t/configure/testlib/verbosefoobar                           [test]
 t/distro/file_metadata.t                                    [test]
 t/distro/manifest.t                                         [test]
-t/distro/meta_yml.t                                         [test]
 t/dynoplibs/math.t                                          [test]
 t/dynoplibs/obscure.t                                       [test]
 t/dynpmc/dynlexpad.t                                        [test]
 t/dynpmc/foo.t                                              [test]
 t/dynpmc/foo2.t                                             [test]
+t/dynpmc/gziphandle.t                                       [test]
 t/dynpmc/pccmethod_test.t                                   [test]
 t/dynpmc/rational.t                                         [test]
 t/dynpmc/rotest.t                                           [test]
@@ -1706,6 +1697,7 @@
 t/examples/subs.t                                           [test]
 t/examples/tutorial.t                                       [test]
 t/harness                                                   [test]
+t/harness.pir                                               [test]
 t/include/fp_equality.t                                     [test]
 t/library/cgi_query_hash.t                                  [test]
 t/library/configure.t                                       [test]
@@ -1942,7 +1934,6 @@
 t/pmc/resizableintegerarray.t                               [test]
 t/pmc/resizablepmcarray.t                                   [test]
 t/pmc/resizablestringarray.t                                [test]
-t/pmc/retcontinuation.t                                     [test]
 t/pmc/ro.t                                                  [test]
 t/pmc/role.t                                                [test]
 t/pmc/scalar.t                                              [test]
@@ -2015,6 +2006,7 @@
 t/steps/auto/thread-01.t                                    [test]
 t/steps/auto/va_ptr-01.t                                    [test]
 t/steps/auto/warnings-01.t                                  [test]
+t/steps/auto/zlib-01.t                                      [test]
 t/steps/gen/config_h-01.t                                   [test]
 t/steps/gen/config_pm-01.t                                  [test]
 t/steps/gen/core_pmcs-01.t                                  [test]

Modified: branches/runcore_purge/MANIFEST.SKIP
==============================================================================
--- branches/runcore_purge/MANIFEST.SKIP	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/MANIFEST.SKIP	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Apr 21 05:05:15 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Wed Apr 21 10:28:38 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for

Modified: branches/runcore_purge/MANIFEST.generated
==============================================================================
--- branches/runcore_purge/MANIFEST.generated	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/MANIFEST.generated	Sat Apr 24 00:51:33 2010	(r45948)
@@ -72,18 +72,14 @@
 lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm                [devel]lib
 lib/Parrot/PMC.pm                                 [devel]lib
 parrot.pc                                         [main]pkgconfig
-runtime/parrot/dynext/digest_group.bundle         [library]
-runtime/parrot/dynext/digest_group.dll            [library]
-runtime/parrot/dynext/digest_group.dylib          [library]
-runtime/parrot/dynext/digest_group.so             [library]
 runtime/parrot/dynext/dynlexpad.bundle            [library]
 runtime/parrot/dynext/dynlexpad.dll               [library]
 runtime/parrot/dynext/dynlexpad.dylib             [library]
 runtime/parrot/dynext/dynlexpad.so                [library]
-runtime/parrot/dynext/gdbmhash.bundle             [library]
-runtime/parrot/dynext/gdbmhash.dll                [library]
-runtime/parrot/dynext/gdbmhash.dylib              [library]
-runtime/parrot/dynext/gdbmhash.so                 [library]
+runtime/parrot/dynext/gziphandle.bundle           [library]
+runtime/parrot/dynext/gziphandle.dll              [library]
+runtime/parrot/dynext/gziphandle.dylib            [library]
+runtime/parrot/dynext/gziphandle.so               [library]
 runtime/parrot/dynext/libglutcb.bundle            [library]
 runtime/parrot/dynext/libglutcb.dll               [library]
 runtime/parrot/dynext/libglutcb.dylib             [library]

Deleted: branches/runcore_purge/META.yml
==============================================================================
--- branches/runcore_purge/META.yml	Sat Apr 24 00:51:33 2010	(r45947)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,41 +0,0 @@
-# $Id$
-#
-# This file describes the CPAN distribution for Parrot.
-# See http://module-build.sourceforge.net/META-spec-current.html for details.
----
-name: parrot
-version: 2.3.0
-author: parrot-dev at lists.parrot.org
-abstract: a virtual machine designed for dynamic languages
-license: artistic2
-no_index:
-    directory:
-        - config
-        - languages
-        - lib
-        - lib/Digest
-        - lib/File
-        - lib/Parse
-        - lib/Perl/Critic
-        - lib/Pod
-        - t
-        - tools
-    file:
-        - lib/IO/CaptureOutput.pm
-        - lib/SmartLink.pm
-    package:
-        - DB
-        - Parrot::Test::DB
-        - Parrot::Distribution
-        - Parrot::Docs::HTMLPage
-        - Parrot::OpTrans::CGP
-        - Parrot::OpTrans::CSwitch
-        - Parrot::OpsFile
-requires:
-  Storable: 2.12
-  perl: 5.8.4
-resources:
-    homepage:   'http://parrot.org/'
-    license:    'http://opensource.org/licenses/artistic-license-2.0.php'
-    bugtracker: 'https://trac.parrot.org/parrot/'
-generated_by: Humans

Deleted: branches/runcore_purge/Makefile.PL
==============================================================================
--- branches/runcore_purge/Makefile.PL	Sat Apr 24 00:51:33 2010	(r45947)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,45 +0,0 @@
-#! perl
-
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-Makefile.PL - CPAN installer passthrough to configure Parrot
-
-=head1 DESCRIPTION
-
-This file exists only to allow users of a CPAN shell to configure and build
-Parrot.  If you're reading this yourself, use F<Configure.pl>
-
-=cut
-
-use strict;
-use warnings;
-
-BEGIN { require 5.008 }
-
-my %translations =
-(
-    INSTALL_BASE => 'prefix',
-    LIB          => 'lib',
-    PREFIX       => 'prefix',
-);
-
-my @commands;
-
-for my $arg (@ARGV)
-{
-    my ($name, $value) = split /=/, $arg, 2;
-    next unless exists $translations{ $name };
-    push @commands, "--$name=$value";
-}
-
-system( $^X, 'Configure.pl', @commands );
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Modified: branches/runcore_purge/NEWS
==============================================================================
--- branches/runcore_purge/NEWS	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/NEWS	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,5 +1,9 @@
 # $Id$
 
+New in 2.4.0
+- Deprecations
+  + Tools to distribute on CPAN removed
+
 New in 2.3.0
 - Core
   + Allow passing parameters to the dynamic linker ('dlopen' improved)

Modified: branches/runcore_purge/PBC_COMPAT
==============================================================================
--- branches/runcore_purge/PBC_COMPAT	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/PBC_COMPAT	Sat Apr 24 00:51:33 2010	(r45948)
@@ -27,6 +27,8 @@
 
 # please insert tab separated entries at the top of the list
 
+6.7	2010.04.22	coke	remove RetContinuation PMC
+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
 6.3	2010.02.16	whiteknight	Add OpLib and Opcode PMCs

Modified: branches/runcore_purge/compilers/data_json/Defines.mak
==============================================================================
--- branches/runcore_purge/compilers/data_json/Defines.mak	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/compilers/data_json/Defines.mak	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,6 +1,6 @@
-DATA_JSON_LIB_PBCS = $(LIBRARY_DIR)/data_json.pbc
+DATA_JSON_LIB_PBCS = runtime/parrot/languages/data_json/data_json.pbc
 
-DATA_JSON_CLEANUPS = $(LIBRARY_DIR)/data_json.pbc \
+DATA_JSON_CLEANUPS = $(DATA_JSON_LIB_PBCS) \
     compilers/data_json/data_json.pbc \
     compilers/data_json/data_json/grammar.pir \
     compilers/data_json/data_json/pge2pir.pir

Modified: branches/runcore_purge/compilers/data_json/Rules.mak
==============================================================================
--- branches/runcore_purge/compilers/data_json/Rules.mak	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/compilers/data_json/Rules.mak	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,4 +1,5 @@
-$(LIBRARY_DIR)/data_json.pbc: compilers/data_json/data_json.pbc
+runtime/parrot/languages/data_json/data_json.pbc: compilers/data_json/data_json.pbc
+	$(MKPATH) runtime/parrot/languages/data_json
 	$(CP) compilers/data_json/data_json.pbc $@
 
 compilers/data_json/data_json.pbc : \

Modified: branches/runcore_purge/compilers/imcc/parser_util.c
==============================================================================
--- branches/runcore_purge/compilers/imcc/parser_util.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/compilers/imcc/parser_util.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -708,7 +708,7 @@
         sub_data->seg        = new_cs;
         sub_data->start_offs = 0;
         sub_data->end_offs   = new_cs->base.size;
-        sub_data->name       = Parrot_str_copy(interp, name);
+        sub_data->name       = name;
 
         *error_message = NULL;
     }

Modified: branches/runcore_purge/compilers/imcc/pbc.c
==============================================================================
--- branches/runcore_purge/compilers/imcc/pbc.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/compilers/imcc/pbc.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1538,13 +1538,14 @@
 build_key(PARROT_INTERP, ARGIN(SymReg *key_reg))
 {
     ASSERT_ARGS(build_key)
-#define KEYLEN 21
-    SymReg   *reg;
+#define MAX_KEY_LEN 10
+#define MAX_KEYNAME_LEN 20
+    SymReg   *reg = key_reg->set == 'K' ? key_reg->nextkey : key_reg;
 
-    char      s_key[KEYLEN * 10];
-    opcode_t  key[KEYLEN + 1]; /* [0] -> length, [1..] -> keys */
+    char      s_key[MAX_KEY_LEN * MAX_KEYNAME_LEN];
+    opcode_t  key[MAX_KEY_LEN * 2 + 1];
     opcode_t  size;
-    int       key_length;     /* P0["hi;there"; S0; 2] has length 3 */
+    int       key_length = 0;     /* P0["hi;there"; S0; 2] has length 3 */
     int       k;
 
     /* 0 is length */
@@ -1554,15 +1555,14 @@
     char     *s  = s_key;
 
     *s           = 0;
-    reg          = key_reg->set == 'K' ? key_reg->nextkey : key_reg;
 
     for (key_length = 0; reg ; reg = reg->nextkey, key_length++) {
         SymReg *r = reg;
         int     type;
 
-        if ((pc - key - 2) >= KEYLEN)
+        if (key_length >= MAX_KEY_LEN)
             IMCC_fatal(interp, 1, "build_key:"
-                    "key too complex increase KEYLEN\n");
+                    "Key too long, increase MAX_KEY_LEN.\n");
 
         /* if key is a register, the original sym is in r->reg */
         type = r->type;

Modified: branches/runcore_purge/compilers/pge/PGE/Exp.pir
==============================================================================
--- branches/runcore_purge/compilers/pge/PGE/Exp.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/compilers/pge/PGE/Exp.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -718,7 +718,7 @@
 
 .namespace [ 'PGE';'Exp';'CGroup' ]
 
-.sub 'pir' :method
+.sub 'pir' :method :nsentry
     .param pmc code
     .param string label
     .param string next

Copied: branches/runcore_purge/config/auto/zlib.pm (from r45947, trunk/config/auto/zlib.pm)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/runcore_purge/config/auto/zlib.pm	Sat Apr 24 00:51:33 2010	(r45948, copy of r45947, trunk/config/auto/zlib.pm)
@@ -0,0 +1,90 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+config/auto/zlib.pm - Test for zlib library
+
+=head1 DESCRIPTION
+
+This library is linked to a dynamic PMC.
+
+=cut
+
+package auto::zlib;
+
+use strict;
+use warnings;
+
+use base qw(Parrot::Configure::Step);
+
+use Parrot::Configure::Utils ':auto';
+
+
+sub _init {
+    my $self = shift;
+    my %data;
+    $data{description} = q{Does your platform support zlib};
+    $data{result}      = q{};
+    return \%data;
+}
+
+sub runstep {
+    my ( $self, $conf ) = @_;
+
+    my ( $verbose, $without ) = $conf->options->get(
+        qw|
+            verbose
+            without-zlib
+        |
+    );
+
+    if ($without) {
+        $conf->data->set( has_zlib => 0 );
+        $self->set_result('no');
+        return 1;
+    }
+
+    my $osname = $conf->data->get('osname');
+
+    my $extra_libs = $self->_select_lib( {
+        conf            => $conf,
+        osname          => $osname,
+        cc              => $conf->data->get('cc'),
+        win32_nongcc    => 'zlib.lib',
+        default         => '-lz',
+    } );
+
+    $conf->cc_gen('config/auto/zlib/zlib_c.in');
+    eval { $conf->cc_build( q{}, $extra_libs); };
+    my $has_zlib = 0;
+    if ( !$@ ) {
+        my $test = $conf->cc_run();
+        $has_zlib = $self->_evaluate_cc_run($conf, $test, $has_zlib, $verbose);
+    }
+    $conf->data->set( has_zlib => $has_zlib );
+    $self->set_result($has_zlib ? 'yes' : 'no');
+
+    return 1;
+}
+
+sub _evaluate_cc_run {
+    my $self = shift;
+    my ($conf, $test, $has_zlib, $verbose) = @_;
+    if ( $test =~ m/^(\d\.\d\.\d)/ ) {
+        my $version = $1;
+        $has_zlib = 1;
+        print " (yes) " if $verbose;
+        $self->set_result("yes, $version");
+    }
+    return $has_zlib;
+}
+
+1;
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Copied: branches/runcore_purge/config/auto/zlib/zlib_c.in (from r45947, trunk/config/auto/zlib/zlib_c.in)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/runcore_purge/config/auto/zlib/zlib_c.in	Sat Apr 24 00:51:33 2010	(r45948, copy of r45947, trunk/config/auto/zlib/zlib_c.in)
@@ -0,0 +1,26 @@
+/*
+  Copyright (C) 2010, Parrot Foundation.
+  $Id$
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <zlib.h>
+
+int
+main(int argc, char *argv[])
+{
+    if (0 == strcmp(ZLIB_VERSION, zlibVersion())) {
+        printf("%s\n", ZLIB_VERSION);
+        return EXIT_SUCCESS;
+    }
+    printf("not same version between include and library\n");
+    return EXIT_FAILURE;
+}
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/runcore_purge/config/gen/makefiles/dynpmc.in
==============================================================================
--- branches/runcore_purge/config/gen/makefiles/dynpmc.in	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/config/gen/makefiles/dynpmc.in	Sat Apr 24 00:51:33 2010	(r45948)
@@ -33,6 +33,7 @@
   pccmethod_test$(LOAD_EXT) \
   rotest$(LOAD_EXT) \
   rational$(LOAD_EXT) \
+#IF(has_zlib):  gziphandle$(LOAD_EXT) \
   subproxy$(LOAD_EXT)
 
 PMCS_FOO = \
@@ -43,6 +44,10 @@
   foo$(O) \
   foo2$(O)
 
+#IF(win32 and cc==gcc):LIB_ZLIB = -lz
+#ELSIF(win32):LIB_ZLIB = zlib.lib
+#ELSE:LIB_ZLIB = -lz
+
 CLEANUPS = \
   "*.c" \
   "pmc_*.h" \
@@ -161,6 +166,19 @@
 subproxy.dump: subproxy.pmc
 	$(PMC2CD) subproxy.pmc
 
+gziphandle$(LOAD_EXT): gziphandle$(O)
+	$(LD) @ld_out at gziphandle$(LOAD_EXT) gziphandle$(O) $(LINKARGS) $(LIB_ZLIB)
+#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+
+gziphandle$(O): gziphandle.c
+	$(CC) -c @cc_o_out at gziphandle$(O) $(INCLUDES) $(CFLAGS) gziphandle.c
+
+gziphandle.c: gziphandle.dump
+	$(PMC2CC) gziphandle.pmc
+
+gziphandle.dump: gziphandle.pmc
+	$(PMC2CD) gziphandle.pmc
+
 
 test : all
 	cd ../.. && $(PERL) -Ilib t/harness t/dynpmc/*.t

Modified: branches/runcore_purge/config/gen/makefiles/root.in
==============================================================================
--- branches/runcore_purge/config/gen/makefiles/root.in	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/config/gen/makefiles/root.in	Sat Apr 24 00:51:33 2010	(r45948)
@@ -2487,11 +2487,11 @@
 tags-vi: tags.vi.dummy
 	$(RM_F) tags
 	@ctags@ \
-    --links=no --totals \
-    -R --exclude=blib --exclude=.svn  \
-    --languages=c,perl --langmap=c:+.h,c:+.pmc,c:+.ops \
-    -I NOTNULL,NULLOK,ARGIN,ARGMOD,ARGOUT,ARGINOUT,ARGIN_NULLOK,ARGOUT_NULLOK,ARGMOD_NULLOK,ARGFREE,ARGFREE_NOTNULL \
-    .
+	--links=no --totals \
+	-R --exclude=blib --exclude=.svn  \
+	--languages=c,perl --langmap=c:+.h,c:+.pmc,c:+.ops \
+	-I NOTNULL,NULLOK,ARGIN,ARGMOD,ARGOUT,ARGINOUT,ARGIN_NULLOK,ARGOUT_NULLOK,ARGMOD_NULLOK,ARGFREE,ARGFREE_NOTNULL \
+	.
 	$(PERL) $(BUILD_TOOLS_DIR)/addopstags.pl $(OPS_FILES)
 
 tags.vi.dummy:
@@ -2503,6 +2503,7 @@
 
 # Andy's extra-cranky Perl::Critic checking for cage cleaners
 cagecritic:
+	@perl -MPerl::Critic::Bangs -e'$$min=q{1.04};die qq{You need Bangs $$min} unless $$Perl::Critic::Bangs::VERSION ge $$min'
 	perlcritic -1 --profile tools/util/perlcritic-cage.conf $(CRITIC_FILES)
 
 # This target will eventually create all the headers automatically.  If you

Modified: branches/runcore_purge/config/gen/platform/generic/itimer.c
==============================================================================
--- branches/runcore_purge/config/gen/platform/generic/itimer.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/config/gen/platform/generic/itimer.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,6 +1,6 @@
 /*
+ * Copyright (C) 2004-2010, Parrot Foundation.
  * $Id$
- * Copyright (C) 2004-2009, Parrot Foundation.
  */
 
 /*
@@ -77,7 +77,7 @@
 */
 
 int
-get_sys_timer_ms(void *handle)
+get_sys_timer_ms(SHIM(void *handle))
 {
     struct itimerval ots;
     getitimer(ITIMER_REAL, &ots);

Modified: branches/runcore_purge/docs/embed.pod
==============================================================================
--- branches/runcore_purge/docs/embed.pod	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/docs/embed.pod	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1551,8 +1551,6 @@
 
 =item C<Parrot_store_sub_in_namespace>
 
-=item C<Parrot_str_append>
-
 =item C<Parrot_str_boolean>
 
 =item C<Parrot_str_byte_length>

Modified: branches/runcore_purge/docs/pdds/pdd28_strings.pod
==============================================================================
--- branches/runcore_purge/docs/pdds/pdd28_strings.pod	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/docs/pdds/pdd28_strings.pod	Sat Apr 24 00:51:33 2010	(r45948)
@@ -379,13 +379,6 @@
 value of flags. If both string arguments are null, return a new string created
 according to the integer flags.
 
-=head4 Parrot_str_append (was string_append)
-
-Append one string to another and return the result. In the default case, the
-return value is the same as the first string argument (modifying that argument
-in place). If the first argument is COW or read-only, then the return value is
-a new string.
-
 =head4 Parrot_str_new (was string_from_cstring)
 
 Return a new string with the default encoding and character set. Accepts two

Modified: branches/runcore_purge/docs/project/release_manager_guide.pod
==============================================================================
--- branches/runcore_purge/docs/project/release_manager_guide.pod	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/docs/project/release_manager_guide.pod	Sat Apr 24 00:51:33 2010	(r45948)
@@ -66,7 +66,7 @@
 =item a
 
 Increment the version number in the following files:
-F<VERSION>, F<MANIFEST.generated>, F<META.yml>, F<README>.
+F<VERSION>, F<MANIFEST.generated>, F<README>.
 
 Also update the version number, date, and your name in the
 the file: F<docs/parrothist.pod>.

Modified: branches/runcore_purge/ext/Parrot-Embed/MANIFEST
==============================================================================
--- branches/runcore_purge/ext/Parrot-Embed/MANIFEST	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/ext/Parrot-Embed/MANIFEST	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,7 +1,6 @@
 Build.PL
 Changes
 MANIFEST
-META.yml # Will be created by "make dist"
 README
 lib/Parrot/Embed.pm
 lib/Parrot/Embed.xs

Deleted: branches/runcore_purge/ext/nqp-rx/.gitignore
==============================================================================
--- branches/runcore_purge/ext/nqp-rx/.gitignore	Sat Apr 24 00:51:33 2010	(r45947)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,15 +0,0 @@
-Makefile
-/parrot
-/parrot_install
-.*.swp
-*.c
-*.o
-Regex.pbc
-HLL.pbc
-P6Regex
-P6Regex.pbc
-nqp
-nqp.pbc
-src/gen/*.pir
-src/stage1
-src/stage2

Modified: branches/runcore_purge/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- branches/runcore_purge/ext/nqp-rx/src/stage0/HLL-s0.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/ext/nqp-rx/src/stage0/HLL-s0.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -522,7 +522,7 @@
 .end
 
 
-.sub 'split_words' :method
+.sub 'split_words' :method :nsentry
     .param string words
     .local int pos, eos
     .local pmc result
@@ -854,119 +854,117 @@
 ### .include 'gen/hllgrammar-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271336377.56964")
+.sub "_block11"  :anon :subid("10_1271948647.57035")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Grammar"], "_block13" 
     capture_lex $P14
 .annotate "line", 5
     get_hll_global $P14, ["HLL";"Grammar"], "_block13" 
     capture_lex $P14
-    $P344 = $P14()
+    $P339 = $P14()
 .annotate "line", 1
-    .return ($P344)
+    .return ($P339)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post105") :outer("10_1271336377.56964")
+.sub "" :load :init :subid("post103") :outer("10_1271948647.57035")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271336377.56964" 
+    .const 'Sub' $P12 = "10_1271948647.57035" 
     .local pmc block
     set block, $P12
-    $P345 = get_root_global ["parrot"], "P6metaclass"
-    $P345."new_class"("HLL::Grammar", "Regex::Cursor" :named("parent"))
+    $P340 = get_root_global ["parrot"], "P6metaclass"
+    $P340."new_class"("HLL::Grammar", "Regex::Cursor" :named("parent"))
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block13"  :subid("11_1271336377.56964") :outer("10_1271336377.56964")
+.sub "_block13"  :subid("11_1271948647.57035") :outer("10_1271948647.57035")
 .annotate "line", 5
-    .const 'Sub' $P334 = "103_1271336377.56964" 
-    capture_lex $P334
-    .const 'Sub' $P327 = "101_1271336377.56964" 
-    capture_lex $P327
-    .const 'Sub' $P314 = "98_1271336377.56964" 
-    capture_lex $P314
-    .const 'Sub' $P282 = "93_1271336377.56964" 
-    capture_lex $P282
-    .const 'Sub' $P276 = "91_1271336377.56964" 
-    capture_lex $P276
-    .const 'Sub' $P271 = "89_1271336377.56964" 
+    .const 'Sub' $P329 = "101_1271948647.57035" 
+    capture_lex $P329
+    .const 'Sub' $P322 = "99_1271948647.57035" 
+    capture_lex $P322
+    .const 'Sub' $P309 = "96_1271948647.57035" 
+    capture_lex $P309
+    .const 'Sub' $P277 = "91_1271948647.57035" 
+    capture_lex $P277
+    .const 'Sub' $P271 = "89_1271948647.57035" 
     capture_lex $P271
-    .const 'Sub' $P265 = "87_1271336377.56964" 
-    capture_lex $P265
-    .const 'Sub' $P259 = "85_1271336377.56964" 
-    capture_lex $P259
-    .const 'Sub' $P254 = "83_1271336377.56964" 
+    .const 'Sub' $P266 = "87_1271948647.57035" 
+    capture_lex $P266
+    .const 'Sub' $P260 = "85_1271948647.57035" 
+    capture_lex $P260
+    .const 'Sub' $P254 = "83_1271948647.57035" 
     capture_lex $P254
-    .const 'Sub' $P249 = "81_1271336377.56964" 
+    .const 'Sub' $P249 = "81_1271948647.57035" 
     capture_lex $P249
-    .const 'Sub' $P244 = "79_1271336377.56964" 
+    .const 'Sub' $P244 = "79_1271948647.57035" 
     capture_lex $P244
-    .const 'Sub' $P239 = "77_1271336377.56964" 
+    .const 'Sub' $P239 = "77_1271948647.57035" 
     capture_lex $P239
-    .const 'Sub' $P234 = "75_1271336377.56964" 
+    .const 'Sub' $P234 = "75_1271948647.57035" 
     capture_lex $P234
-    .const 'Sub' $P229 = "73_1271336377.56964" 
+    .const 'Sub' $P229 = "73_1271948647.57035" 
     capture_lex $P229
-    .const 'Sub' $P224 = "71_1271336377.56964" 
+    .const 'Sub' $P224 = "71_1271948647.57035" 
     capture_lex $P224
-    .const 'Sub' $P219 = "69_1271336377.56964" 
+    .const 'Sub' $P219 = "69_1271948647.57035" 
     capture_lex $P219
-    .const 'Sub' $P208 = "65_1271336377.56964" 
+    .const 'Sub' $P208 = "65_1271948647.57035" 
     capture_lex $P208
-    .const 'Sub' $P195 = "63_1271336377.56964" 
+    .const 'Sub' $P195 = "63_1271948647.57035" 
     capture_lex $P195
-    .const 'Sub' $P183 = "61_1271336377.56964" 
+    .const 'Sub' $P183 = "61_1271948647.57035" 
     capture_lex $P183
-    .const 'Sub' $P176 = "59_1271336377.56964" 
+    .const 'Sub' $P176 = "59_1271948647.57035" 
     capture_lex $P176
-    .const 'Sub' $P167 = "57_1271336377.56964" 
+    .const 'Sub' $P167 = "57_1271948647.57035" 
     capture_lex $P167
-    .const 'Sub' $P160 = "55_1271336377.56964" 
+    .const 'Sub' $P160 = "55_1271948647.57035" 
     capture_lex $P160
-    .const 'Sub' $P151 = "53_1271336377.56964" 
+    .const 'Sub' $P151 = "53_1271948647.57035" 
     capture_lex $P151
-    .const 'Sub' $P144 = "51_1271336377.56964" 
+    .const 'Sub' $P144 = "51_1271948647.57035" 
     capture_lex $P144
-    .const 'Sub' $P135 = "49_1271336377.56964" 
+    .const 'Sub' $P135 = "49_1271948647.57035" 
     capture_lex $P135
-    .const 'Sub' $P128 = "47_1271336377.56964" 
+    .const 'Sub' $P128 = "47_1271948647.57035" 
     capture_lex $P128
-    .const 'Sub' $P121 = "45_1271336377.56964" 
+    .const 'Sub' $P121 = "45_1271948647.57035" 
     capture_lex $P121
-    .const 'Sub' $P111 = "43_1271336377.56964" 
+    .const 'Sub' $P111 = "43_1271948647.57035" 
     capture_lex $P111
-    .const 'Sub' $P103 = "41_1271336377.56964" 
+    .const 'Sub' $P103 = "41_1271948647.57035" 
     capture_lex $P103
-    .const 'Sub' $P93 = "40_1271336377.56964" 
+    .const 'Sub' $P93 = "40_1271948647.57035" 
     capture_lex $P93
-    .const 'Sub' $P87 = "38_1271336377.56964" 
+    .const 'Sub' $P87 = "38_1271948647.57035" 
     capture_lex $P87
-    .const 'Sub' $P82 = "36_1271336377.56964" 
+    .const 'Sub' $P82 = "36_1271948647.57035" 
     capture_lex $P82
-    .const 'Sub' $P74 = "34_1271336377.56964" 
+    .const 'Sub' $P74 = "34_1271948647.57035" 
     capture_lex $P74
-    .const 'Sub' $P68 = "32_1271336377.56964" 
+    .const 'Sub' $P68 = "32_1271948647.57035" 
     capture_lex $P68
-    .const 'Sub' $P62 = "30_1271336377.56964" 
+    .const 'Sub' $P62 = "30_1271948647.57035" 
     capture_lex $P62
-    .const 'Sub' $P56 = "28_1271336377.56964" 
+    .const 'Sub' $P56 = "28_1271948647.57035" 
     capture_lex $P56
-    .const 'Sub' $P23 = "14_1271336377.56964" 
+    .const 'Sub' $P23 = "14_1271948647.57035" 
     capture_lex $P23
-    .const 'Sub' $P15 = "12_1271336377.56964" 
+    .const 'Sub' $P15 = "12_1271948647.57035" 
     capture_lex $P15
 .annotate "line", 33
-    .const 'Sub' $P334 = "103_1271336377.56964" 
-    capture_lex $P334
+    .const 'Sub' $P329 = "101_1271948647.57035" 
+    capture_lex $P329
 .annotate "line", 5
-    .return ($P334)
+    .return ($P329)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "ws"  :subid("12_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "ws"  :subid("12_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx16_tgt
     .local int rx16_pos
@@ -1050,7 +1048,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__ws"  :subid("13_1271336377.56964") :method
+.sub "!PREFIX__ws"  :subid("13_1271948647.57035") :method
 .annotate "line", 5
     new $P18, "ResizablePMCArray"
     push $P18, ""
@@ -1059,7 +1057,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "termish"  :subid("14_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "termish"  :subid("14_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx24_tgt
     .local int rx24_pos
@@ -1151,7 +1149,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__termish"  :subid("15_1271336377.56964") :method
+.sub "!PREFIX__termish"  :subid("15_1271948647.57035") :method
 .annotate "line", 5
     new $P26, "ResizablePMCArray"
     push $P26, ""
@@ -1160,7 +1158,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term"  :subid("16_1271336377.56964") :method
+.sub "term"  :subid("16_1271948647.57035") :method
 .annotate "line", 13
     $P33 = self."!protoregex"("term")
     .return ($P33)
@@ -1168,7 +1166,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term"  :subid("17_1271336377.56964") :method
+.sub "!PREFIX__term"  :subid("17_1271948647.57035") :method
 .annotate "line", 13
     $P35 = self."!PREFIX__!protoregex"("term")
     .return ($P35)
@@ -1176,7 +1174,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infix"  :subid("18_1271336377.56964") :method
+.sub "infix"  :subid("18_1271948647.57035") :method
 .annotate "line", 14
     $P37 = self."!protoregex"("infix")
     .return ($P37)
@@ -1184,7 +1182,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infix"  :subid("19_1271336377.56964") :method
+.sub "!PREFIX__infix"  :subid("19_1271948647.57035") :method
 .annotate "line", 14
     $P39 = self."!PREFIX__!protoregex"("infix")
     .return ($P39)
@@ -1192,7 +1190,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefix"  :subid("20_1271336377.56964") :method
+.sub "prefix"  :subid("20_1271948647.57035") :method
 .annotate "line", 15
     $P41 = self."!protoregex"("prefix")
     .return ($P41)
@@ -1200,7 +1198,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefix"  :subid("21_1271336377.56964") :method
+.sub "!PREFIX__prefix"  :subid("21_1271948647.57035") :method
 .annotate "line", 15
     $P43 = self."!PREFIX__!protoregex"("prefix")
     .return ($P43)
@@ -1208,7 +1206,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfix"  :subid("22_1271336377.56964") :method
+.sub "postfix"  :subid("22_1271948647.57035") :method
 .annotate "line", 16
     $P45 = self."!protoregex"("postfix")
     .return ($P45)
@@ -1216,7 +1214,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfix"  :subid("23_1271336377.56964") :method
+.sub "!PREFIX__postfix"  :subid("23_1271948647.57035") :method
 .annotate "line", 16
     $P47 = self."!PREFIX__!protoregex"("postfix")
     .return ($P47)
@@ -1224,7 +1222,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "circumfix"  :subid("24_1271336377.56964") :method
+.sub "circumfix"  :subid("24_1271948647.57035") :method
 .annotate "line", 17
     $P49 = self."!protoregex"("circumfix")
     .return ($P49)
@@ -1232,7 +1230,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__circumfix"  :subid("25_1271336377.56964") :method
+.sub "!PREFIX__circumfix"  :subid("25_1271948647.57035") :method
 .annotate "line", 17
     $P51 = self."!PREFIX__!protoregex"("circumfix")
     .return ($P51)
@@ -1240,7 +1238,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postcircumfix"  :subid("26_1271336377.56964") :method
+.sub "postcircumfix"  :subid("26_1271948647.57035") :method
 .annotate "line", 18
     $P53 = self."!protoregex"("postcircumfix")
     .return ($P53)
@@ -1248,7 +1246,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postcircumfix"  :subid("27_1271336377.56964") :method
+.sub "!PREFIX__postcircumfix"  :subid("27_1271948647.57035") :method
 .annotate "line", 18
     $P55 = self."!PREFIX__!protoregex"("postcircumfix")
     .return ($P55)
@@ -1256,7 +1254,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term:sym<circumfix>"  :subid("28_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "term:sym<circumfix>"  :subid("28_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx57_tgt
     .local int rx57_pos
@@ -1314,7 +1312,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1271336377.56964") :method
+.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1271948647.57035") :method
 .annotate "line", 5
     $P59 = self."!PREFIX__!subrule"("circumfix", "")
     new $P60, "ResizablePMCArray"
@@ -1324,7 +1322,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infixish"  :subid("30_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "infixish"  :subid("30_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx63_tgt
     .local int rx63_pos
@@ -1382,7 +1380,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("31_1271336377.56964") :method
+.sub "!PREFIX__infixish"  :subid("31_1271948647.57035") :method
 .annotate "line", 5
     $P65 = self."!PREFIX__!subrule"("OPER=infix", "")
     new $P66, "ResizablePMCArray"
@@ -1392,7 +1390,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefixish"  :subid("32_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "prefixish"  :subid("32_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx69_tgt
     .local int rx69_pos
@@ -1455,7 +1453,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefixish"  :subid("33_1271336377.56964") :method
+.sub "!PREFIX__prefixish"  :subid("33_1271948647.57035") :method
 .annotate "line", 5
     $P71 = self."!PREFIX__!subrule"("OPER=prefix", "")
     new $P72, "ResizablePMCArray"
@@ -1465,7 +1463,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfixish"  :subid("34_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "postfixish"  :subid("34_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx75_tgt
     .local int rx75_pos
@@ -1539,7 +1537,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfixish"  :subid("35_1271336377.56964") :method
+.sub "!PREFIX__postfixish"  :subid("35_1271948647.57035") :method
 .annotate "line", 5
     $P77 = self."!PREFIX__!subrule"("OPER=postcircumfix", "")
     $P78 = self."!PREFIX__!subrule"("OPER=postfix", "")
@@ -1551,7 +1549,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm"  :subid("36_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "nullterm"  :subid("36_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx83_tgt
     .local int rx83_pos
@@ -1602,7 +1600,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm"  :subid("37_1271336377.56964") :method
+.sub "!PREFIX__nullterm"  :subid("37_1271948647.57035") :method
 .annotate "line", 5
     new $P85, "ResizablePMCArray"
     push $P85, ""
@@ -1611,7 +1609,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm_alt"  :subid("38_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "nullterm_alt"  :subid("38_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx88_tgt
     .local int rx88_pos
@@ -1669,7 +1667,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm_alt"  :subid("39_1271336377.56964") :method
+.sub "!PREFIX__nullterm_alt"  :subid("39_1271948647.57035") :method
 .annotate "line", 5
     $P90 = self."!PREFIX__!subrule"("term", "")
     new $P91, "ResizablePMCArray"
@@ -1679,7 +1677,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nulltermish"  :subid("40_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "nulltermish"  :subid("40_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     new $P95, 'ExceptionHandler'
     set_addr $P95, control_94
@@ -1706,7 +1704,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_delimited"  :subid("41_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_delimited"  :subid("41_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx104_tgt
     .local int rx104_pos
@@ -1788,7 +1786,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_delimited"  :subid("42_1271336377.56964") :method
+.sub "!PREFIX__quote_delimited"  :subid("42_1271948647.57035") :method
 .annotate "line", 33
     $P106 = self."!PREFIX__!subrule"("starter", "")
     new $P107, "ResizablePMCArray"
@@ -1798,7 +1796,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_atom"  :subid("43_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_atom"  :subid("43_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx112_tgt
     .local int rx112_pos
@@ -1889,7 +1887,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_atom"  :subid("44_1271336377.56964") :method
+.sub "!PREFIX__quote_atom"  :subid("44_1271948647.57035") :method
 .annotate "line", 33
     new $P114, "ResizablePMCArray"
     push $P114, ""
@@ -1898,7 +1896,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decint"  :subid("45_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "decint"  :subid("45_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx122_tgt
     .local int rx122_pos
@@ -1970,7 +1968,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decint"  :subid("46_1271336377.56964") :method
+.sub "!PREFIX__decint"  :subid("46_1271948647.57035") :method
 .annotate "line", 33
     new $P124, "ResizablePMCArray"
     push $P124, ""
@@ -1979,7 +1977,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decints"  :subid("47_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "decints"  :subid("47_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx129_tgt
     .local int rx129_pos
@@ -2063,7 +2061,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decints"  :subid("48_1271336377.56964") :method
+.sub "!PREFIX__decints"  :subid("48_1271948647.57035") :method
 .annotate "line", 33
     new $P131, "ResizablePMCArray"
     push $P131, ""
@@ -2072,7 +2070,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexint"  :subid("49_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "hexint"  :subid("49_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx136_tgt
     .local int rx136_pos
@@ -2153,7 +2151,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexint"  :subid("50_1271336377.56964") :method
+.sub "!PREFIX__hexint"  :subid("50_1271948647.57035") :method
 .annotate "line", 33
     new $P138, "ResizablePMCArray"
     push $P138, ""
@@ -2162,7 +2160,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexints"  :subid("51_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "hexints"  :subid("51_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx145_tgt
     .local int rx145_pos
@@ -2246,7 +2244,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints"  :subid("52_1271336377.56964") :method
+.sub "!PREFIX__hexints"  :subid("52_1271948647.57035") :method
 .annotate "line", 33
     new $P147, "ResizablePMCArray"
     push $P147, ""
@@ -2255,7 +2253,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octint"  :subid("53_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "octint"  :subid("53_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx152_tgt
     .local int rx152_pos
@@ -2336,7 +2334,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octint"  :subid("54_1271336377.56964") :method
+.sub "!PREFIX__octint"  :subid("54_1271948647.57035") :method
 .annotate "line", 33
     new $P154, "ResizablePMCArray"
     push $P154, ""
@@ -2345,7 +2343,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octints"  :subid("55_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "octints"  :subid("55_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx161_tgt
     .local int rx161_pos
@@ -2429,7 +2427,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octints"  :subid("56_1271336377.56964") :method
+.sub "!PREFIX__octints"  :subid("56_1271948647.57035") :method
 .annotate "line", 33
     new $P163, "ResizablePMCArray"
     push $P163, ""
@@ -2438,7 +2436,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binint"  :subid("57_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "binint"  :subid("57_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx168_tgt
     .local int rx168_pos
@@ -2519,7 +2517,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binint"  :subid("58_1271336377.56964") :method
+.sub "!PREFIX__binint"  :subid("58_1271948647.57035") :method
 .annotate "line", 33
     new $P170, "ResizablePMCArray"
     push $P170, ""
@@ -2528,7 +2526,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binints"  :subid("59_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "binints"  :subid("59_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx177_tgt
     .local int rx177_pos
@@ -2612,7 +2610,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binints"  :subid("60_1271336377.56964") :method
+.sub "!PREFIX__binints"  :subid("60_1271948647.57035") :method
 .annotate "line", 33
     new $P179, "ResizablePMCArray"
     push $P179, ""
@@ -2621,7 +2619,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "integer"  :subid("61_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "integer"  :subid("61_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx184_tgt
     .local int rx184_pos
@@ -2769,7 +2767,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__integer"  :subid("62_1271336377.56964") :method
+.sub "!PREFIX__integer"  :subid("62_1271948647.57035") :method
 .annotate "line", 33
     $P186 = self."!PREFIX__!subrule"("VALUE=decint", "")
     $P187 = self."!PREFIX__!subrule"("VALUE=decint", "0d")
@@ -2787,7 +2785,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "dec_number"  :subid("63_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "dec_number"  :subid("63_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx196_tgt
     .local int rx196_pos
@@ -2966,7 +2964,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__dec_number"  :subid("64_1271336377.56964") :method
+.sub "!PREFIX__dec_number"  :subid("64_1271948647.57035") :method
 .annotate "line", 33
     new $P198, "ResizablePMCArray"
     push $P198, ""
@@ -2977,7 +2975,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "escale"  :subid("65_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "escale"  :subid("65_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx209_tgt
     .local int rx209_pos
@@ -3054,7 +3052,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__escale"  :subid("66_1271336377.56964") :method
+.sub "!PREFIX__escale"  :subid("66_1271948647.57035") :method
 .annotate "line", 33
     new $P211, "ResizablePMCArray"
     push $P211, "e"
@@ -3064,7 +3062,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape"  :subid("67_1271336377.56964") :method
+.sub "quote_escape"  :subid("67_1271948647.57035") :method
 .annotate "line", 79
     $P216 = self."!protoregex"("quote_escape")
     .return ($P216)
@@ -3072,7 +3070,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape"  :subid("68_1271336377.56964") :method
+.sub "!PREFIX__quote_escape"  :subid("68_1271948647.57035") :method
 .annotate "line", 79
     $P218 = self."!PREFIX__!protoregex"("quote_escape")
     .return ($P218)
@@ -3080,7 +3078,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<backslash>"  :subid("69_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<backslash>"  :subid("69_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx220_tgt
     .local int rx220_pos
@@ -3142,7 +3140,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1271948647.57035") :method
 .annotate "line", 33
     new $P222, "ResizablePMCArray"
     push $P222, "\\\\"
@@ -3151,7 +3149,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<stopper>"  :subid("71_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<stopper>"  :subid("71_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx225_tgt
     .local int rx225_pos
@@ -3220,7 +3218,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1271948647.57035") :method
 .annotate "line", 33
     new $P227, "ResizablePMCArray"
     push $P227, "\\"
@@ -3229,7 +3227,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<bs>"  :subid("73_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<bs>"  :subid("73_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx230_tgt
     .local int rx230_pos
@@ -3291,7 +3289,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1271948647.57035") :method
 .annotate "line", 33
     new $P232, "ResizablePMCArray"
     push $P232, "\\b"
@@ -3300,7 +3298,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<nl>"  :subid("75_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<nl>"  :subid("75_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx235_tgt
     .local int rx235_pos
@@ -3362,7 +3360,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1271948647.57035") :method
 .annotate "line", 33
     new $P237, "ResizablePMCArray"
     push $P237, "\\n"
@@ -3371,7 +3369,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<cr>"  :subid("77_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<cr>"  :subid("77_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx240_tgt
     .local int rx240_pos
@@ -3433,7 +3431,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1271948647.57035") :method
 .annotate "line", 33
     new $P242, "ResizablePMCArray"
     push $P242, "\\r"
@@ -3442,7 +3440,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<tab>"  :subid("79_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<tab>"  :subid("79_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx245_tgt
     .local int rx245_pos
@@ -3504,7 +3502,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1271948647.57035") :method
 .annotate "line", 33
     new $P247, "ResizablePMCArray"
     push $P247, "\\t"
@@ -3513,7 +3511,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<ff>"  :subid("81_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<ff>"  :subid("81_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx250_tgt
     .local int rx250_pos
@@ -3575,7 +3573,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<ff>"  :subid("82_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<ff>"  :subid("82_1271948647.57035") :method
 .annotate "line", 33
     new $P252, "ResizablePMCArray"
     push $P252, "\\f"
@@ -3584,7 +3582,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<esc>"  :subid("83_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<hex>"  :subid("83_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx255_tgt
     .local int rx255_pos
@@ -3593,7 +3591,7 @@
     .local int rx255_rep
     .local pmc rx255_cur
     (rx255_cur, rx255_pos, rx255_tgt) = self."!cursor_start"()
-    rx255_cur."!cursor_debug"("START ", "quote_escape:sym<esc>")
+    rx255_cur."!cursor_debug"("START ", "quote_escape:sym<hex>")
     .lex unicode:"$\x{a2}", rx255_cur
     .local pmc match
     .lex "$/", match
@@ -3615,21 +3613,57 @@
     set_addr $I10, rxscan258_loop
     rx255_cur."!mark_push"(0, rx255_pos, $I10)
   rxscan258_done:
-.annotate "line", 88
-  # rx literal  "\\e"
+.annotate "line", 89
+  # rx literal  unicode:"\\x"
     add $I11, rx255_pos, 2
     gt $I11, rx255_eos, rx255_fail
     sub $I11, rx255_pos, rx255_off
     substr $S10, rx255_tgt, $I11, 2
-    ne $S10, "\\e", rx255_fail
+    ne $S10, unicode:"\\x", rx255_fail
     add rx255_pos, 2
   # rx subrule "quotemod_check" subtype=zerowidth negate=
     rx255_cur."!cursor_pos"(rx255_pos)
     $P10 = rx255_cur."quotemod_check"("b")
     unless $P10, rx255_fail
+  alt259_0:
+.annotate "line", 90
+    set_addr $I10, alt259_1
+    rx255_cur."!mark_push"(0, rx255_pos, $I10)
+  # rx subrule "hexint" subtype=capture negate=
+    rx255_cur."!cursor_pos"(rx255_pos)
+    $P10 = rx255_cur."hexint"()
+    unless $P10, rx255_fail
+    rx255_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("hexint")
+    rx255_pos = $P10."pos"()
+    goto alt259_end
+  alt259_1:
+  # rx literal  "["
+    add $I11, rx255_pos, 1
+    gt $I11, rx255_eos, rx255_fail
+    sub $I11, rx255_pos, rx255_off
+    substr $S10, rx255_tgt, $I11, 1
+    ne $S10, "[", rx255_fail
+    add rx255_pos, 1
+  # rx subrule "hexints" subtype=capture negate=
+    rx255_cur."!cursor_pos"(rx255_pos)
+    $P10 = rx255_cur."hexints"()
+    unless $P10, rx255_fail
+    rx255_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("hexints")
+    rx255_pos = $P10."pos"()
+  # rx literal  "]"
+    add $I11, rx255_pos, 1
+    gt $I11, rx255_eos, rx255_fail
+    sub $I11, rx255_pos, rx255_off
+    substr $S10, rx255_tgt, $I11, 1
+    ne $S10, "]", rx255_fail
+    add rx255_pos, 1
+  alt259_end:
+.annotate "line", 88
   # rx pass
-    rx255_cur."!cursor_pass"(rx255_pos, "quote_escape:sym<esc>")
-    rx255_cur."!cursor_debug"("PASS  ", "quote_escape:sym<esc>", " at pos=", rx255_pos)
+    rx255_cur."!cursor_pass"(rx255_pos, "quote_escape:sym<hex>")
+    rx255_cur."!cursor_debug"("PASS  ", "quote_escape:sym<hex>", " at pos=", rx255_pos)
     .return (rx255_cur)
   rx255_fail:
 .annotate "line", 33
@@ -3639,237 +3673,208 @@
     jump $I10
   rx255_done:
     rx255_cur."!cursor_fail"()
-    rx255_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<esc>")
+    rx255_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<hex>")
     .return (rx255_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<esc>"  :subid("84_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<hex>"  :subid("84_1271948647.57035") :method
 .annotate "line", 33
     new $P257, "ResizablePMCArray"
-    push $P257, "\\e"
+    push $P257, unicode:"\\x"
     .return ($P257)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<hex>"  :subid("85_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<oct>"  :subid("85_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
-    .local string rx260_tgt
-    .local int rx260_pos
-    .local int rx260_off
-    .local int rx260_eos
-    .local int rx260_rep
-    .local pmc rx260_cur
-    (rx260_cur, rx260_pos, rx260_tgt) = self."!cursor_start"()
-    rx260_cur."!cursor_debug"("START ", "quote_escape:sym<hex>")
-    .lex unicode:"$\x{a2}", rx260_cur
+    .local string rx261_tgt
+    .local int rx261_pos
+    .local int rx261_off
+    .local int rx261_eos
+    .local int rx261_rep
+    .local pmc rx261_cur
+    (rx261_cur, rx261_pos, rx261_tgt) = self."!cursor_start"()
+    rx261_cur."!cursor_debug"("START ", "quote_escape:sym<oct>")
+    .lex unicode:"$\x{a2}", rx261_cur
     .local pmc match
     .lex "$/", match
-    length rx260_eos, rx260_tgt
-    set rx260_off, 0
-    lt rx260_pos, 2, rx260_start
-    sub rx260_off, rx260_pos, 1
-    substr rx260_tgt, rx260_tgt, rx260_off
-  rx260_start:
+    length rx261_eos, rx261_tgt
+    set rx261_off, 0
+    lt rx261_pos, 2, rx261_start
+    sub rx261_off, rx261_pos, 1
+    substr rx261_tgt, rx261_tgt, rx261_off
+  rx261_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan263_done
-    goto rxscan263_scan
-  rxscan263_loop:
-    ($P10) = rx260_cur."from"()
+    ne $I10, -1, rxscan264_done
+    goto rxscan264_scan
+  rxscan264_loop:
+    ($P10) = rx261_cur."from"()
     inc $P10
-    set rx260_pos, $P10
-    ge rx260_pos, rx260_eos, rxscan263_done
-  rxscan263_scan:
-    set_addr $I10, rxscan263_loop
-    rx260_cur."!mark_push"(0, rx260_pos, $I10)
-  rxscan263_done:
-.annotate "line", 90
-  # rx literal  unicode:"\\x"
-    add $I11, rx260_pos, 2
-    gt $I11, rx260_eos, rx260_fail
-    sub $I11, rx260_pos, rx260_off
-    substr $S10, rx260_tgt, $I11, 2
-    ne $S10, unicode:"\\x", rx260_fail
-    add rx260_pos, 2
+    set rx261_pos, $P10
+    ge rx261_pos, rx261_eos, rxscan264_done
+  rxscan264_scan:
+    set_addr $I10, rxscan264_loop
+    rx261_cur."!mark_push"(0, rx261_pos, $I10)
+  rxscan264_done:
+.annotate "line", 93
+  # rx literal  "\\o"
+    add $I11, rx261_pos, 2
+    gt $I11, rx261_eos, rx261_fail
+    sub $I11, rx261_pos, rx261_off
+    substr $S10, rx261_tgt, $I11, 2
+    ne $S10, "\\o", rx261_fail
+    add rx261_pos, 2
   # rx subrule "quotemod_check" subtype=zerowidth negate=
-    rx260_cur."!cursor_pos"(rx260_pos)
-    $P10 = rx260_cur."quotemod_check"("b")
-    unless $P10, rx260_fail
-  alt264_0:
-.annotate "line", 91
-    set_addr $I10, alt264_1
-    rx260_cur."!mark_push"(0, rx260_pos, $I10)
-  # rx subrule "hexint" subtype=capture negate=
-    rx260_cur."!cursor_pos"(rx260_pos)
-    $P10 = rx260_cur."hexint"()
-    unless $P10, rx260_fail
-    rx260_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("hexint")
-    rx260_pos = $P10."pos"()
-    goto alt264_end
-  alt264_1:
+    rx261_cur."!cursor_pos"(rx261_pos)
+    $P10 = rx261_cur."quotemod_check"("b")
+    unless $P10, rx261_fail
+  alt265_0:
+.annotate "line", 94
+    set_addr $I10, alt265_1
+    rx261_cur."!mark_push"(0, rx261_pos, $I10)
+  # rx subrule "octint" subtype=capture negate=
+    rx261_cur."!cursor_pos"(rx261_pos)
+    $P10 = rx261_cur."octint"()
+    unless $P10, rx261_fail
+    rx261_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("octint")
+    rx261_pos = $P10."pos"()
+    goto alt265_end
+  alt265_1:
   # rx literal  "["
-    add $I11, rx260_pos, 1
-    gt $I11, rx260_eos, rx260_fail
-    sub $I11, rx260_pos, rx260_off
-    substr $S10, rx260_tgt, $I11, 1
-    ne $S10, "[", rx260_fail
-    add rx260_pos, 1
-  # rx subrule "hexints" subtype=capture negate=
-    rx260_cur."!cursor_pos"(rx260_pos)
-    $P10 = rx260_cur."hexints"()
-    unless $P10, rx260_fail
-    rx260_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("hexints")
-    rx260_pos = $P10."pos"()
+    add $I11, rx261_pos, 1
+    gt $I11, rx261_eos, rx261_fail
+    sub $I11, rx261_pos, rx261_off
+    substr $S10, rx261_tgt, $I11, 1
+    ne $S10, "[", rx261_fail
+    add rx261_pos, 1
+  # rx subrule "octints" subtype=capture negate=
+    rx261_cur."!cursor_pos"(rx261_pos)
+    $P10 = rx261_cur."octints"()
+    unless $P10, rx261_fail
+    rx261_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("octints")
+    rx261_pos = $P10."pos"()
   # rx literal  "]"
-    add $I11, rx260_pos, 1
-    gt $I11, rx260_eos, rx260_fail
-    sub $I11, rx260_pos, rx260_off
-    substr $S10, rx260_tgt, $I11, 1
-    ne $S10, "]", rx260_fail
-    add rx260_pos, 1
-  alt264_end:
-.annotate "line", 89
+    add $I11, rx261_pos, 1
+    gt $I11, rx261_eos, rx261_fail
+    sub $I11, rx261_pos, rx261_off
+    substr $S10, rx261_tgt, $I11, 1
+    ne $S10, "]", rx261_fail
+    add rx261_pos, 1
+  alt265_end:
+.annotate "line", 92
   # rx pass
-    rx260_cur."!cursor_pass"(rx260_pos, "quote_escape:sym<hex>")
-    rx260_cur."!cursor_debug"("PASS  ", "quote_escape:sym<hex>", " at pos=", rx260_pos)
-    .return (rx260_cur)
-  rx260_fail:
-.annotate "line", 33
-    (rx260_rep, rx260_pos, $I10, $P10) = rx260_cur."!mark_fail"(0)
-    lt rx260_pos, -1, rx260_done
-    eq rx260_pos, -1, rx260_fail
+    rx261_cur."!cursor_pass"(rx261_pos, "quote_escape:sym<oct>")
+    rx261_cur."!cursor_debug"("PASS  ", "quote_escape:sym<oct>", " at pos=", rx261_pos)
+    .return (rx261_cur)
+  rx261_fail:
+.annotate "line", 33
+    (rx261_rep, rx261_pos, $I10, $P10) = rx261_cur."!mark_fail"(0)
+    lt rx261_pos, -1, rx261_done
+    eq rx261_pos, -1, rx261_fail
     jump $I10
-  rx260_done:
-    rx260_cur."!cursor_fail"()
-    rx260_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<hex>")
-    .return (rx260_cur)
+  rx261_done:
+    rx261_cur."!cursor_fail"()
+    rx261_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<oct>")
+    .return (rx261_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<hex>"  :subid("86_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<oct>"  :subid("86_1271948647.57035") :method
 .annotate "line", 33
-    new $P262, "ResizablePMCArray"
-    push $P262, unicode:"\\x"
-    .return ($P262)
+    new $P263, "ResizablePMCArray"
+    push $P263, "\\o"
+    .return ($P263)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<oct>"  :subid("87_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<chr>"  :subid("87_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
-    .local string rx266_tgt
-    .local int rx266_pos
-    .local int rx266_off
-    .local int rx266_eos
-    .local int rx266_rep
-    .local pmc rx266_cur
-    (rx266_cur, rx266_pos, rx266_tgt) = self."!cursor_start"()
-    rx266_cur."!cursor_debug"("START ", "quote_escape:sym<oct>")
-    .lex unicode:"$\x{a2}", rx266_cur
+    .local string rx267_tgt
+    .local int rx267_pos
+    .local int rx267_off
+    .local int rx267_eos
+    .local int rx267_rep
+    .local pmc rx267_cur
+    (rx267_cur, rx267_pos, rx267_tgt) = self."!cursor_start"()
+    rx267_cur."!cursor_debug"("START ", "quote_escape:sym<chr>")
+    .lex unicode:"$\x{a2}", rx267_cur
     .local pmc match
     .lex "$/", match
-    length rx266_eos, rx266_tgt
-    set rx266_off, 0
-    lt rx266_pos, 2, rx266_start
-    sub rx266_off, rx266_pos, 1
-    substr rx266_tgt, rx266_tgt, rx266_off
-  rx266_start:
+    length rx267_eos, rx267_tgt
+    set rx267_off, 0
+    lt rx267_pos, 2, rx267_start
+    sub rx267_off, rx267_pos, 1
+    substr rx267_tgt, rx267_tgt, rx267_off
+  rx267_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan269_done
-    goto rxscan269_scan
-  rxscan269_loop:
-    ($P10) = rx266_cur."from"()
+    ne $I10, -1, rxscan270_done
+    goto rxscan270_scan
+  rxscan270_loop:
+    ($P10) = rx267_cur."from"()
     inc $P10
-    set rx266_pos, $P10
-    ge rx266_pos, rx266_eos, rxscan269_done
-  rxscan269_scan:
-    set_addr $I10, rxscan269_loop
-    rx266_cur."!mark_push"(0, rx266_pos, $I10)
-  rxscan269_done:
-.annotate "line", 94
-  # rx literal  "\\o"
-    add $I11, rx266_pos, 2
-    gt $I11, rx266_eos, rx266_fail
-    sub $I11, rx266_pos, rx266_off
-    substr $S10, rx266_tgt, $I11, 2
-    ne $S10, "\\o", rx266_fail
-    add rx266_pos, 2
+    set rx267_pos, $P10
+    ge rx267_pos, rx267_eos, rxscan270_done
+  rxscan270_scan:
+    set_addr $I10, rxscan270_loop
+    rx267_cur."!mark_push"(0, rx267_pos, $I10)
+  rxscan270_done:
+.annotate "line", 96
+  # rx literal  "\\c"
+    add $I11, rx267_pos, 2
+    gt $I11, rx267_eos, rx267_fail
+    sub $I11, rx267_pos, rx267_off
+    substr $S10, rx267_tgt, $I11, 2
+    ne $S10, "\\c", rx267_fail
+    add rx267_pos, 2
   # rx subrule "quotemod_check" subtype=zerowidth negate=
-    rx266_cur."!cursor_pos"(rx266_pos)
-    $P10 = rx266_cur."quotemod_check"("b")
-    unless $P10, rx266_fail
-  alt270_0:
-.annotate "line", 95
-    set_addr $I10, alt270_1
-    rx266_cur."!mark_push"(0, rx266_pos, $I10)
-  # rx subrule "octint" subtype=capture negate=
-    rx266_cur."!cursor_pos"(rx266_pos)
-    $P10 = rx266_cur."octint"()
-    unless $P10, rx266_fail
-    rx266_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("octint")
-    rx266_pos = $P10."pos"()
-    goto alt270_end
-  alt270_1:
-  # rx literal  "["
-    add $I11, rx266_pos, 1
-    gt $I11, rx266_eos, rx266_fail
-    sub $I11, rx266_pos, rx266_off
-    substr $S10, rx266_tgt, $I11, 1
-    ne $S10, "[", rx266_fail
-    add rx266_pos, 1
-  # rx subrule "octints" subtype=capture negate=
-    rx266_cur."!cursor_pos"(rx266_pos)
-    $P10 = rx266_cur."octints"()
-    unless $P10, rx266_fail
-    rx266_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("octints")
-    rx266_pos = $P10."pos"()
-  # rx literal  "]"
-    add $I11, rx266_pos, 1
-    gt $I11, rx266_eos, rx266_fail
-    sub $I11, rx266_pos, rx266_off
-    substr $S10, rx266_tgt, $I11, 1
-    ne $S10, "]", rx266_fail
-    add rx266_pos, 1
-  alt270_end:
-.annotate "line", 93
+    rx267_cur."!cursor_pos"(rx267_pos)
+    $P10 = rx267_cur."quotemod_check"("b")
+    unless $P10, rx267_fail
+  # rx subrule "charspec" subtype=capture negate=
+    rx267_cur."!cursor_pos"(rx267_pos)
+    $P10 = rx267_cur."charspec"()
+    unless $P10, rx267_fail
+    rx267_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("charspec")
+    rx267_pos = $P10."pos"()
   # rx pass
-    rx266_cur."!cursor_pass"(rx266_pos, "quote_escape:sym<oct>")
-    rx266_cur."!cursor_debug"("PASS  ", "quote_escape:sym<oct>", " at pos=", rx266_pos)
-    .return (rx266_cur)
-  rx266_fail:
-.annotate "line", 33
-    (rx266_rep, rx266_pos, $I10, $P10) = rx266_cur."!mark_fail"(0)
-    lt rx266_pos, -1, rx266_done
-    eq rx266_pos, -1, rx266_fail
+    rx267_cur."!cursor_pass"(rx267_pos, "quote_escape:sym<chr>")
+    rx267_cur."!cursor_debug"("PASS  ", "quote_escape:sym<chr>", " at pos=", rx267_pos)
+    .return (rx267_cur)
+  rx267_fail:
+.annotate "line", 33
+    (rx267_rep, rx267_pos, $I10, $P10) = rx267_cur."!mark_fail"(0)
+    lt rx267_pos, -1, rx267_done
+    eq rx267_pos, -1, rx267_fail
     jump $I10
-  rx266_done:
-    rx266_cur."!cursor_fail"()
-    rx266_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<oct>")
-    .return (rx266_cur)
+  rx267_done:
+    rx267_cur."!cursor_fail"()
+    rx267_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<chr>")
+    .return (rx267_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<oct>"  :subid("88_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<chr>"  :subid("88_1271948647.57035") :method
 .annotate "line", 33
-    new $P268, "ResizablePMCArray"
-    push $P268, "\\o"
-    .return ($P268)
+    new $P269, "ResizablePMCArray"
+    push $P269, "\\c"
+    .return ($P269)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<chr>"  :subid("89_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<0>"  :subid("89_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx272_tgt
     .local int rx272_pos
@@ -3878,7 +3883,7 @@
     .local int rx272_rep
     .local pmc rx272_cur
     (rx272_cur, rx272_pos, rx272_tgt) = self."!cursor_start"()
-    rx272_cur."!cursor_debug"("START ", "quote_escape:sym<chr>")
+    rx272_cur."!cursor_debug"("START ", "quote_escape:sym<0>")
     .lex unicode:"$\x{a2}", rx272_cur
     .local pmc match
     .lex "$/", match
@@ -3901,27 +3906,41 @@
     rx272_cur."!mark_push"(0, rx272_pos, $I10)
   rxscan275_done:
 .annotate "line", 97
-  # rx literal  "\\c"
-    add $I11, rx272_pos, 2
+  # rx literal  "\\"
+    add $I11, rx272_pos, 1
+    gt $I11, rx272_eos, rx272_fail
+    sub $I11, rx272_pos, rx272_off
+    substr $S10, rx272_tgt, $I11, 1
+    ne $S10, "\\", rx272_fail
+    add rx272_pos, 1
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_276_fail
+    rx272_cur."!mark_push"(0, rx272_pos, $I10)
+  # rx literal  "0"
+    add $I11, rx272_pos, 1
     gt $I11, rx272_eos, rx272_fail
     sub $I11, rx272_pos, rx272_off
-    substr $S10, rx272_tgt, $I11, 2
-    ne $S10, "\\c", rx272_fail
-    add rx272_pos, 2
+    substr $S10, rx272_tgt, $I11, 1
+    ne $S10, "0", rx272_fail
+    add rx272_pos, 1
+    set_addr $I10, rxcap_276_fail
+    ($I12, $I11) = rx272_cur."!mark_peek"($I10)
+    rx272_cur."!cursor_pos"($I11)
+    ($P10) = rx272_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx272_pos, "")
+    rx272_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_276_done
+  rxcap_276_fail:
+    goto rx272_fail
+  rxcap_276_done:
   # rx subrule "quotemod_check" subtype=zerowidth negate=
     rx272_cur."!cursor_pos"(rx272_pos)
     $P10 = rx272_cur."quotemod_check"("b")
     unless $P10, rx272_fail
-  # rx subrule "charspec" subtype=capture negate=
-    rx272_cur."!cursor_pos"(rx272_pos)
-    $P10 = rx272_cur."charspec"()
-    unless $P10, rx272_fail
-    rx272_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("charspec")
-    rx272_pos = $P10."pos"()
   # rx pass
-    rx272_cur."!cursor_pass"(rx272_pos, "quote_escape:sym<chr>")
-    rx272_cur."!cursor_debug"("PASS  ", "quote_escape:sym<chr>", " at pos=", rx272_pos)
+    rx272_cur."!cursor_pass"(rx272_pos, "quote_escape:sym<0>")
+    rx272_cur."!cursor_debug"("PASS  ", "quote_escape:sym<0>", " at pos=", rx272_pos)
     .return (rx272_cur)
   rx272_fail:
 .annotate "line", 33
@@ -3931,950 +3950,856 @@
     jump $I10
   rx272_done:
     rx272_cur."!cursor_fail"()
-    rx272_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<chr>")
+    rx272_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<0>")
     .return (rx272_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<chr>"  :subid("90_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<0>"  :subid("90_1271948647.57035") :method
 .annotate "line", 33
     new $P274, "ResizablePMCArray"
-    push $P274, "\\c"
+    push $P274, "\\0"
     .return ($P274)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<0>"  :subid("91_1271336377.56964") :method :outer("11_1271336377.56964")
-.annotate "line", 33
-    .local string rx277_tgt
-    .local int rx277_pos
-    .local int rx277_off
-    .local int rx277_eos
-    .local int rx277_rep
-    .local pmc rx277_cur
-    (rx277_cur, rx277_pos, rx277_tgt) = self."!cursor_start"()
-    rx277_cur."!cursor_debug"("START ", "quote_escape:sym<0>")
-    .lex unicode:"$\x{a2}", rx277_cur
-    .local pmc match
-    .lex "$/", match
-    length rx277_eos, rx277_tgt
-    set rx277_off, 0
-    lt rx277_pos, 2, rx277_start
-    sub rx277_off, rx277_pos, 1
-    substr rx277_tgt, rx277_tgt, rx277_off
-  rx277_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan280_done
-    goto rxscan280_scan
-  rxscan280_loop:
-    ($P10) = rx277_cur."from"()
-    inc $P10
-    set rx277_pos, $P10
-    ge rx277_pos, rx277_eos, rxscan280_done
-  rxscan280_scan:
-    set_addr $I10, rxscan280_loop
-    rx277_cur."!mark_push"(0, rx277_pos, $I10)
-  rxscan280_done:
-.annotate "line", 98
-  # rx literal  "\\"
-    add $I11, rx277_pos, 1
-    gt $I11, rx277_eos, rx277_fail
-    sub $I11, rx277_pos, rx277_off
-    substr $S10, rx277_tgt, $I11, 1
-    ne $S10, "\\", rx277_fail
-    add rx277_pos, 1
-  # rx subcapture "sym"
-    set_addr $I10, rxcap_281_fail
-    rx277_cur."!mark_push"(0, rx277_pos, $I10)
-  # rx literal  "0"
-    add $I11, rx277_pos, 1
-    gt $I11, rx277_eos, rx277_fail
-    sub $I11, rx277_pos, rx277_off
-    substr $S10, rx277_tgt, $I11, 1
-    ne $S10, "0", rx277_fail
-    add rx277_pos, 1
-    set_addr $I10, rxcap_281_fail
-    ($I12, $I11) = rx277_cur."!mark_peek"($I10)
-    rx277_cur."!cursor_pos"($I11)
-    ($P10) = rx277_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx277_pos, "")
-    rx277_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("sym")
-    goto rxcap_281_done
-  rxcap_281_fail:
-    goto rx277_fail
-  rxcap_281_done:
-  # rx subrule "quotemod_check" subtype=zerowidth negate=
-    rx277_cur."!cursor_pos"(rx277_pos)
-    $P10 = rx277_cur."quotemod_check"("b")
-    unless $P10, rx277_fail
-  # rx pass
-    rx277_cur."!cursor_pass"(rx277_pos, "quote_escape:sym<0>")
-    rx277_cur."!cursor_debug"("PASS  ", "quote_escape:sym<0>", " at pos=", rx277_pos)
-    .return (rx277_cur)
-  rx277_fail:
-.annotate "line", 33
-    (rx277_rep, rx277_pos, $I10, $P10) = rx277_cur."!mark_fail"(0)
-    lt rx277_pos, -1, rx277_done
-    eq rx277_pos, -1, rx277_fail
-    jump $I10
-  rx277_done:
-    rx277_cur."!cursor_fail"()
-    rx277_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<0>")
-    .return (rx277_cur)
-    .return ()
-.end
-
-
-.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<0>"  :subid("92_1271336377.56964") :method
-.annotate "line", 33
-    new $P279, "ResizablePMCArray"
-    push $P279, "\\0"
-    .return ($P279)
-.end
-
-
-.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<misc>"  :subid("93_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<misc>"  :subid("91_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
-    .const 'Sub' $P302 = "97_1271336377.56964" 
-    capture_lex $P302
-    .const 'Sub' $P295 = "96_1271336377.56964" 
-    capture_lex $P295
-    .const 'Sub' $P290 = "95_1271336377.56964" 
+    .const 'Sub' $P297 = "95_1271948647.57035" 
+    capture_lex $P297
+    .const 'Sub' $P290 = "94_1271948647.57035" 
     capture_lex $P290
-    .local string rx283_tgt
-    .local int rx283_pos
-    .local int rx283_off
-    .local int rx283_eos
-    .local int rx283_rep
-    .local pmc rx283_cur
-    (rx283_cur, rx283_pos, rx283_tgt) = self."!cursor_start"()
-    rx283_cur."!cursor_debug"("START ", "quote_escape:sym<misc>")
-    .lex unicode:"$\x{a2}", rx283_cur
+    .const 'Sub' $P285 = "93_1271948647.57035" 
+    capture_lex $P285
+    .local string rx278_tgt
+    .local int rx278_pos
+    .local int rx278_off
+    .local int rx278_eos
+    .local int rx278_rep
+    .local pmc rx278_cur
+    (rx278_cur, rx278_pos, rx278_tgt) = self."!cursor_start"()
+    rx278_cur."!cursor_debug"("START ", "quote_escape:sym<misc>")
+    .lex unicode:"$\x{a2}", rx278_cur
     .local pmc match
     .lex "$/", match
-    length rx283_eos, rx283_tgt
-    set rx283_off, 0
-    lt rx283_pos, 2, rx283_start
-    sub rx283_off, rx283_pos, 1
-    substr rx283_tgt, rx283_tgt, rx283_off
-  rx283_start:
+    length rx278_eos, rx278_tgt
+    set rx278_off, 0
+    lt rx278_pos, 2, rx278_start
+    sub rx278_off, rx278_pos, 1
+    substr rx278_tgt, rx278_tgt, rx278_off
+  rx278_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan286_done
-    goto rxscan286_scan
-  rxscan286_loop:
-    ($P10) = rx283_cur."from"()
+    ne $I10, -1, rxscan281_done
+    goto rxscan281_scan
+  rxscan281_loop:
+    ($P10) = rx278_cur."from"()
     inc $P10
-    set rx283_pos, $P10
-    ge rx283_pos, rx283_eos, rxscan286_done
-  rxscan286_scan:
-    set_addr $I10, rxscan286_loop
-    rx283_cur."!mark_push"(0, rx283_pos, $I10)
-  rxscan286_done:
+    set rx278_pos, $P10
+    ge rx278_pos, rx278_eos, rxscan281_done
+  rxscan281_scan:
+    set_addr $I10, rxscan281_loop
+    rx278_cur."!mark_push"(0, rx278_pos, $I10)
+  rxscan281_done:
+.annotate "line", 98
+    rx278_cur."!cursor_pos"(rx278_pos)
+    find_lex $P282, unicode:"$\x{a2}"
+    $P283 = $P282."MATCH"()
+    store_lex "$/", $P283
 .annotate "line", 99
-    rx283_cur."!cursor_pos"(rx283_pos)
-    find_lex $P287, unicode:"$\x{a2}"
-    $P288 = $P287."MATCH"()
-    store_lex "$/", $P288
-.annotate "line", 100
-    .const 'Sub' $P290 = "95_1271336377.56964" 
-    capture_lex $P290
-    $P291 = $P290()
+    .const 'Sub' $P285 = "93_1271948647.57035" 
+    capture_lex $P285
+    $P286 = $P285()
   # rx literal  "\\"
-    add $I11, rx283_pos, 1
-    gt $I11, rx283_eos, rx283_fail
-    sub $I11, rx283_pos, rx283_off
-    substr $S10, rx283_tgt, $I11, 1
-    ne $S10, "\\", rx283_fail
-    add rx283_pos, 1
-  alt292_0:
+    add $I11, rx278_pos, 1
+    gt $I11, rx278_eos, rx278_fail
+    sub $I11, rx278_pos, rx278_off
+    substr $S10, rx278_tgt, $I11, 1
+    ne $S10, "\\", rx278_fail
+    add rx278_pos, 1
+  alt287_0:
+.annotate "line", 100
+    set_addr $I10, alt287_1
+    rx278_cur."!mark_push"(0, rx278_pos, $I10)
 .annotate "line", 101
-    set_addr $I10, alt292_1
-    rx283_cur."!mark_push"(0, rx283_pos, $I10)
-.annotate "line", 102
   # rx subrule "quotemod_check" subtype=zerowidth negate=
-    rx283_cur."!cursor_pos"(rx283_pos)
-    $P10 = rx283_cur."quotemod_check"("b")
-    unless $P10, rx283_fail
-  alt293_0:
+    rx278_cur."!cursor_pos"(rx278_pos)
+    $P10 = rx278_cur."quotemod_check"("b")
+    unless $P10, rx278_fail
+  alt288_0:
+.annotate "line", 102
+    set_addr $I10, alt288_1
+    rx278_cur."!mark_push"(0, rx278_pos, $I10)
 .annotate "line", 103
-    set_addr $I10, alt293_1
-    rx283_cur."!mark_push"(0, rx283_pos, $I10)
-.annotate "line", 104
-  # rx subrule $P295 subtype=capture negate=
-    rx283_cur."!cursor_pos"(rx283_pos)
-    .const 'Sub' $P295 = "96_1271336377.56964" 
-    capture_lex $P295
-    $P10 = rx283_cur.$P295()
-    unless $P10, rx283_fail
-    rx283_cur."!mark_push"(0, -1, 0, $P10)
+  # rx subrule $P290 subtype=capture negate=
+    rx278_cur."!cursor_pos"(rx278_pos)
+    .const 'Sub' $P290 = "94_1271948647.57035" 
+    capture_lex $P290
+    $P10 = rx278_cur.$P290()
+    unless $P10, rx278_fail
+    rx278_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("textqq")
-    rx283_pos = $P10."pos"()
-    goto alt293_end
-  alt293_1:
-.annotate "line", 105
+    rx278_pos = $P10."pos"()
+    goto alt288_end
+  alt288_1:
+.annotate "line", 104
   # rx subcapture "x"
-    set_addr $I10, rxcap_298_fail
-    rx283_cur."!mark_push"(0, rx283_pos, $I10)
+    set_addr $I10, rxcap_293_fail
+    rx278_cur."!mark_push"(0, rx278_pos, $I10)
   # rx charclass w
-    ge rx283_pos, rx283_eos, rx283_fail
-    sub $I10, rx283_pos, rx283_off
-    is_cclass $I11, 8192, rx283_tgt, $I10
-    unless $I11, rx283_fail
-    inc rx283_pos
-    set_addr $I10, rxcap_298_fail
-    ($I12, $I11) = rx283_cur."!mark_peek"($I10)
-    rx283_cur."!cursor_pos"($I11)
-    ($P10) = rx283_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx283_pos, "")
-    rx283_cur."!mark_push"(0, -1, 0, $P10)
+    ge rx278_pos, rx278_eos, rx278_fail
+    sub $I10, rx278_pos, rx278_off
+    is_cclass $I11, 8192, rx278_tgt, $I10
+    unless $I11, rx278_fail
+    inc rx278_pos
+    set_addr $I10, rxcap_293_fail
+    ($I12, $I11) = rx278_cur."!mark_peek"($I10)
+    rx278_cur."!cursor_pos"($I11)
+    ($P10) = rx278_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx278_pos, "")
+    rx278_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("x")
-    goto rxcap_298_done
-  rxcap_298_fail:
-    goto rx283_fail
-  rxcap_298_done:
-    rx283_cur."!cursor_pos"(rx283_pos)
-    find_lex $P299, unicode:"$\x{a2}"
-    $P300 = $P299."MATCH"()
-    store_lex "$/", $P300
-    .const 'Sub' $P302 = "97_1271336377.56964" 
-    capture_lex $P302
-    $P312 = $P302()
-  alt293_end:
-.annotate "line", 102
-    goto alt292_end
-  alt292_1:
-.annotate "line", 107
+    goto rxcap_293_done
+  rxcap_293_fail:
+    goto rx278_fail
+  rxcap_293_done:
+    rx278_cur."!cursor_pos"(rx278_pos)
+    find_lex $P294, unicode:"$\x{a2}"
+    $P295 = $P294."MATCH"()
+    store_lex "$/", $P295
+    .const 'Sub' $P297 = "95_1271948647.57035" 
+    capture_lex $P297
+    $P307 = $P297()
+  alt288_end:
+.annotate "line", 101
+    goto alt287_end
+  alt287_1:
+.annotate "line", 106
   # rx subcapture "textq"
-    set_addr $I10, rxcap_313_fail
-    rx283_cur."!mark_push"(0, rx283_pos, $I10)
+    set_addr $I10, rxcap_308_fail
+    rx278_cur."!mark_push"(0, rx278_pos, $I10)
   # rx charclass .
-    ge rx283_pos, rx283_eos, rx283_fail
-    inc rx283_pos
-    set_addr $I10, rxcap_313_fail
-    ($I12, $I11) = rx283_cur."!mark_peek"($I10)
-    rx283_cur."!cursor_pos"($I11)
-    ($P10) = rx283_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx283_pos, "")
-    rx283_cur."!mark_push"(0, -1, 0, $P10)
+    ge rx278_pos, rx278_eos, rx278_fail
+    inc rx278_pos
+    set_addr $I10, rxcap_308_fail
+    ($I12, $I11) = rx278_cur."!mark_peek"($I10)
+    rx278_cur."!cursor_pos"($I11)
+    ($P10) = rx278_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx278_pos, "")
+    rx278_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("textq")
-    goto rxcap_313_done
-  rxcap_313_fail:
-    goto rx283_fail
-  rxcap_313_done:
-  alt292_end:
-.annotate "line", 99
+    goto rxcap_308_done
+  rxcap_308_fail:
+    goto rx278_fail
+  rxcap_308_done:
+  alt287_end:
+.annotate "line", 98
   # rx pass
-    rx283_cur."!cursor_pass"(rx283_pos, "quote_escape:sym<misc>")
-    rx283_cur."!cursor_debug"("PASS  ", "quote_escape:sym<misc>", " at pos=", rx283_pos)
-    .return (rx283_cur)
-  rx283_fail:
-.annotate "line", 33
-    (rx283_rep, rx283_pos, $I10, $P10) = rx283_cur."!mark_fail"(0)
-    lt rx283_pos, -1, rx283_done
-    eq rx283_pos, -1, rx283_fail
+    rx278_cur."!cursor_pass"(rx278_pos, "quote_escape:sym<misc>")
+    rx278_cur."!cursor_debug"("PASS  ", "quote_escape:sym<misc>", " at pos=", rx278_pos)
+    .return (rx278_cur)
+  rx278_fail:
+.annotate "line", 33
+    (rx278_rep, rx278_pos, $I10, $P10) = rx278_cur."!mark_fail"(0)
+    lt rx278_pos, -1, rx278_done
+    eq rx278_pos, -1, rx278_fail
     jump $I10
-  rx283_done:
-    rx283_cur."!cursor_fail"()
-    rx283_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<misc>")
-    .return (rx283_cur)
+  rx278_done:
+    rx278_cur."!cursor_fail"()
+    rx278_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<misc>")
+    .return (rx278_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<misc>"  :subid("94_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<misc>"  :subid("92_1271948647.57035") :method
 .annotate "line", 33
-    new $P285, "ResizablePMCArray"
-    push $P285, ""
-    .return ($P285)
+    new $P280, "ResizablePMCArray"
+    push $P280, ""
+    .return ($P280)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block289"  :anon :subid("95_1271336377.56964") :outer("93_1271336377.56964")
-.annotate "line", 100
+.sub "_block284"  :anon :subid("93_1271948647.57035") :outer("91_1271948647.57035")
+.annotate "line", 99
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block294"  :anon :subid("96_1271336377.56964") :method :outer("93_1271336377.56964")
-.annotate "line", 104
-    .local string rx296_tgt
-    .local int rx296_pos
-    .local int rx296_off
-    .local int rx296_eos
-    .local int rx296_rep
-    .local pmc rx296_cur
-    (rx296_cur, rx296_pos, rx296_tgt) = self."!cursor_start"()
-    rx296_cur."!cursor_debug"("START ", "")
-    .lex unicode:"$\x{a2}", rx296_cur
+.sub "_block289"  :anon :subid("94_1271948647.57035") :method :outer("91_1271948647.57035")
+.annotate "line", 103
+    .local string rx291_tgt
+    .local int rx291_pos
+    .local int rx291_off
+    .local int rx291_eos
+    .local int rx291_rep
+    .local pmc rx291_cur
+    (rx291_cur, rx291_pos, rx291_tgt) = self."!cursor_start"()
+    rx291_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx291_cur
     .local pmc match
     .lex "$/", match
-    length rx296_eos, rx296_tgt
-    set rx296_off, 0
-    lt rx296_pos, 2, rx296_start
-    sub rx296_off, rx296_pos, 1
-    substr rx296_tgt, rx296_tgt, rx296_off
-  rx296_start:
+    length rx291_eos, rx291_tgt
+    set rx291_off, 0
+    lt rx291_pos, 2, rx291_start
+    sub rx291_off, rx291_pos, 1
+    substr rx291_tgt, rx291_tgt, rx291_off
+  rx291_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan297_done
-    goto rxscan297_scan
-  rxscan297_loop:
-    ($P10) = rx296_cur."from"()
+    ne $I10, -1, rxscan292_done
+    goto rxscan292_scan
+  rxscan292_loop:
+    ($P10) = rx291_cur."from"()
     inc $P10
-    set rx296_pos, $P10
-    ge rx296_pos, rx296_eos, rxscan297_done
-  rxscan297_scan:
-    set_addr $I10, rxscan297_loop
-    rx296_cur."!mark_push"(0, rx296_pos, $I10)
-  rxscan297_done:
+    set rx291_pos, $P10
+    ge rx291_pos, rx291_eos, rxscan292_done
+  rxscan292_scan:
+    set_addr $I10, rxscan292_loop
+    rx291_cur."!mark_push"(0, rx291_pos, $I10)
+  rxscan292_done:
   # rx charclass W
-    ge rx296_pos, rx296_eos, rx296_fail
-    sub $I10, rx296_pos, rx296_off
-    is_cclass $I11, 8192, rx296_tgt, $I10
-    if $I11, rx296_fail
-    inc rx296_pos
+    ge rx291_pos, rx291_eos, rx291_fail
+    sub $I10, rx291_pos, rx291_off
+    is_cclass $I11, 8192, rx291_tgt, $I10
+    if $I11, rx291_fail
+    inc rx291_pos
   # rx pass
-    rx296_cur."!cursor_pass"(rx296_pos, "")
-    rx296_cur."!cursor_debug"("PASS  ", "", " at pos=", rx296_pos)
-    .return (rx296_cur)
-  rx296_fail:
-    (rx296_rep, rx296_pos, $I10, $P10) = rx296_cur."!mark_fail"(0)
-    lt rx296_pos, -1, rx296_done
-    eq rx296_pos, -1, rx296_fail
+    rx291_cur."!cursor_pass"(rx291_pos, "")
+    rx291_cur."!cursor_debug"("PASS  ", "", " at pos=", rx291_pos)
+    .return (rx291_cur)
+  rx291_fail:
+    (rx291_rep, rx291_pos, $I10, $P10) = rx291_cur."!mark_fail"(0)
+    lt rx291_pos, -1, rx291_done
+    eq rx291_pos, -1, rx291_fail
     jump $I10
-  rx296_done:
-    rx296_cur."!cursor_fail"()
-    rx296_cur."!cursor_debug"("FAIL  ", "")
-    .return (rx296_cur)
+  rx291_done:
+    rx291_cur."!cursor_fail"()
+    rx291_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx291_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block301"  :anon :subid("97_1271336377.56964") :outer("93_1271336377.56964")
-.annotate "line", 105
-    find_lex $P303, "$/"
-    $P304 = $P303."CURSOR"()
-    new $P305, "String"
-    assign $P305, "Unrecognized backslash sequence: '\\"
-    find_lex $P306, "$/"
-    unless_null $P306, vivify_106
-    $P306 = root_new ['parrot';'Hash']
-  vivify_106:
-    set $P307, $P306["x"]
-    unless_null $P307, vivify_107
-    new $P307, "Undef"
-  vivify_107:
-    $S308 = $P307."Str"()
-    concat $P309, $P305, $S308
-    concat $P310, $P309, "'"
-    $P311 = $P304."panic"($P310)
-    .return ($P311)
+.sub "_block296"  :anon :subid("95_1271948647.57035") :outer("91_1271948647.57035")
+.annotate "line", 104
+    find_lex $P298, "$/"
+    $P299 = $P298."CURSOR"()
+    new $P300, "String"
+    assign $P300, "Unrecognized backslash sequence: '\\"
+    find_lex $P301, "$/"
+    unless_null $P301, vivify_104
+    $P301 = root_new ['parrot';'Hash']
+  vivify_104:
+    set $P302, $P301["x"]
+    unless_null $P302, vivify_105
+    new $P302, "Undef"
+  vivify_105:
+    $S303 = $P302."Str"()
+    concat $P304, $P300, $S303
+    concat $P305, $P304, "'"
+    $P306 = $P299."panic"($P305)
+    .return ($P306)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charname"  :subid("98_1271336377.56964") :method :outer("11_1271336377.56964")
-.annotate "line", 33
-    .const 'Sub' $P324 = "100_1271336377.56964" 
-    capture_lex $P324
-    .local string rx315_tgt
-    .local int rx315_pos
-    .local int rx315_off
-    .local int rx315_eos
-    .local int rx315_rep
-    .local pmc rx315_cur
-    (rx315_cur, rx315_pos, rx315_tgt) = self."!cursor_start"()
-    rx315_cur."!cursor_debug"("START ", "charname")
-    .lex unicode:"$\x{a2}", rx315_cur
+.sub "charname"  :subid("96_1271948647.57035") :method :outer("11_1271948647.57035")
+.annotate "line", 33
+    .const 'Sub' $P319 = "98_1271948647.57035" 
+    capture_lex $P319
+    .local string rx310_tgt
+    .local int rx310_pos
+    .local int rx310_off
+    .local int rx310_eos
+    .local int rx310_rep
+    .local pmc rx310_cur
+    (rx310_cur, rx310_pos, rx310_tgt) = self."!cursor_start"()
+    rx310_cur."!cursor_debug"("START ", "charname")
+    .lex unicode:"$\x{a2}", rx310_cur
     .local pmc match
     .lex "$/", match
-    length rx315_eos, rx315_tgt
-    set rx315_off, 0
-    lt rx315_pos, 2, rx315_start
-    sub rx315_off, rx315_pos, 1
-    substr rx315_tgt, rx315_tgt, rx315_off
-  rx315_start:
+    length rx310_eos, rx310_tgt
+    set rx310_off, 0
+    lt rx310_pos, 2, rx310_start
+    sub rx310_off, rx310_pos, 1
+    substr rx310_tgt, rx310_tgt, rx310_off
+  rx310_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan319_done
-    goto rxscan319_scan
-  rxscan319_loop:
-    ($P10) = rx315_cur."from"()
+    ne $I10, -1, rxscan314_done
+    goto rxscan314_scan
+  rxscan314_loop:
+    ($P10) = rx310_cur."from"()
     inc $P10
-    set rx315_pos, $P10
-    ge rx315_pos, rx315_eos, rxscan319_done
-  rxscan319_scan:
-    set_addr $I10, rxscan319_loop
-    rx315_cur."!mark_push"(0, rx315_pos, $I10)
-  rxscan319_done:
-  alt320_0:
+    set rx310_pos, $P10
+    ge rx310_pos, rx310_eos, rxscan314_done
+  rxscan314_scan:
+    set_addr $I10, rxscan314_loop
+    rx310_cur."!mark_push"(0, rx310_pos, $I10)
+  rxscan314_done:
+  alt315_0:
+.annotate "line", 110
+    set_addr $I10, alt315_1
+    rx310_cur."!mark_push"(0, rx310_pos, $I10)
 .annotate "line", 111
-    set_addr $I10, alt320_1
-    rx315_cur."!mark_push"(0, rx315_pos, $I10)
-.annotate "line", 112
   # rx subrule "integer" subtype=capture negate=
-    rx315_cur."!cursor_pos"(rx315_pos)
-    $P10 = rx315_cur."integer"()
-    unless $P10, rx315_fail
-    rx315_cur."!mark_push"(0, -1, 0, $P10)
+    rx310_cur."!cursor_pos"(rx310_pos)
+    $P10 = rx310_cur."integer"()
+    unless $P10, rx310_fail
+    rx310_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("integer")
-    rx315_pos = $P10."pos"()
-    goto alt320_end
-  alt320_1:
-.annotate "line", 113
+    rx310_pos = $P10."pos"()
+    goto alt315_end
+  alt315_1:
+.annotate "line", 112
   # rx enumcharlist negate=0 
-    ge rx315_pos, rx315_eos, rx315_fail
-    sub $I10, rx315_pos, rx315_off
-    substr $S10, rx315_tgt, $I10, 1
+    ge rx310_pos, rx310_eos, rx310_fail
+    sub $I10, rx310_pos, rx310_off
+    substr $S10, rx310_tgt, $I10, 1
     index $I11, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", $S10
-    lt $I11, 0, rx315_fail
-    inc rx315_pos
-  # rx rxquantf321 ** 0..*
-    set_addr $I10, rxquantf321_loop
-    rx315_cur."!mark_push"(0, rx315_pos, $I10)
-    goto rxquantf321_done
-  rxquantf321_loop:
+    lt $I11, 0, rx310_fail
+    inc rx310_pos
+  # rx rxquantf316 ** 0..*
+    set_addr $I10, rxquantf316_loop
+    rx310_cur."!mark_push"(0, rx310_pos, $I10)
+    goto rxquantf316_done
+  rxquantf316_loop:
   # rx enumcharlist negate=1 
-    ge rx315_pos, rx315_eos, rx315_fail
-    sub $I10, rx315_pos, rx315_off
-    substr $S10, rx315_tgt, $I10, 1
+    ge rx310_pos, rx310_eos, rx310_fail
+    sub $I10, rx310_pos, rx310_off
+    substr $S10, rx310_tgt, $I10, 1
     index $I11, "],#", $S10
-    ge $I11, 0, rx315_fail
-    inc rx315_pos
-    set_addr $I10, rxquantf321_loop
-    rx315_cur."!mark_push"($I322, rx315_pos, $I10)
-  rxquantf321_done:
+    ge $I11, 0, rx310_fail
+    inc rx310_pos
+    set_addr $I10, rxquantf316_loop
+    rx310_cur."!mark_push"($I317, rx310_pos, $I10)
+  rxquantf316_done:
   # rx enumcharlist negate=0 
-    ge rx315_pos, rx315_eos, rx315_fail
-    sub $I10, rx315_pos, rx315_off
-    substr $S10, rx315_tgt, $I10, 1
+    ge rx310_pos, rx310_eos, rx310_fail
+    sub $I10, rx310_pos, rx310_off
+    substr $S10, rx310_tgt, $I10, 1
     index $I11, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)", $S10
-    lt $I11, 0, rx315_fail
-    inc rx315_pos
-.annotate "line", 114
+    lt $I11, 0, rx310_fail
+    inc rx310_pos
+.annotate "line", 113
   # rx subrule "before" subtype=zerowidth negate=
-    rx315_cur."!cursor_pos"(rx315_pos)
-    .const 'Sub' $P324 = "100_1271336377.56964" 
-    capture_lex $P324
-    $P10 = rx315_cur."before"($P324)
-    unless $P10, rx315_fail
-  alt320_end:
-.annotate "line", 111
+    rx310_cur."!cursor_pos"(rx310_pos)
+    .const 'Sub' $P319 = "98_1271948647.57035" 
+    capture_lex $P319
+    $P10 = rx310_cur."before"($P319)
+    unless $P10, rx310_fail
+  alt315_end:
+.annotate "line", 110
   # rx pass
-    rx315_cur."!cursor_pass"(rx315_pos, "charname")
-    rx315_cur."!cursor_debug"("PASS  ", "charname", " at pos=", rx315_pos)
-    .return (rx315_cur)
-  rx315_fail:
-.annotate "line", 33
-    (rx315_rep, rx315_pos, $I10, $P10) = rx315_cur."!mark_fail"(0)
-    lt rx315_pos, -1, rx315_done
-    eq rx315_pos, -1, rx315_fail
+    rx310_cur."!cursor_pass"(rx310_pos, "charname")
+    rx310_cur."!cursor_debug"("PASS  ", "charname", " at pos=", rx310_pos)
+    .return (rx310_cur)
+  rx310_fail:
+.annotate "line", 33
+    (rx310_rep, rx310_pos, $I10, $P10) = rx310_cur."!mark_fail"(0)
+    lt rx310_pos, -1, rx310_done
+    eq rx310_pos, -1, rx310_fail
     jump $I10
-  rx315_done:
-    rx315_cur."!cursor_fail"()
-    rx315_cur."!cursor_debug"("FAIL  ", "charname")
-    .return (rx315_cur)
+  rx310_done:
+    rx310_cur."!cursor_fail"()
+    rx310_cur."!cursor_debug"("FAIL  ", "charname")
+    .return (rx310_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charname"  :subid("99_1271336377.56964") :method
+.sub "!PREFIX__charname"  :subid("97_1271948647.57035") :method
 .annotate "line", 33
-    $P317 = self."!PREFIX__!subrule"("integer", "")
-    new $P318, "ResizablePMCArray"
-    push $P318, "Z"
-    push $P318, "Y"
-    push $P318, "X"
-    push $P318, "W"
-    push $P318, "V"
-    push $P318, "U"
-    push $P318, "T"
-    push $P318, "S"
-    push $P318, "R"
-    push $P318, "Q"
-    push $P318, "P"
-    push $P318, "O"
-    push $P318, "N"
-    push $P318, "M"
-    push $P318, "L"
-    push $P318, "K"
-    push $P318, "J"
-    push $P318, "I"
-    push $P318, "H"
-    push $P318, "G"
-    push $P318, "F"
-    push $P318, "E"
-    push $P318, "D"
-    push $P318, "C"
-    push $P318, "B"
-    push $P318, "A"
-    push $P318, "z"
-    push $P318, "y"
-    push $P318, "x"
-    push $P318, "w"
-    push $P318, "v"
-    push $P318, "u"
-    push $P318, "t"
-    push $P318, "s"
-    push $P318, "r"
-    push $P318, "q"
-    push $P318, "p"
-    push $P318, "o"
-    push $P318, "n"
-    push $P318, "m"
-    push $P318, "l"
-    push $P318, "k"
-    push $P318, "j"
-    push $P318, "i"
-    push $P318, "h"
-    push $P318, "g"
-    push $P318, "f"
-    push $P318, "e"
-    push $P318, "d"
-    push $P318, "c"
-    push $P318, "b"
-    push $P318, "a"
-    push $P318, $P317
-    .return ($P318)
+    $P312 = self."!PREFIX__!subrule"("integer", "")
+    new $P313, "ResizablePMCArray"
+    push $P313, "Z"
+    push $P313, "Y"
+    push $P313, "X"
+    push $P313, "W"
+    push $P313, "V"
+    push $P313, "U"
+    push $P313, "T"
+    push $P313, "S"
+    push $P313, "R"
+    push $P313, "Q"
+    push $P313, "P"
+    push $P313, "O"
+    push $P313, "N"
+    push $P313, "M"
+    push $P313, "L"
+    push $P313, "K"
+    push $P313, "J"
+    push $P313, "I"
+    push $P313, "H"
+    push $P313, "G"
+    push $P313, "F"
+    push $P313, "E"
+    push $P313, "D"
+    push $P313, "C"
+    push $P313, "B"
+    push $P313, "A"
+    push $P313, "z"
+    push $P313, "y"
+    push $P313, "x"
+    push $P313, "w"
+    push $P313, "v"
+    push $P313, "u"
+    push $P313, "t"
+    push $P313, "s"
+    push $P313, "r"
+    push $P313, "q"
+    push $P313, "p"
+    push $P313, "o"
+    push $P313, "n"
+    push $P313, "m"
+    push $P313, "l"
+    push $P313, "k"
+    push $P313, "j"
+    push $P313, "i"
+    push $P313, "h"
+    push $P313, "g"
+    push $P313, "f"
+    push $P313, "e"
+    push $P313, "d"
+    push $P313, "c"
+    push $P313, "b"
+    push $P313, "a"
+    push $P313, $P312
+    .return ($P313)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block323"  :anon :subid("100_1271336377.56964") :method :outer("98_1271336377.56964")
-.annotate "line", 114
-    .local string rx325_tgt
-    .local int rx325_pos
-    .local int rx325_off
-    .local int rx325_eos
-    .local int rx325_rep
-    .local pmc rx325_cur
-    (rx325_cur, rx325_pos, rx325_tgt) = self."!cursor_start"()
-    rx325_cur."!cursor_debug"("START ", "")
-    .lex unicode:"$\x{a2}", rx325_cur
+.sub "_block318"  :anon :subid("98_1271948647.57035") :method :outer("96_1271948647.57035")
+.annotate "line", 113
+    .local string rx320_tgt
+    .local int rx320_pos
+    .local int rx320_off
+    .local int rx320_eos
+    .local int rx320_rep
+    .local pmc rx320_cur
+    (rx320_cur, rx320_pos, rx320_tgt) = self."!cursor_start"()
+    rx320_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx320_cur
     .local pmc match
     .lex "$/", match
-    length rx325_eos, rx325_tgt
-    set rx325_off, 0
-    lt rx325_pos, 2, rx325_start
-    sub rx325_off, rx325_pos, 1
-    substr rx325_tgt, rx325_tgt, rx325_off
-  rx325_start:
+    length rx320_eos, rx320_tgt
+    set rx320_off, 0
+    lt rx320_pos, 2, rx320_start
+    sub rx320_off, rx320_pos, 1
+    substr rx320_tgt, rx320_tgt, rx320_off
+  rx320_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan326_done
-    goto rxscan326_scan
-  rxscan326_loop:
-    ($P10) = rx325_cur."from"()
+    ne $I10, -1, rxscan321_done
+    goto rxscan321_scan
+  rxscan321_loop:
+    ($P10) = rx320_cur."from"()
     inc $P10
-    set rx325_pos, $P10
-    ge rx325_pos, rx325_eos, rxscan326_done
-  rxscan326_scan:
-    set_addr $I10, rxscan326_loop
-    rx325_cur."!mark_push"(0, rx325_pos, $I10)
-  rxscan326_done:
+    set rx320_pos, $P10
+    ge rx320_pos, rx320_eos, rxscan321_done
+  rxscan321_scan:
+    set_addr $I10, rxscan321_loop
+    rx320_cur."!mark_push"(0, rx320_pos, $I10)
+  rxscan321_done:
   # rx charclass_q s r 0..-1
-    sub $I10, rx325_pos, rx325_off
-    find_not_cclass $I11, 32, rx325_tgt, $I10, rx325_eos
-    add rx325_pos, rx325_off, $I11
+    sub $I10, rx320_pos, rx320_off
+    find_not_cclass $I11, 32, rx320_tgt, $I10, rx320_eos
+    add rx320_pos, rx320_off, $I11
   # rx enumcharlist negate=0 
-    ge rx325_pos, rx325_eos, rx325_fail
-    sub $I10, rx325_pos, rx325_off
-    substr $S10, rx325_tgt, $I10, 1
+    ge rx320_pos, rx320_eos, rx320_fail
+    sub $I10, rx320_pos, rx320_off
+    substr $S10, rx320_tgt, $I10, 1
     index $I11, "],#", $S10
-    lt $I11, 0, rx325_fail
-    inc rx325_pos
+    lt $I11, 0, rx320_fail
+    inc rx320_pos
   # rx pass
-    rx325_cur."!cursor_pass"(rx325_pos, "")
-    rx325_cur."!cursor_debug"("PASS  ", "", " at pos=", rx325_pos)
-    .return (rx325_cur)
-  rx325_fail:
-    (rx325_rep, rx325_pos, $I10, $P10) = rx325_cur."!mark_fail"(0)
-    lt rx325_pos, -1, rx325_done
-    eq rx325_pos, -1, rx325_fail
+    rx320_cur."!cursor_pass"(rx320_pos, "")
+    rx320_cur."!cursor_debug"("PASS  ", "", " at pos=", rx320_pos)
+    .return (rx320_cur)
+  rx320_fail:
+    (rx320_rep, rx320_pos, $I10, $P10) = rx320_cur."!mark_fail"(0)
+    lt rx320_pos, -1, rx320_done
+    eq rx320_pos, -1, rx320_fail
     jump $I10
-  rx325_done:
-    rx325_cur."!cursor_fail"()
-    rx325_cur."!cursor_debug"("FAIL  ", "")
-    .return (rx325_cur)
+  rx320_done:
+    rx320_cur."!cursor_fail"()
+    rx320_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx320_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charnames"  :subid("101_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "charnames"  :subid("99_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
-    .local string rx328_tgt
-    .local int rx328_pos
-    .local int rx328_off
-    .local int rx328_eos
-    .local int rx328_rep
-    .local pmc rx328_cur
-    (rx328_cur, rx328_pos, rx328_tgt) = self."!cursor_start"()
-    rx328_cur."!cursor_debug"("START ", "charnames")
-    rx328_cur."!cursor_caparray"("charname")
-    .lex unicode:"$\x{a2}", rx328_cur
+    .local string rx323_tgt
+    .local int rx323_pos
+    .local int rx323_off
+    .local int rx323_eos
+    .local int rx323_rep
+    .local pmc rx323_cur
+    (rx323_cur, rx323_pos, rx323_tgt) = self."!cursor_start"()
+    rx323_cur."!cursor_debug"("START ", "charnames")
+    rx323_cur."!cursor_caparray"("charname")
+    .lex unicode:"$\x{a2}", rx323_cur
     .local pmc match
     .lex "$/", match
-    length rx328_eos, rx328_tgt
-    set rx328_off, 0
-    lt rx328_pos, 2, rx328_start
-    sub rx328_off, rx328_pos, 1
-    substr rx328_tgt, rx328_tgt, rx328_off
-  rx328_start:
+    length rx323_eos, rx323_tgt
+    set rx323_off, 0
+    lt rx323_pos, 2, rx323_start
+    sub rx323_off, rx323_pos, 1
+    substr rx323_tgt, rx323_tgt, rx323_off
+  rx323_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan331_done
-    goto rxscan331_scan
-  rxscan331_loop:
-    ($P10) = rx328_cur."from"()
+    ne $I10, -1, rxscan326_done
+    goto rxscan326_scan
+  rxscan326_loop:
+    ($P10) = rx323_cur."from"()
     inc $P10
-    set rx328_pos, $P10
-    ge rx328_pos, rx328_eos, rxscan331_done
-  rxscan331_scan:
-    set_addr $I10, rxscan331_loop
-    rx328_cur."!mark_push"(0, rx328_pos, $I10)
-  rxscan331_done:
-.annotate "line", 116
-  # rx rxquantr332 ** 1..*
-    set_addr $I333, rxquantr332_done
-    rx328_cur."!mark_push"(0, -1, $I333)
-  rxquantr332_loop:
+    set rx323_pos, $P10
+    ge rx323_pos, rx323_eos, rxscan326_done
+  rxscan326_scan:
+    set_addr $I10, rxscan326_loop
+    rx323_cur."!mark_push"(0, rx323_pos, $I10)
+  rxscan326_done:
+.annotate "line", 115
+  # rx rxquantr327 ** 1..*
+    set_addr $I328, rxquantr327_done
+    rx323_cur."!mark_push"(0, -1, $I328)
+  rxquantr327_loop:
   # rx subrule "ws" subtype=method negate=
-    rx328_cur."!cursor_pos"(rx328_pos)
-    $P10 = rx328_cur."ws"()
-    unless $P10, rx328_fail
-    rx328_pos = $P10."pos"()
+    rx323_cur."!cursor_pos"(rx323_pos)
+    $P10 = rx323_cur."ws"()
+    unless $P10, rx323_fail
+    rx323_pos = $P10."pos"()
   # rx subrule "charname" subtype=capture negate=
-    rx328_cur."!cursor_pos"(rx328_pos)
-    $P10 = rx328_cur."charname"()
-    unless $P10, rx328_fail
-    rx328_cur."!mark_push"(0, -1, 0, $P10)
+    rx323_cur."!cursor_pos"(rx323_pos)
+    $P10 = rx323_cur."charname"()
+    unless $P10, rx323_fail
+    rx323_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("charname")
-    rx328_pos = $P10."pos"()
+    rx323_pos = $P10."pos"()
   # rx subrule "ws" subtype=method negate=
-    rx328_cur."!cursor_pos"(rx328_pos)
-    $P10 = rx328_cur."ws"()
-    unless $P10, rx328_fail
-    rx328_pos = $P10."pos"()
-    (rx328_rep) = rx328_cur."!mark_commit"($I333)
-    rx328_cur."!mark_push"(rx328_rep, rx328_pos, $I333)
+    rx323_cur."!cursor_pos"(rx323_pos)
+    $P10 = rx323_cur."ws"()
+    unless $P10, rx323_fail
+    rx323_pos = $P10."pos"()
+    (rx323_rep) = rx323_cur."!mark_commit"($I328)
+    rx323_cur."!mark_push"(rx323_rep, rx323_pos, $I328)
   # rx literal  ","
-    add $I11, rx328_pos, 1
-    gt $I11, rx328_eos, rx328_fail
-    sub $I11, rx328_pos, rx328_off
-    substr $S10, rx328_tgt, $I11, 1
-    ne $S10, ",", rx328_fail
-    add rx328_pos, 1
-    goto rxquantr332_loop
-  rxquantr332_done:
+    add $I11, rx323_pos, 1
+    gt $I11, rx323_eos, rx323_fail
+    sub $I11, rx323_pos, rx323_off
+    substr $S10, rx323_tgt, $I11, 1
+    ne $S10, ",", rx323_fail
+    add rx323_pos, 1
+    goto rxquantr327_loop
+  rxquantr327_done:
   # rx pass
-    rx328_cur."!cursor_pass"(rx328_pos, "charnames")
-    rx328_cur."!cursor_debug"("PASS  ", "charnames", " at pos=", rx328_pos)
-    .return (rx328_cur)
-  rx328_fail:
-.annotate "line", 33
-    (rx328_rep, rx328_pos, $I10, $P10) = rx328_cur."!mark_fail"(0)
-    lt rx328_pos, -1, rx328_done
-    eq rx328_pos, -1, rx328_fail
+    rx323_cur."!cursor_pass"(rx323_pos, "charnames")
+    rx323_cur."!cursor_debug"("PASS  ", "charnames", " at pos=", rx323_pos)
+    .return (rx323_cur)
+  rx323_fail:
+.annotate "line", 33
+    (rx323_rep, rx323_pos, $I10, $P10) = rx323_cur."!mark_fail"(0)
+    lt rx323_pos, -1, rx323_done
+    eq rx323_pos, -1, rx323_fail
     jump $I10
-  rx328_done:
-    rx328_cur."!cursor_fail"()
-    rx328_cur."!cursor_debug"("FAIL  ", "charnames")
-    .return (rx328_cur)
+  rx323_done:
+    rx323_cur."!cursor_fail"()
+    rx323_cur."!cursor_debug"("FAIL  ", "charnames")
+    .return (rx323_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charnames"  :subid("102_1271336377.56964") :method
+.sub "!PREFIX__charnames"  :subid("100_1271948647.57035") :method
 .annotate "line", 33
-    new $P330, "ResizablePMCArray"
-    push $P330, ""
-    .return ($P330)
+    new $P325, "ResizablePMCArray"
+    push $P325, ""
+    .return ($P325)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charspec"  :subid("103_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "charspec"  :subid("101_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
-    .local string rx335_tgt
-    .local int rx335_pos
-    .local int rx335_off
-    .local int rx335_eos
-    .local int rx335_rep
-    .local pmc rx335_cur
-    (rx335_cur, rx335_pos, rx335_tgt) = self."!cursor_start"()
-    rx335_cur."!cursor_debug"("START ", "charspec")
-    .lex unicode:"$\x{a2}", rx335_cur
+    .local string rx330_tgt
+    .local int rx330_pos
+    .local int rx330_off
+    .local int rx330_eos
+    .local int rx330_rep
+    .local pmc rx330_cur
+    (rx330_cur, rx330_pos, rx330_tgt) = self."!cursor_start"()
+    rx330_cur."!cursor_debug"("START ", "charspec")
+    .lex unicode:"$\x{a2}", rx330_cur
     .local pmc match
     .lex "$/", match
-    length rx335_eos, rx335_tgt
-    set rx335_off, 0
-    lt rx335_pos, 2, rx335_start
-    sub rx335_off, rx335_pos, 1
-    substr rx335_tgt, rx335_tgt, rx335_off
-  rx335_start:
+    length rx330_eos, rx330_tgt
+    set rx330_off, 0
+    lt rx330_pos, 2, rx330_start
+    sub rx330_off, rx330_pos, 1
+    substr rx330_tgt, rx330_tgt, rx330_off
+  rx330_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan340_done
-    goto rxscan340_scan
-  rxscan340_loop:
-    ($P10) = rx335_cur."from"()
+    ne $I10, -1, rxscan335_done
+    goto rxscan335_scan
+  rxscan335_loop:
+    ($P10) = rx330_cur."from"()
     inc $P10
-    set rx335_pos, $P10
-    ge rx335_pos, rx335_eos, rxscan340_done
-  rxscan340_scan:
-    set_addr $I10, rxscan340_loop
-    rx335_cur."!mark_push"(0, rx335_pos, $I10)
-  rxscan340_done:
-  alt341_0:
+    set rx330_pos, $P10
+    ge rx330_pos, rx330_eos, rxscan335_done
+  rxscan335_scan:
+    set_addr $I10, rxscan335_loop
+    rx330_cur."!mark_push"(0, rx330_pos, $I10)
+  rxscan335_done:
+  alt336_0:
+.annotate "line", 117
+    set_addr $I10, alt336_1
+    rx330_cur."!mark_push"(0, rx330_pos, $I10)
 .annotate "line", 118
-    set_addr $I10, alt341_1
-    rx335_cur."!mark_push"(0, rx335_pos, $I10)
-.annotate "line", 119
   # rx literal  "["
-    add $I11, rx335_pos, 1
-    gt $I11, rx335_eos, rx335_fail
-    sub $I11, rx335_pos, rx335_off
-    substr $S10, rx335_tgt, $I11, 1
-    ne $S10, "[", rx335_fail
-    add rx335_pos, 1
+    add $I11, rx330_pos, 1
+    gt $I11, rx330_eos, rx330_fail
+    sub $I11, rx330_pos, rx330_off
+    substr $S10, rx330_tgt, $I11, 1
+    ne $S10, "[", rx330_fail
+    add rx330_pos, 1
   # rx subrule "charnames" subtype=capture negate=
-    rx335_cur."!cursor_pos"(rx335_pos)
-    $P10 = rx335_cur."charnames"()
-    unless $P10, rx335_fail
-    rx335_cur."!mark_push"(0, -1, 0, $P10)
+    rx330_cur."!cursor_pos"(rx330_pos)
+    $P10 = rx330_cur."charnames"()
+    unless $P10, rx330_fail
+    rx330_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("charnames")
-    rx335_pos = $P10."pos"()
+    rx330_pos = $P10."pos"()
   # rx literal  "]"
-    add $I11, rx335_pos, 1
-    gt $I11, rx335_eos, rx335_fail
-    sub $I11, rx335_pos, rx335_off
-    substr $S10, rx335_tgt, $I11, 1
-    ne $S10, "]", rx335_fail
-    add rx335_pos, 1
-    goto alt341_end
-  alt341_1:
-    set_addr $I10, alt341_2
-    rx335_cur."!mark_push"(0, rx335_pos, $I10)
-.annotate "line", 120
+    add $I11, rx330_pos, 1
+    gt $I11, rx330_eos, rx330_fail
+    sub $I11, rx330_pos, rx330_off
+    substr $S10, rx330_tgt, $I11, 1
+    ne $S10, "]", rx330_fail
+    add rx330_pos, 1
+    goto alt336_end
+  alt336_1:
+    set_addr $I10, alt336_2
+    rx330_cur."!mark_push"(0, rx330_pos, $I10)
+.annotate "line", 119
   # rx charclass_q d r 1..-1
-    sub $I10, rx335_pos, rx335_off
-    find_not_cclass $I11, 8, rx335_tgt, $I10, rx335_eos
+    sub $I10, rx330_pos, rx330_off
+    find_not_cclass $I11, 8, rx330_tgt, $I10, rx330_eos
     add $I12, $I10, 1
-    lt $I11, $I12, rx335_fail
-    add rx335_pos, rx335_off, $I11
-  # rx rxquantr342 ** 0..*
-    set_addr $I343, rxquantr342_done
-    rx335_cur."!mark_push"(0, rx335_pos, $I343)
-  rxquantr342_loop:
+    lt $I11, $I12, rx330_fail
+    add rx330_pos, rx330_off, $I11
+  # rx rxquantr337 ** 0..*
+    set_addr $I338, rxquantr337_done
+    rx330_cur."!mark_push"(0, rx330_pos, $I338)
+  rxquantr337_loop:
   # rx literal  "_"
-    add $I11, rx335_pos, 1
-    gt $I11, rx335_eos, rx335_fail
-    sub $I11, rx335_pos, rx335_off
-    substr $S10, rx335_tgt, $I11, 1
-    ne $S10, "_", rx335_fail
-    add rx335_pos, 1
+    add $I11, rx330_pos, 1
+    gt $I11, rx330_eos, rx330_fail
+    sub $I11, rx330_pos, rx330_off
+    substr $S10, rx330_tgt, $I11, 1
+    ne $S10, "_", rx330_fail
+    add rx330_pos, 1
   # rx charclass_q d r 1..-1
-    sub $I10, rx335_pos, rx335_off
-    find_not_cclass $I11, 8, rx335_tgt, $I10, rx335_eos
+    sub $I10, rx330_pos, rx330_off
+    find_not_cclass $I11, 8, rx330_tgt, $I10, rx330_eos
     add $I12, $I10, 1
-    lt $I11, $I12, rx335_fail
-    add rx335_pos, rx335_off, $I11
-    (rx335_rep) = rx335_cur."!mark_commit"($I343)
-    rx335_cur."!mark_push"(rx335_rep, rx335_pos, $I343)
-    goto rxquantr342_loop
-  rxquantr342_done:
-    goto alt341_end
-  alt341_2:
-    set_addr $I10, alt341_3
-    rx335_cur."!mark_push"(0, rx335_pos, $I10)
-.annotate "line", 121
+    lt $I11, $I12, rx330_fail
+    add rx330_pos, rx330_off, $I11
+    (rx330_rep) = rx330_cur."!mark_commit"($I338)
+    rx330_cur."!mark_push"(rx330_rep, rx330_pos, $I338)
+    goto rxquantr337_loop
+  rxquantr337_done:
+    goto alt336_end
+  alt336_2:
+    set_addr $I10, alt336_3
+    rx330_cur."!mark_push"(0, rx330_pos, $I10)
+.annotate "line", 120
   # rx enumcharlist negate=0 
-    ge rx335_pos, rx335_eos, rx335_fail
-    sub $I10, rx335_pos, rx335_off
-    substr $S10, rx335_tgt, $I10, 1
+    ge rx330_pos, rx330_eos, rx330_fail
+    sub $I10, rx330_pos, rx330_off
+    substr $S10, rx330_tgt, $I10, 1
     index $I11, "?@ABCDEFGHIJKLMNOPQRSTUVWXYZ", $S10
-    lt $I11, 0, rx335_fail
-    inc rx335_pos
-    goto alt341_end
-  alt341_3:
-.annotate "line", 122
+    lt $I11, 0, rx330_fail
+    inc rx330_pos
+    goto alt336_end
+  alt336_3:
+.annotate "line", 121
   # rx subrule "panic" subtype=method negate=
-    rx335_cur."!cursor_pos"(rx335_pos)
-    $P10 = rx335_cur."panic"("Unrecognized \\c character")
-    unless $P10, rx335_fail
-    rx335_pos = $P10."pos"()
-  alt341_end:
-.annotate "line", 117
+    rx330_cur."!cursor_pos"(rx330_pos)
+    $P10 = rx330_cur."panic"("Unrecognized \\c character")
+    unless $P10, rx330_fail
+    rx330_pos = $P10."pos"()
+  alt336_end:
+.annotate "line", 116
   # rx pass
-    rx335_cur."!cursor_pass"(rx335_pos, "charspec")
-    rx335_cur."!cursor_debug"("PASS  ", "charspec", " at pos=", rx335_pos)
-    .return (rx335_cur)
-  rx335_fail:
-.annotate "line", 33
-    (rx335_rep, rx335_pos, $I10, $P10) = rx335_cur."!mark_fail"(0)
-    lt rx335_pos, -1, rx335_done
-    eq rx335_pos, -1, rx335_fail
+    rx330_cur."!cursor_pass"(rx330_pos, "charspec")
+    rx330_cur."!cursor_debug"("PASS  ", "charspec", " at pos=", rx330_pos)
+    .return (rx330_cur)
+  rx330_fail:
+.annotate "line", 33
+    (rx330_rep, rx330_pos, $I10, $P10) = rx330_cur."!mark_fail"(0)
+    lt rx330_pos, -1, rx330_done
+    eq rx330_pos, -1, rx330_fail
     jump $I10
-  rx335_done:
-    rx335_cur."!cursor_fail"()
-    rx335_cur."!cursor_debug"("FAIL  ", "charspec")
-    .return (rx335_cur)
+  rx330_done:
+    rx330_cur."!cursor_fail"()
+    rx330_cur."!cursor_debug"("FAIL  ", "charspec")
+    .return (rx330_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charspec"  :subid("104_1271336377.56964") :method
+.sub "!PREFIX__charspec"  :subid("102_1271948647.57035") :method
 .annotate "line", 33
-    $P337 = self."!PREFIX__!subrule"("", "")
-    $P338 = self."!PREFIX__!subrule"("charnames", "[")
-    new $P339, "ResizablePMCArray"
-    push $P339, $P337
-    push $P339, "Z"
-    push $P339, "Y"
-    push $P339, "X"
-    push $P339, "W"
-    push $P339, "V"
-    push $P339, "U"
-    push $P339, "T"
-    push $P339, "S"
-    push $P339, "R"
-    push $P339, "Q"
-    push $P339, "P"
-    push $P339, "O"
-    push $P339, "N"
-    push $P339, "M"
-    push $P339, "L"
-    push $P339, "K"
-    push $P339, "J"
-    push $P339, "I"
-    push $P339, "H"
-    push $P339, "G"
-    push $P339, "F"
-    push $P339, "E"
-    push $P339, "D"
-    push $P339, "C"
-    push $P339, "B"
-    push $P339, "A"
-    push $P339, "@"
-    push $P339, "?"
-    push $P339, ""
-    push $P339, $P338
-    .return ($P339)
+    $P332 = self."!PREFIX__!subrule"("", "")
+    $P333 = self."!PREFIX__!subrule"("charnames", "[")
+    new $P334, "ResizablePMCArray"
+    push $P334, $P332
+    push $P334, "Z"
+    push $P334, "Y"
+    push $P334, "X"
+    push $P334, "W"
+    push $P334, "V"
+    push $P334, "U"
+    push $P334, "T"
+    push $P334, "S"
+    push $P334, "R"
+    push $P334, "Q"
+    push $P334, "P"
+    push $P334, "O"
+    push $P334, "N"
+    push $P334, "M"
+    push $P334, "L"
+    push $P334, "K"
+    push $P334, "J"
+    push $P334, "I"
+    push $P334, "H"
+    push $P334, "G"
+    push $P334, "F"
+    push $P334, "E"
+    push $P334, "D"
+    push $P334, "C"
+    push $P334, "B"
+    push $P334, "A"
+    push $P334, "@"
+    push $P334, "?"
+    push $P334, ""
+    push $P334, $P333
+    .return ($P334)
 .end
 
 ### .include 'gen/hllgrammar-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271336380.06238")
+.sub "_block11"  :anon :subid("10_1271948650.1622")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Actions"], "_block13" 
     capture_lex $P14
 .annotate "line", 3
     get_hll_global $P14, ["HLL";"Actions"], "_block13" 
     capture_lex $P14
-    $P578 = $P14()
+    $P571 = $P14()
 .annotate "line", 1
-    .return ($P578)
+    .return ($P571)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post50") :outer("10_1271336380.06238")
+.sub "" :load :init :subid("post49") :outer("10_1271948650.1622")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271336380.06238" 
+    .const 'Sub' $P12 = "10_1271948650.1622" 
     .local pmc block
     set block, $P12
-    $P579 = get_root_global ["parrot"], "P6metaclass"
-    $P579."new_class"("HLL::Actions")
+    $P572 = get_root_global ["parrot"], "P6metaclass"
+    $P572."new_class"("HLL::Actions")
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block13"  :subid("11_1271336380.06238") :outer("10_1271336380.06238")
+.sub "_block13"  :subid("11_1271948650.1622") :outer("10_1271948650.1622")
 .annotate "line", 3
-    .const 'Sub' $P561 = "49_1271336380.06238" 
-    capture_lex $P561
-    .const 'Sub' $P536 = "47_1271336380.06238" 
-    capture_lex $P536
-    .const 'Sub' $P505 = "46_1271336380.06238" 
-    capture_lex $P505
-    .const 'Sub' $P486 = "45_1271336380.06238" 
-    capture_lex $P486
-    .const 'Sub' $P479 = "44_1271336380.06238" 
+    .const 'Sub' $P554 = "48_1271948650.1622" 
+    capture_lex $P554
+    .const 'Sub' $P529 = "46_1271948650.1622" 
+    capture_lex $P529
+    .const 'Sub' $P498 = "45_1271948650.1622" 
+    capture_lex $P498
+    .const 'Sub' $P479 = "44_1271948650.1622" 
     capture_lex $P479
-    .const 'Sub' $P469 = "43_1271336380.06238" 
-    capture_lex $P469
-    .const 'Sub' $P452 = "42_1271336380.06238" 
-    capture_lex $P452
-    .const 'Sub' $P435 = "41_1271336380.06238" 
-    capture_lex $P435
-    .const 'Sub' $P428 = "40_1271336380.06238" 
+    .const 'Sub' $P472 = "43_1271948650.1622" 
+    capture_lex $P472
+    .const 'Sub' $P462 = "42_1271948650.1622" 
+    capture_lex $P462
+    .const 'Sub' $P445 = "41_1271948650.1622" 
+    capture_lex $P445
+    .const 'Sub' $P428 = "40_1271948650.1622" 
     capture_lex $P428
-    .const 'Sub' $P421 = "39_1271336380.06238" 
+    .const 'Sub' $P421 = "39_1271948650.1622" 
     capture_lex $P421
-    .const 'Sub' $P414 = "38_1271336380.06238" 
+    .const 'Sub' $P414 = "38_1271948650.1622" 
     capture_lex $P414
-    .const 'Sub' $P407 = "37_1271336380.06238" 
+    .const 'Sub' $P407 = "37_1271948650.1622" 
     capture_lex $P407
-    .const 'Sub' $P400 = "36_1271336380.06238" 
+    .const 'Sub' $P400 = "36_1271948650.1622" 
     capture_lex $P400
-    .const 'Sub' $P393 = "35_1271336380.06238" 
+    .const 'Sub' $P393 = "35_1271948650.1622" 
     capture_lex $P393
-    .const 'Sub' $P383 = "34_1271336380.06238" 
+    .const 'Sub' $P383 = "34_1271948650.1622" 
     capture_lex $P383
-    .const 'Sub' $P376 = "33_1271336380.06238" 
+    .const 'Sub' $P376 = "33_1271948650.1622" 
     capture_lex $P376
-    .const 'Sub' $P360 = "32_1271336380.06238" 
+    .const 'Sub' $P360 = "32_1271948650.1622" 
     capture_lex $P360
-    .const 'Sub' $P285 = "30_1271336380.06238" 
+    .const 'Sub' $P285 = "30_1271948650.1622" 
     capture_lex $P285
-    .const 'Sub' $P222 = "27_1271336380.06238" 
+    .const 'Sub' $P222 = "27_1271948650.1622" 
     capture_lex $P222
-    .const 'Sub' $P213 = "26_1271336380.06238" 
+    .const 'Sub' $P213 = "26_1271948650.1622" 
     capture_lex $P213
-    .const 'Sub' $P204 = "25_1271336380.06238" 
+    .const 'Sub' $P204 = "25_1271948650.1622" 
     capture_lex $P204
-    .const 'Sub' $P195 = "24_1271336380.06238" 
+    .const 'Sub' $P195 = "24_1271948650.1622" 
     capture_lex $P195
-    .const 'Sub' $P186 = "23_1271336380.06238" 
+    .const 'Sub' $P186 = "23_1271948650.1622" 
     capture_lex $P186
-    .const 'Sub' $P177 = "22_1271336380.06238" 
+    .const 'Sub' $P177 = "22_1271948650.1622" 
     capture_lex $P177
-    .const 'Sub' $P167 = "21_1271336380.06238" 
+    .const 'Sub' $P167 = "21_1271948650.1622" 
     capture_lex $P167
-    .const 'Sub' $P157 = "20_1271336380.06238" 
+    .const 'Sub' $P157 = "20_1271948650.1622" 
     capture_lex $P157
-    .const 'Sub' $P149 = "19_1271336380.06238" 
+    .const 'Sub' $P149 = "19_1271948650.1622" 
     capture_lex $P149
-    .const 'Sub' $P139 = "18_1271336380.06238" 
+    .const 'Sub' $P139 = "18_1271948650.1622" 
     capture_lex $P139
-    .const 'Sub' $P129 = "17_1271336380.06238" 
+    .const 'Sub' $P129 = "17_1271948650.1622" 
     capture_lex $P129
-    .const 'Sub' $P28 = "14_1271336380.06238" 
+    .const 'Sub' $P28 = "14_1271948650.1622" 
     capture_lex $P28
-    .const 'Sub' $P22 = "13_1271336380.06238" 
+    .const 'Sub' $P22 = "13_1271948650.1622" 
     capture_lex $P22
-    .const 'Sub' $P15 = "12_1271336380.06238" 
+    .const 'Sub' $P15 = "12_1271948650.1622" 
     capture_lex $P15
-.annotate "line", 198
-    .const 'Sub' $P561 = "49_1271336380.06238" 
-    capture_lex $P561
+.annotate "line", 197
+    .const 'Sub' $P554 = "48_1271948650.1622" 
+    capture_lex $P554
 .annotate "line", 3
-    .return ($P561)
+    .return ($P554)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "string_to_int"  :subid("12_1271336380.06238") :outer("11_1271336380.06238")
+.sub "string_to_int"  :subid("12_1271948650.1622") :outer("11_1271948650.1622")
     .param pmc param_18
     .param pmc param_19
 .annotate "line", 3
@@ -4927,7 +4852,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "ints_to_string"  :subid("13_1271336380.06238") :outer("11_1271336380.06238")
+.sub "ints_to_string"  :subid("13_1271948650.1622") :outer("11_1271948650.1622")
     .param pmc param_25
 .annotate "line", 37
     new $P24, 'ExceptionHandler'
@@ -4968,14 +4893,14 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "EXPR"  :subid("14_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "EXPR"  :subid("14_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_31
     .param pmc param_32 :optional
     .param int has_param_32 :opt_flag
 .annotate "line", 62
-    .const 'Sub' $P111 = "16_1271336380.06238" 
+    .const 'Sub' $P111 = "16_1271948650.1622" 
     capture_lex $P111
-    .const 'Sub' $P78 = "15_1271336380.06238" 
+    .const 'Sub' $P78 = "15_1271948650.1622" 
     capture_lex $P78
     new $P30, 'ExceptionHandler'
     set_addr $P30, control_29
@@ -4983,10 +4908,10 @@
     push_eh $P30
     .lex "self", self
     .lex "$/", param_31
-    if has_param_32, optparam_51
+    if has_param_32, optparam_50
     new $P33, "Undef"
     set param_32, $P33
-  optparam_51:
+  optparam_50:
     .lex "$key", param_32
 .annotate "line", 64
     new $P34, "Undef"
@@ -5008,13 +4933,13 @@
     defined $I43, $P39
     if $I43, default_42
     find_lex $P44, "$/"
-    unless_null $P44, vivify_52
+    unless_null $P44, vivify_51
     $P44 = root_new ['parrot';'Hash']
-  vivify_52:
+  vivify_51:
     set $P45, $P44["OPER"]
-    unless_null $P45, vivify_53
+    unless_null $P45, vivify_52
     new $P45, "Undef"
-  vivify_53:
+  vivify_52:
     $P46 = $P45."ast"()
     set $P39, $P46
   default_42:
@@ -5029,57 +4954,57 @@
     store_lex "$past", $P51
 .annotate "line", 67
     find_lex $P53, "$/"
-    unless_null $P53, vivify_54
+    unless_null $P53, vivify_53
     $P53 = root_new ['parrot';'Hash']
-  vivify_54:
+  vivify_53:
     set $P54, $P53["OPER"]
-    unless_null $P54, vivify_55
+    unless_null $P54, vivify_54
     $P54 = root_new ['parrot';'Hash']
-  vivify_55:
+  vivify_54:
     set $P55, $P54["O"]
-    unless_null $P55, vivify_56
+    unless_null $P55, vivify_55
     $P55 = root_new ['parrot';'Hash']
-  vivify_56:
+  vivify_55:
     set $P56, $P55["pasttype"]
-    unless_null $P56, vivify_57
+    unless_null $P56, vivify_56
     new $P56, "Undef"
-  vivify_57:
+  vivify_56:
     if $P56, if_52
 .annotate "line", 68
     find_lex $P64, "$/"
-    unless_null $P64, vivify_58
+    unless_null $P64, vivify_57
     $P64 = root_new ['parrot';'Hash']
-  vivify_58:
+  vivify_57:
     set $P65, $P64["OPER"]
-    unless_null $P65, vivify_59
+    unless_null $P65, vivify_58
     $P65 = root_new ['parrot';'Hash']
-  vivify_59:
+  vivify_58:
     set $P66, $P65["O"]
-    unless_null $P66, vivify_60
+    unless_null $P66, vivify_59
     $P66 = root_new ['parrot';'Hash']
-  vivify_60:
+  vivify_59:
     set $P67, $P66["pirop"]
-    unless_null $P67, vivify_61
+    unless_null $P67, vivify_60
     new $P67, "Undef"
-  vivify_61:
+  vivify_60:
     unless $P67, if_63_end
     find_lex $P68, "$past"
     find_lex $P69, "$/"
-    unless_null $P69, vivify_62
+    unless_null $P69, vivify_61
     $P69 = root_new ['parrot';'Hash']
-  vivify_62:
+  vivify_61:
     set $P70, $P69["OPER"]
-    unless_null $P70, vivify_63
+    unless_null $P70, vivify_62
     $P70 = root_new ['parrot';'Hash']
-  vivify_63:
+  vivify_62:
     set $P71, $P70["O"]
-    unless_null $P71, vivify_64
+    unless_null $P71, vivify_63
     $P71 = root_new ['parrot';'Hash']
-  vivify_64:
+  vivify_63:
     set $P72, $P71["pirop"]
-    unless_null $P72, vivify_65
+    unless_null $P72, vivify_64
     new $P72, "Undef"
-  vivify_65:
+  vivify_64:
     set $S73, $P72
     $P68."pirop"($S73)
   if_63_end:
@@ -5088,21 +5013,21 @@
 .annotate "line", 67
     find_lex $P57, "$past"
     find_lex $P58, "$/"
-    unless_null $P58, vivify_66
+    unless_null $P58, vivify_65
     $P58 = root_new ['parrot';'Hash']
-  vivify_66:
+  vivify_65:
     set $P59, $P58["OPER"]
-    unless_null $P59, vivify_67
+    unless_null $P59, vivify_66
     $P59 = root_new ['parrot';'Hash']
-  vivify_67:
+  vivify_66:
     set $P60, $P59["O"]
-    unless_null $P60, vivify_68
+    unless_null $P60, vivify_67
     $P60 = root_new ['parrot';'Hash']
-  vivify_68:
+  vivify_67:
     set $P61, $P60["pasttype"]
-    unless_null $P61, vivify_69
+    unless_null $P61, vivify_68
     new $P61, "Undef"
-  vivify_69:
+  vivify_68:
     set $S62, $P61
     $P57."pasttype"($S62)
   if_52_end:
@@ -5110,7 +5035,7 @@
     find_lex $P75, "$past"
     $P76 = $P75."name"()
     if $P76, unless_74_end
-    .const 'Sub' $P78 = "15_1271336380.06238" 
+    .const 'Sub' $P78 = "15_1271948650.1622" 
     capture_lex $P78
     $P78()
   unless_74_end:
@@ -5124,7 +5049,7 @@
     find_lex $P106, "$/"
     $P107 = $P106."list"()
     defined $I108, $P107
-    unless $I108, for_undef_73
+    unless $I108, for_undef_72
     iter $P105, $P107
     new $P123, 'ExceptionHandler'
     set_addr $P123, loop122_handler
@@ -5134,7 +5059,7 @@
     unless $P105, loop122_done
     shift $P109, $P105
   loop122_redo:
-    .const 'Sub' $P111 = "16_1271336380.06238" 
+    .const 'Sub' $P111 = "16_1271948650.1622" 
     capture_lex $P111
     $P111($P109)
   loop122_next:
@@ -5147,20 +5072,20 @@
     eq $P124, 67, loop122_redo
   loop122_done:
     pop_eh 
-  for_undef_73:
+  for_undef_72:
 .annotate "line", 81
     goto if_97_end
   if_97:
 .annotate "line", 80
     find_lex $P101, "$past"
     find_lex $P102, "$/"
-    unless_null $P102, vivify_74
+    unless_null $P102, vivify_73
     $P102 = root_new ['parrot';'ResizablePMCArray']
-  vivify_74:
+  vivify_73:
     set $P103, $P102[0]
-    unless_null $P103, vivify_75
+    unless_null $P103, vivify_74
     new $P103, "Undef"
-  vivify_75:
+  vivify_74:
     $P104 = $P103."ast"()
     $P101."unshift"($P104)
   if_97_end:
@@ -5179,7 +5104,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block77"  :anon :subid("15_1271336380.06238") :outer("14_1271336380.06238")
+.sub "_block77"  :anon :subid("15_1271948650.1622") :outer("14_1271948650.1622")
 .annotate "line", 71
     new $P79, "Undef"
     .lex "$name", $P79
@@ -5202,17 +5127,17 @@
     concat $P86, $P85, ":<"
 .annotate "line", 76
     find_lex $P87, "$/"
-    unless_null $P87, vivify_70
+    unless_null $P87, vivify_69
     $P87 = root_new ['parrot';'Hash']
-  vivify_70:
+  vivify_69:
     set $P88, $P87["OPER"]
-    unless_null $P88, vivify_71
+    unless_null $P88, vivify_70
     $P88 = root_new ['parrot';'Hash']
-  vivify_71:
+  vivify_70:
     set $P89, $P88["sym"]
-    unless_null $P89, vivify_72
+    unless_null $P89, vivify_71
     new $P89, "Undef"
-  vivify_72:
+  vivify_71:
     concat $P90, $P86, $P89
     concat $P91, $P90, ">"
     store_lex "$name", $P91
@@ -5229,7 +5154,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block110"  :anon :subid("16_1271336380.06238") :outer("14_1271336380.06238")
+.sub "_block110"  :anon :subid("16_1271948650.1622") :outer("14_1271948650.1622")
     .param pmc param_112
 .annotate "line", 82
     .lex "$_", param_112
@@ -5252,7 +5177,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "term:sym<circumfix>"  :subid("17_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "term:sym<circumfix>"  :subid("17_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_132
 .annotate "line", 87
     new $P131, 'ExceptionHandler'
@@ -5263,13 +5188,13 @@
     .lex "$/", param_132
     find_lex $P133, "$/"
     find_lex $P134, "$/"
-    unless_null $P134, vivify_76
+    unless_null $P134, vivify_75
     $P134 = root_new ['parrot';'Hash']
-  vivify_76:
+  vivify_75:
     set $P135, $P134["circumfix"]
-    unless_null $P135, vivify_77
+    unless_null $P135, vivify_76
     new $P135, "Undef"
-  vivify_77:
+  vivify_76:
     $P136 = $P135."ast"()
     $P137 = $P133."!make"($P136)
     .return ($P137)
@@ -5282,7 +5207,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "termish"  :subid("18_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "termish"  :subid("18_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_142
 .annotate "line", 89
     new $P141, 'ExceptionHandler'
@@ -5293,13 +5218,13 @@
     .lex "$/", param_142
     find_lex $P143, "$/"
     find_lex $P144, "$/"
-    unless_null $P144, vivify_78
+    unless_null $P144, vivify_77
     $P144 = root_new ['parrot';'Hash']
-  vivify_78:
+  vivify_77:
     set $P145, $P144["term"]
-    unless_null $P145, vivify_79
+    unless_null $P145, vivify_78
     new $P145, "Undef"
-  vivify_79:
+  vivify_78:
     $P146 = $P145."ast"()
     $P147 = $P143."!make"($P146)
     .return ($P147)
@@ -5312,7 +5237,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm"  :subid("19_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "nullterm"  :subid("19_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_152
 .annotate "line", 90
     new $P151, 'ExceptionHandler'
@@ -5334,7 +5259,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm_alt"  :subid("20_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "nullterm_alt"  :subid("20_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_160
 .annotate "line", 91
     new $P159, 'ExceptionHandler'
@@ -5345,13 +5270,13 @@
     .lex "$/", param_160
     find_lex $P161, "$/"
     find_lex $P162, "$/"
-    unless_null $P162, vivify_80
+    unless_null $P162, vivify_79
     $P162 = root_new ['parrot';'Hash']
-  vivify_80:
+  vivify_79:
     set $P163, $P162["term"]
-    unless_null $P163, vivify_81
+    unless_null $P163, vivify_80
     new $P163, "Undef"
-  vivify_81:
+  vivify_80:
     $P164 = $P163."ast"()
     $P165 = $P161."!make"($P164)
     .return ($P165)
@@ -5364,7 +5289,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "integer"  :subid("21_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "integer"  :subid("21_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_170
 .annotate "line", 93
     new $P169, 'ExceptionHandler'
@@ -5375,13 +5300,13 @@
     .lex "$/", param_170
     find_lex $P171, "$/"
     find_lex $P172, "$/"
-    unless_null $P172, vivify_82
+    unless_null $P172, vivify_81
     $P172 = root_new ['parrot';'Hash']
-  vivify_82:
+  vivify_81:
     set $P173, $P172["VALUE"]
-    unless_null $P173, vivify_83
+    unless_null $P173, vivify_82
     new $P173, "Undef"
-  vivify_83:
+  vivify_82:
     $P174 = $P173."ast"()
     $P175 = $P171."!make"($P174)
     .return ($P175)
@@ -5394,7 +5319,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "dec_number"  :subid("22_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "dec_number"  :subid("22_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_180
 .annotate "line", 95
     new $P179, 'ExceptionHandler'
@@ -5417,7 +5342,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "decint"  :subid("23_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "decint"  :subid("23_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_189
 .annotate "line", 97
     new $P188, 'ExceptionHandler'
@@ -5440,7 +5365,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "hexint"  :subid("24_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "hexint"  :subid("24_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_198
 .annotate "line", 98
     new $P197, 'ExceptionHandler'
@@ -5463,7 +5388,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "octint"  :subid("25_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "octint"  :subid("25_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_207
 .annotate "line", 99
     new $P206, 'ExceptionHandler'
@@ -5486,7 +5411,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "binint"  :subid("26_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "binint"  :subid("26_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_216
 .annotate "line", 100
     new $P215, 'ExceptionHandler'
@@ -5509,10 +5434,10 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_EXPR"  :subid("27_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_EXPR"  :subid("27_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_225
 .annotate "line", 102
-    .const 'Sub' $P241 = "28_1271336380.06238" 
+    .const 'Sub' $P241 = "28_1271948650.1622" 
     capture_lex $P241
     new $P224, 'ExceptionHandler'
     set_addr $P224, control_223
@@ -5524,13 +5449,13 @@
     new $P226, "Undef"
     .lex "$past", $P226
     find_lex $P227, "$/"
-    unless_null $P227, vivify_84
+    unless_null $P227, vivify_83
     $P227 = root_new ['parrot';'Hash']
-  vivify_84:
+  vivify_83:
     set $P228, $P227["quote_delimited"]
-    unless_null $P228, vivify_85
+    unless_null $P228, vivify_84
     new $P228, "Undef"
-  vivify_85:
+  vivify_84:
     $P229 = $P228."ast"()
     store_lex "$past", $P229
 .annotate "line", 104
@@ -5544,7 +5469,7 @@
     $P237 = $P235."ACCEPTS"($P236)
     if $P237, if_234
 .annotate "line", 108
-    .const 'Sub' $P241 = "28_1271336380.06238" 
+    .const 'Sub' $P241 = "28_1271948650.1622" 
     capture_lex $P241
     $P241()
     goto if_234_end
@@ -5583,9 +5508,9 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block240"  :anon :subid("28_1271336380.06238") :outer("27_1271336380.06238")
+.sub "_block240"  :anon :subid("28_1271948650.1622") :outer("27_1271948650.1622")
 .annotate "line", 108
-    .const 'Sub' $P260 = "29_1271336380.06238" 
+    .const 'Sub' $P260 = "29_1271948650.1622" 
     capture_lex $P260
 .annotate "line", 109
     $P242 = root_new ['parrot';'ResizablePMCArray']
@@ -5602,13 +5527,13 @@
     if $I251, if_248
 .annotate "line", 115
     find_lex $P268, "@words"
-    unless_null $P268, vivify_86
+    unless_null $P268, vivify_85
     $P268 = root_new ['parrot';'ResizablePMCArray']
-  vivify_86:
+  vivify_85:
     set $P269, $P268[0]
-    unless_null $P269, vivify_87
+    unless_null $P269, vivify_86
     new $P269, "Undef"
-  vivify_87:
+  vivify_86:
     set $S270, $P269
     new $P271, 'String'
     set $P271, $S270
@@ -5626,7 +5551,7 @@
 .annotate "line", 112
     find_lex $P256, "@words"
     defined $I257, $P256
-    unless $I257, for_undef_88
+    unless $I257, for_undef_87
     iter $P255, $P256
     new $P266, 'ExceptionHandler'
     set_addr $P266, loop265_handler
@@ -5636,7 +5561,7 @@
     unless $P255, loop265_done
     shift $P258, $P255
   loop265_redo:
-    .const 'Sub' $P260 = "29_1271336380.06238" 
+    .const 'Sub' $P260 = "29_1271948650.1622" 
     capture_lex $P260
     $P260($P258)
   loop265_next:
@@ -5649,7 +5574,7 @@
     eq $P267, 67, loop265_redo
   loop265_done:
     pop_eh 
-  for_undef_88:
+  for_undef_87:
 .annotate "line", 110
     set $P247, $P255
   if_248_end:
@@ -5659,7 +5584,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block259"  :anon :subid("29_1271336380.06238") :outer("28_1271336380.06238")
+.sub "_block259"  :anon :subid("29_1271948650.1622") :outer("28_1271948650.1622")
     .param pmc param_261
 .annotate "line", 112
     .lex "$_", param_261
@@ -5671,10 +5596,10 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_delimited"  :subid("30_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_delimited"  :subid("30_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_288
 .annotate "line", 125
-    .const 'Sub' $P300 = "31_1271336380.06238" 
+    .const 'Sub' $P300 = "31_1271948650.1622" 
     capture_lex $P300
     new $P287, 'ExceptionHandler'
     set_addr $P287, control_286
@@ -5699,15 +5624,15 @@
     store_lex "$lastlit", $P293
 .annotate "line", 128
     find_lex $P295, "$/"
-    unless_null $P295, vivify_89
+    unless_null $P295, vivify_88
     $P295 = root_new ['parrot';'Hash']
-  vivify_89:
+  vivify_88:
     set $P296, $P295["quote_atom"]
-    unless_null $P296, vivify_90
+    unless_null $P296, vivify_89
     new $P296, "Undef"
-  vivify_90:
+  vivify_89:
     defined $I297, $P296
-    unless $I297, for_undef_91
+    unless $I297, for_undef_90
     iter $P294, $P296
     new $P333, 'ExceptionHandler'
     set_addr $P333, loop332_handler
@@ -5717,7 +5642,7 @@
     unless $P294, loop332_done
     shift $P298, $P294
   loop332_redo:
-    .const 'Sub' $P300 = "31_1271336380.06238" 
+    .const 'Sub' $P300 = "31_1271948650.1622" 
     capture_lex $P300
     $P300($P298)
   loop332_next:
@@ -5730,7 +5655,7 @@
     eq $P334, 67, loop332_redo
   loop332_done:
     pop_eh 
-  for_undef_91:
+  for_undef_90:
 .annotate "line", 142
     find_lex $P336, "$lastlit"
     set $S337, $P336
@@ -5795,7 +5720,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block299"  :anon :subid("31_1271336380.06238") :outer("30_1271336380.06238")
+.sub "_block299"  :anon :subid("31_1271948650.1622") :outer("30_1271948650.1622")
     .param pmc param_302
 .annotate "line", 129
     new $P301, "Undef"
@@ -5864,7 +5789,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_atom"  :subid("32_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_atom"  :subid("32_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_363
 .annotate "line", 150
     new $P362, 'ExceptionHandler'
@@ -5876,13 +5801,13 @@
 .annotate "line", 151
     find_lex $P364, "$/"
     find_lex $P367, "$/"
-    unless_null $P367, vivify_92
+    unless_null $P367, vivify_91
     $P367 = root_new ['parrot';'Hash']
-  vivify_92:
+  vivify_91:
     set $P368, $P367["quote_escape"]
-    unless_null $P368, vivify_93
+    unless_null $P368, vivify_92
     new $P368, "Undef"
-  vivify_93:
+  vivify_92:
     if $P368, if_366
     find_lex $P372, "$/"
     set $S373, $P372
@@ -5891,13 +5816,13 @@
     goto if_366_end
   if_366:
     find_lex $P369, "$/"
-    unless_null $P369, vivify_94
+    unless_null $P369, vivify_93
     $P369 = root_new ['parrot';'Hash']
-  vivify_94:
+  vivify_93:
     set $P370, $P369["quote_escape"]
-    unless_null $P370, vivify_95
+    unless_null $P370, vivify_94
     new $P370, "Undef"
-  vivify_95:
+  vivify_94:
     $P371 = $P370."ast"()
     set $P365, $P371
   if_366_end:
@@ -5913,7 +5838,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<backslash>"  :subid("33_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<backslash>"  :subid("33_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_379
 .annotate "line", 154
     new $P378, 'ExceptionHandler'
@@ -5934,7 +5859,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<stopper>"  :subid("34_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<stopper>"  :subid("34_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_386
 .annotate "line", 155
     new $P385, 'ExceptionHandler'
@@ -5945,13 +5870,13 @@
     .lex "$/", param_386
     find_lex $P387, "$/"
     find_lex $P388, "$/"
-    unless_null $P388, vivify_96
+    unless_null $P388, vivify_95
     $P388 = root_new ['parrot';'Hash']
-  vivify_96:
+  vivify_95:
     set $P389, $P388["stopper"]
-    unless_null $P389, vivify_97
+    unless_null $P389, vivify_96
     new $P389, "Undef"
-  vivify_97:
+  vivify_96:
     set $S390, $P389
     $P391 = $P387."!make"($S390)
     .return ($P391)
@@ -5964,7 +5889,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<bs>"  :subid("35_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<bs>"  :subid("35_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_396
 .annotate "line", 157
     new $P395, 'ExceptionHandler'
@@ -5985,7 +5910,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<nl>"  :subid("36_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<nl>"  :subid("36_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_403
 .annotate "line", 158
     new $P402, 'ExceptionHandler'
@@ -6006,7 +5931,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<cr>"  :subid("37_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<cr>"  :subid("37_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_410
 .annotate "line", 159
     new $P409, 'ExceptionHandler'
@@ -6027,7 +5952,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<tab>"  :subid("38_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<tab>"  :subid("38_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_417
 .annotate "line", 160
     new $P416, 'ExceptionHandler'
@@ -6048,7 +5973,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<ff>"  :subid("39_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<ff>"  :subid("39_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_424
 .annotate "line", 161
     new $P423, 'ExceptionHandler'
@@ -6069,167 +5994,169 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<esc>"  :subid("40_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<hex>"  :subid("40_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_431
-.annotate "line", 162
+.annotate "line", 163
     new $P430, 'ExceptionHandler'
     set_addr $P430, control_429
     $P430."handle_types"(58)
     push_eh $P430
     .lex "self", self
     .lex "$/", param_431
-    find_lex $P432, "$/"
-    $P433 = $P432."!make"("\e")
-    .return ($P433)
-  control_429:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P434, exception, "payload"
-    .return ($P434)
-.end
-
-
-.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<hex>"  :subid("41_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_438
 .annotate "line", 164
-    new $P437, 'ExceptionHandler'
-    set_addr $P437, control_436
-    $P437."handle_types"(58)
-    push_eh $P437
-    .lex "self", self
-    .lex "$/", param_438
-.annotate "line", 165
-    find_lex $P439, "$/"
-    find_lex $P442, "$/"
-    unless_null $P442, vivify_98
-    $P442 = root_new ['parrot';'Hash']
+    find_lex $P432, "$/"
+    find_lex $P435, "$/"
+    unless_null $P435, vivify_97
+    $P435 = root_new ['parrot';'Hash']
+  vivify_97:
+    set $P436, $P435["hexint"]
+    unless_null $P436, vivify_98
+    new $P436, "Undef"
   vivify_98:
-    set $P443, $P442["hexint"]
-    unless_null $P443, vivify_99
-    new $P443, "Undef"
+    if $P436, if_434
+    find_lex $P439, "$/"
+    unless_null $P439, vivify_99
+    $P439 = root_new ['parrot';'Hash']
   vivify_99:
-    if $P443, if_441
-    find_lex $P446, "$/"
-    unless_null $P446, vivify_100
-    $P446 = root_new ['parrot';'Hash']
+    set $P440, $P439["hexints"]
+    unless_null $P440, vivify_100
+    $P440 = root_new ['parrot';'Hash']
   vivify_100:
-    set $P447, $P446["hexints"]
-    unless_null $P447, vivify_101
-    $P447 = root_new ['parrot';'Hash']
+    set $P441, $P440["hexint"]
+    unless_null $P441, vivify_101
+    new $P441, "Undef"
   vivify_101:
-    set $P448, $P447["hexint"]
-    unless_null $P448, vivify_102
-    new $P448, "Undef"
+    set $P433, $P441
+    goto if_434_end
+  if_434:
+    find_lex $P437, "$/"
+    unless_null $P437, vivify_102
+    $P437 = root_new ['parrot';'Hash']
   vivify_102:
-    set $P440, $P448
-    goto if_441_end
-  if_441:
-    find_lex $P444, "$/"
-    unless_null $P444, vivify_103
-    $P444 = root_new ['parrot';'Hash']
+    set $P438, $P437["hexint"]
+    unless_null $P438, vivify_103
+    new $P438, "Undef"
   vivify_103:
-    set $P445, $P444["hexint"]
-    unless_null $P445, vivify_104
-    new $P445, "Undef"
-  vivify_104:
-    set $P440, $P445
-  if_441_end:
-    $P449 = "ints_to_string"($P440)
-    $P450 = $P439."!make"($P449)
-.annotate "line", 164
-    .return ($P450)
-  control_436:
+    set $P433, $P438
+  if_434_end:
+    $P442 = "ints_to_string"($P433)
+    $P443 = $P432."!make"($P442)
+.annotate "line", 163
+    .return ($P443)
+  control_429:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P451, exception, "payload"
-    .return ($P451)
+    getattribute $P444, exception, "payload"
+    .return ($P444)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<oct>"  :subid("42_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_455
-.annotate "line", 168
-    new $P454, 'ExceptionHandler'
-    set_addr $P454, control_453
-    $P454."handle_types"(58)
-    push_eh $P454
+.sub "quote_escape:sym<oct>"  :subid("41_1271948650.1622") :method :outer("11_1271948650.1622")
+    .param pmc param_448
+.annotate "line", 167
+    new $P447, 'ExceptionHandler'
+    set_addr $P447, control_446
+    $P447."handle_types"(58)
+    push_eh $P447
     .lex "self", self
-    .lex "$/", param_455
-.annotate "line", 169
-    find_lex $P456, "$/"
-    find_lex $P459, "$/"
-    unless_null $P459, vivify_105
-    $P459 = root_new ['parrot';'Hash']
+    .lex "$/", param_448
+.annotate "line", 168
+    find_lex $P449, "$/"
+    find_lex $P452, "$/"
+    unless_null $P452, vivify_104
+    $P452 = root_new ['parrot';'Hash']
+  vivify_104:
+    set $P453, $P452["octint"]
+    unless_null $P453, vivify_105
+    new $P453, "Undef"
   vivify_105:
-    set $P460, $P459["octint"]
-    unless_null $P460, vivify_106
-    new $P460, "Undef"
+    if $P453, if_451
+    find_lex $P456, "$/"
+    unless_null $P456, vivify_106
+    $P456 = root_new ['parrot';'Hash']
   vivify_106:
-    if $P460, if_458
-    find_lex $P463, "$/"
-    unless_null $P463, vivify_107
-    $P463 = root_new ['parrot';'Hash']
+    set $P457, $P456["octints"]
+    unless_null $P457, vivify_107
+    $P457 = root_new ['parrot';'Hash']
   vivify_107:
-    set $P464, $P463["octints"]
-    unless_null $P464, vivify_108
-    $P464 = root_new ['parrot';'Hash']
+    set $P458, $P457["octint"]
+    unless_null $P458, vivify_108
+    new $P458, "Undef"
   vivify_108:
-    set $P465, $P464["octint"]
-    unless_null $P465, vivify_109
-    new $P465, "Undef"
+    set $P450, $P458
+    goto if_451_end
+  if_451:
+    find_lex $P454, "$/"
+    unless_null $P454, vivify_109
+    $P454 = root_new ['parrot';'Hash']
   vivify_109:
-    set $P457, $P465
-    goto if_458_end
-  if_458:
-    find_lex $P461, "$/"
-    unless_null $P461, vivify_110
-    $P461 = root_new ['parrot';'Hash']
+    set $P455, $P454["octint"]
+    unless_null $P455, vivify_110
+    new $P455, "Undef"
   vivify_110:
-    set $P462, $P461["octint"]
-    unless_null $P462, vivify_111
-    new $P462, "Undef"
-  vivify_111:
-    set $P457, $P462
-  if_458_end:
-    $P466 = "ints_to_string"($P457)
-    $P467 = $P456."!make"($P466)
-.annotate "line", 168
-    .return ($P467)
-  control_453:
+    set $P450, $P455
+  if_451_end:
+    $P459 = "ints_to_string"($P450)
+    $P460 = $P449."!make"($P459)
+.annotate "line", 167
+    .return ($P460)
+  control_446:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P468, exception, "payload"
-    .return ($P468)
+    getattribute $P461, exception, "payload"
+    .return ($P461)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<chr>"  :subid("43_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_472
-.annotate "line", 172
-    new $P471, 'ExceptionHandler'
-    set_addr $P471, control_470
-    $P471."handle_types"(58)
-    push_eh $P471
+.sub "quote_escape:sym<chr>"  :subid("42_1271948650.1622") :method :outer("11_1271948650.1622")
+    .param pmc param_465
+.annotate "line", 171
+    new $P464, 'ExceptionHandler'
+    set_addr $P464, control_463
+    $P464."handle_types"(58)
+    push_eh $P464
     .lex "self", self
-    .lex "$/", param_472
-.annotate "line", 173
-    find_lex $P473, "$/"
-    find_lex $P474, "$/"
-    unless_null $P474, vivify_112
-    $P474 = root_new ['parrot';'Hash']
-  vivify_112:
-    set $P475, $P474["charspec"]
-    unless_null $P475, vivify_113
-    new $P475, "Undef"
-  vivify_113:
-    $P476 = $P475."ast"()
-    $P477 = $P473."!make"($P476)
+    .lex "$/", param_465
 .annotate "line", 172
+    find_lex $P466, "$/"
+    find_lex $P467, "$/"
+    unless_null $P467, vivify_111
+    $P467 = root_new ['parrot';'Hash']
+  vivify_111:
+    set $P468, $P467["charspec"]
+    unless_null $P468, vivify_112
+    new $P468, "Undef"
+  vivify_112:
+    $P469 = $P468."ast"()
+    $P470 = $P466."!make"($P469)
+.annotate "line", 171
+    .return ($P470)
+  control_463:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P471, exception, "payload"
+    .return ($P471)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<0>"  :subid("43_1271948650.1622") :method :outer("11_1271948650.1622")
+    .param pmc param_475
+.annotate "line", 175
+    new $P474, 'ExceptionHandler'
+    set_addr $P474, control_473
+    $P474."handle_types"(58)
+    push_eh $P474
+    .lex "self", self
+    .lex "$/", param_475
+.annotate "line", 176
+    find_lex $P476, "$/"
+    $P477 = $P476."!make"(unicode:"\x{0}")
+.annotate "line", 175
     .return ($P477)
-  control_470:
+  control_473:
     .local pmc exception 
     .get_results (exception) 
     getattribute $P478, exception, "payload"
@@ -6238,292 +6165,269 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<0>"  :subid("44_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<misc>"  :subid("44_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_482
-.annotate "line", 176
+.annotate "line", 179
     new $P481, 'ExceptionHandler'
     set_addr $P481, control_480
     $P481."handle_types"(58)
     push_eh $P481
     .lex "self", self
     .lex "$/", param_482
-.annotate "line", 177
-    find_lex $P483, "$/"
-    $P484 = $P483."!make"(unicode:"\x{0}")
-.annotate "line", 176
-    .return ($P484)
-  control_480:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P485, exception, "payload"
-    .return ($P485)
-.end
-
-
-.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<misc>"  :subid("45_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_489
 .annotate "line", 180
-    new $P488, 'ExceptionHandler'
-    set_addr $P488, control_487
-    $P488."handle_types"(58)
-    push_eh $P488
-    .lex "self", self
-    .lex "$/", param_489
-.annotate "line", 181
-    find_lex $P490, "$/"
+    find_lex $P483, "$/"
+    find_lex $P486, "$/"
+    unless_null $P486, vivify_113
+    $P486 = root_new ['parrot';'Hash']
+  vivify_113:
+    set $P487, $P486["textq"]
+    unless_null $P487, vivify_114
+    new $P487, "Undef"
+  vivify_114:
+    if $P487, if_485
     find_lex $P493, "$/"
-    unless_null $P493, vivify_114
+    unless_null $P493, vivify_115
     $P493 = root_new ['parrot';'Hash']
-  vivify_114:
-    set $P494, $P493["textq"]
-    unless_null $P494, vivify_115
-    new $P494, "Undef"
   vivify_115:
-    if $P494, if_492
-    find_lex $P500, "$/"
-    unless_null $P500, vivify_116
-    $P500 = root_new ['parrot';'Hash']
+    set $P494, $P493["textqq"]
+    unless_null $P494, vivify_116
+    new $P494, "Undef"
   vivify_116:
-    set $P501, $P500["textqq"]
-    unless_null $P501, vivify_117
-    new $P501, "Undef"
+    $P495 = $P494."Str"()
+    set $P484, $P495
+    goto if_485_end
+  if_485:
+    new $P488, "String"
+    assign $P488, "\\"
+    find_lex $P489, "$/"
+    unless_null $P489, vivify_117
+    $P489 = root_new ['parrot';'Hash']
   vivify_117:
-    $P502 = $P501."Str"()
-    set $P491, $P502
-    goto if_492_end
-  if_492:
-    new $P495, "String"
-    assign $P495, "\\"
-    find_lex $P496, "$/"
-    unless_null $P496, vivify_118
-    $P496 = root_new ['parrot';'Hash']
+    set $P490, $P489["textq"]
+    unless_null $P490, vivify_118
+    new $P490, "Undef"
   vivify_118:
-    set $P497, $P496["textq"]
-    unless_null $P497, vivify_119
-    new $P497, "Undef"
-  vivify_119:
-    $S498 = $P497."Str"()
-    concat $P499, $P495, $S498
-    set $P491, $P499
-  if_492_end:
-    $P503 = $P490."!make"($P491)
-.annotate "line", 180
-    .return ($P503)
-  control_487:
+    $S491 = $P490."Str"()
+    concat $P492, $P488, $S491
+    set $P484, $P492
+  if_485_end:
+    $P496 = $P483."!make"($P484)
+.annotate "line", 179
+    .return ($P496)
+  control_480:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P504, exception, "payload"
-    .return ($P504)
+    getattribute $P497, exception, "payload"
+    .return ($P497)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "charname"  :subid("46_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_508
-.annotate "line", 184
-    new $P507, 'ExceptionHandler'
-    set_addr $P507, control_506
-    $P507."handle_types"(58)
-    push_eh $P507
+.sub "charname"  :subid("45_1271948650.1622") :method :outer("11_1271948650.1622")
+    .param pmc param_501
+.annotate "line", 183
+    new $P500, 'ExceptionHandler'
+    set_addr $P500, control_499
+    $P500."handle_types"(58)
+    push_eh $P500
     .lex "self", self
-    .lex "$/", param_508
+    .lex "$/", param_501
+.annotate "line", 184
+    new $P502, "Undef"
+    .lex "$codepoint", $P502
 .annotate "line", 185
-    new $P509, "Undef"
-    .lex "$codepoint", $P509
-.annotate "line", 186
-    find_lex $P512, "$/"
-    unless_null $P512, vivify_120
-    $P512 = root_new ['parrot';'Hash']
+    find_lex $P505, "$/"
+    unless_null $P505, vivify_119
+    $P505 = root_new ['parrot';'Hash']
+  vivify_119:
+    set $P506, $P505["integer"]
+    unless_null $P506, vivify_120
+    new $P506, "Undef"
   vivify_120:
-    set $P513, $P512["integer"]
-    unless_null $P513, vivify_121
-    new $P513, "Undef"
+    if $P506, if_504
+.annotate "line", 186
+ $P510 = new ['CodeString'] 
+    find_lex $P511, "$/"
+    set $S512, $P511
+    $P513 = $P510."charname_to_ord"($S512)
+    set $P503, $P513
+.annotate "line", 185
+    goto if_504_end
+  if_504:
+    find_lex $P507, "$/"
+    unless_null $P507, vivify_121
+    $P507 = root_new ['parrot';'Hash']
   vivify_121:
-    if $P513, if_511
+    set $P508, $P507["integer"]
+    unless_null $P508, vivify_122
+    new $P508, "Undef"
+  vivify_122:
+    $P509 = $P508."ast"()
+    set $P503, $P509
+  if_504_end:
+    store_lex "$codepoint", $P503
 .annotate "line", 187
- $P517 = new ['CodeString'] 
+    find_lex $P515, "$codepoint"
+    set $N516, $P515
+    islt $I517, $N516, 0.0
+    unless $I517, if_514_end
     find_lex $P518, "$/"
-    set $S519, $P518
-    $P520 = $P517."charname_to_ord"($S519)
-    set $P510, $P520
-.annotate "line", 186
-    goto if_511_end
-  if_511:
-    find_lex $P514, "$/"
-    unless_null $P514, vivify_122
-    $P514 = root_new ['parrot';'Hash']
-  vivify_122:
-    set $P515, $P514["integer"]
-    unless_null $P515, vivify_123
-    new $P515, "Undef"
-  vivify_123:
-    $P516 = $P515."ast"()
-    set $P510, $P516
-  if_511_end:
-    store_lex "$codepoint", $P510
+    $P519 = $P518."CURSOR"()
+    new $P520, 'String'
+    set $P520, "Unrecognized character name "
+    find_lex $P521, "$/"
+    concat $P522, $P520, $P521
+    $P519."panic"($P522)
+  if_514_end:
 .annotate "line", 188
-    find_lex $P522, "$codepoint"
-    set $N523, $P522
-    islt $I524, $N523, 0.0
-    unless $I524, if_521_end
-    find_lex $P525, "$/"
-    $P526 = $P525."CURSOR"()
-    new $P527, 'String'
-    set $P527, "Unrecognized character name "
-    find_lex $P528, "$/"
-    concat $P529, $P527, $P528
-    $P526."panic"($P529)
-  if_521_end:
-.annotate "line", 189
-    find_lex $P530, "$/"
-    find_lex $P531, "$codepoint"
-    set $I532, $P531
-    chr $S533, $I532
-    $P534 = $P530."!make"($S533)
-.annotate "line", 184
-    .return ($P534)
-  control_506:
+    find_lex $P523, "$/"
+    find_lex $P524, "$codepoint"
+    set $I525, $P524
+    chr $S526, $I525
+    $P527 = $P523."!make"($S526)
+.annotate "line", 183
+    .return ($P527)
+  control_499:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P535, exception, "payload"
-    .return ($P535)
+    getattribute $P528, exception, "payload"
+    .return ($P528)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "charnames"  :subid("47_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_539
-.annotate "line", 192
-    .const 'Sub' $P548 = "48_1271336380.06238" 
-    capture_lex $P548
-    new $P538, 'ExceptionHandler'
-    set_addr $P538, control_537
-    $P538."handle_types"(58)
-    push_eh $P538
+.sub "charnames"  :subid("46_1271948650.1622") :method :outer("11_1271948650.1622")
+    .param pmc param_532
+.annotate "line", 191
+    .const 'Sub' $P541 = "47_1271948650.1622" 
+    capture_lex $P541
+    new $P531, 'ExceptionHandler'
+    set_addr $P531, control_530
+    $P531."handle_types"(58)
+    push_eh $P531
     .lex "self", self
-    .lex "$/", param_539
+    .lex "$/", param_532
+.annotate "line", 192
+    new $P533, "Undef"
+    .lex "$str", $P533
+    new $P534, "String"
+    assign $P534, ""
+    store_lex "$str", $P534
 .annotate "line", 193
-    new $P540, "Undef"
-    .lex "$str", $P540
-    new $P541, "String"
-    assign $P541, ""
-    store_lex "$str", $P541
-.annotate "line", 194
-    find_lex $P543, "$/"
-    unless_null $P543, vivify_124
-    $P543 = root_new ['parrot';'Hash']
+    find_lex $P536, "$/"
+    unless_null $P536, vivify_123
+    $P536 = root_new ['parrot';'Hash']
+  vivify_123:
+    set $P537, $P536["charname"]
+    unless_null $P537, vivify_124
+    new $P537, "Undef"
   vivify_124:
-    set $P544, $P543["charname"]
-    unless_null $P544, vivify_125
-    new $P544, "Undef"
-  vivify_125:
-    defined $I545, $P544
-    unless $I545, for_undef_126
-    iter $P542, $P544
-    new $P555, 'ExceptionHandler'
-    set_addr $P555, loop554_handler
-    $P555."handle_types"(65, 67, 66)
-    push_eh $P555
-  loop554_test:
-    unless $P542, loop554_done
-    shift $P546, $P542
-  loop554_redo:
-    .const 'Sub' $P548 = "48_1271336380.06238" 
-    capture_lex $P548
-    $P548($P546)
-  loop554_next:
-    goto loop554_test
-  loop554_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P556, exception, 'type'
-    eq $P556, 65, loop554_next
-    eq $P556, 67, loop554_redo
-  loop554_done:
+    defined $I538, $P537
+    unless $I538, for_undef_125
+    iter $P535, $P537
+    new $P548, 'ExceptionHandler'
+    set_addr $P548, loop547_handler
+    $P548."handle_types"(65, 67, 66)
+    push_eh $P548
+  loop547_test:
+    unless $P535, loop547_done
+    shift $P539, $P535
+  loop547_redo:
+    .const 'Sub' $P541 = "47_1271948650.1622" 
+    capture_lex $P541
+    $P541($P539)
+  loop547_next:
+    goto loop547_test
+  loop547_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P549, exception, 'type'
+    eq $P549, 65, loop547_next
+    eq $P549, 67, loop547_redo
+  loop547_done:
     pop_eh 
-  for_undef_126:
-.annotate "line", 195
-    find_lex $P557, "$/"
-    find_lex $P558, "$str"
-    $P559 = $P557."!make"($P558)
-.annotate "line", 192
-    .return ($P559)
-  control_537:
+  for_undef_125:
+.annotate "line", 194
+    find_lex $P550, "$/"
+    find_lex $P551, "$str"
+    $P552 = $P550."!make"($P551)
+.annotate "line", 191
+    .return ($P552)
+  control_530:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P560, exception, "payload"
-    .return ($P560)
+    getattribute $P553, exception, "payload"
+    .return ($P553)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block547"  :anon :subid("48_1271336380.06238") :outer("47_1271336380.06238")
-    .param pmc param_549
-.annotate "line", 194
-    .lex "$_", param_549
-    find_lex $P550, "$str"
-    find_lex $P551, "$_"
-    $S552 = $P551."ast"()
-    concat $P553, $P550, $S552
-    store_lex "$str", $P553
-    .return ($P553)
+.sub "_block540"  :anon :subid("47_1271948650.1622") :outer("46_1271948650.1622")
+    .param pmc param_542
+.annotate "line", 193
+    .lex "$_", param_542
+    find_lex $P543, "$str"
+    find_lex $P544, "$_"
+    $S545 = $P544."ast"()
+    concat $P546, $P543, $S545
+    store_lex "$str", $P546
+    .return ($P546)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "charspec"  :subid("49_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_564
-.annotate "line", 198
-    new $P563, 'ExceptionHandler'
-    set_addr $P563, control_562
-    $P563."handle_types"(58)
-    push_eh $P563
+.sub "charspec"  :subid("48_1271948650.1622") :method :outer("11_1271948650.1622")
+    .param pmc param_557
+.annotate "line", 197
+    new $P556, 'ExceptionHandler'
+    set_addr $P556, control_555
+    $P556."handle_types"(58)
+    push_eh $P556
     .lex "self", self
-    .lex "$/", param_564
-.annotate "line", 199
-    find_lex $P565, "$/"
-    find_lex $P568, "$/"
-    unless_null $P568, vivify_127
-    $P568 = root_new ['parrot';'Hash']
+    .lex "$/", param_557
+.annotate "line", 198
+    find_lex $P558, "$/"
+    find_lex $P561, "$/"
+    unless_null $P561, vivify_126
+    $P561 = root_new ['parrot';'Hash']
+  vivify_126:
+    set $P562, $P561["charnames"]
+    unless_null $P562, vivify_127
+    new $P562, "Undef"
   vivify_127:
-    set $P569, $P568["charnames"]
-    unless_null $P569, vivify_128
-    new $P569, "Undef"
+    if $P562, if_560
+    find_lex $P566, "$/"
+    $I567 = "string_to_int"($P566, 10)
+    chr $S568, $I567
+    new $P559, 'String'
+    set $P559, $S568
+    goto if_560_end
+  if_560:
+    find_lex $P563, "$/"
+    unless_null $P563, vivify_128
+    $P563 = root_new ['parrot';'Hash']
   vivify_128:
-    if $P569, if_567
-    find_lex $P573, "$/"
-    $I574 = "string_to_int"($P573, 10)
-    chr $S575, $I574
-    new $P566, 'String'
-    set $P566, $S575
-    goto if_567_end
-  if_567:
-    find_lex $P570, "$/"
-    unless_null $P570, vivify_129
-    $P570 = root_new ['parrot';'Hash']
+    set $P564, $P563["charnames"]
+    unless_null $P564, vivify_129
+    new $P564, "Undef"
   vivify_129:
-    set $P571, $P570["charnames"]
-    unless_null $P571, vivify_130
-    new $P571, "Undef"
-  vivify_130:
-    $P572 = $P571."ast"()
-    set $P566, $P572
-  if_567_end:
-    $P576 = $P565."!make"($P566)
-.annotate "line", 198
-    .return ($P576)
-  control_562:
+    $P565 = $P564."ast"()
+    set $P559, $P565
+  if_560_end:
+    $P569 = $P558."!make"($P559)
+.annotate "line", 197
+    .return ($P569)
+  control_555:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P577, exception, "payload"
-    .return ($P577)
+    getattribute $P570, exception, "payload"
+    .return ($P570)
 .end
 
 ### .include 'gen/hllcompiler.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271336381.18625")
+.sub "_block11"  :anon :subid("10_1271948651.35295")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     capture_lex $P14
@@ -6537,9 +6441,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post25") :outer("10_1271336381.18625")
+.sub "" :load :init :subid("post25") :outer("10_1271948651.35295")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271336381.18625" 
+    .const 'Sub' $P12 = "10_1271948651.35295" 
     .local pmc block
     set block, $P12
 .annotate "line", 2
@@ -6553,28 +6457,28 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block13"  :subid("11_1271336381.18625") :outer("10_1271336381.18625")
+.sub "_block13"  :subid("11_1271948651.35295") :outer("10_1271948651.35295")
 .annotate "line", 6
-    .const 'Sub' $P187 = "20_1271336381.18625" 
+    .const 'Sub' $P187 = "20_1271948651.35295" 
     capture_lex $P187
-    .const 'Sub' $P152 = "18_1271336381.18625" 
+    .const 'Sub' $P152 = "18_1271948651.35295" 
     capture_lex $P152
-    .const 'Sub' $P137 = "17_1271336381.18625" 
+    .const 'Sub' $P137 = "17_1271948651.35295" 
     capture_lex $P137
-    .const 'Sub' $P121 = "16_1271336381.18625" 
+    .const 'Sub' $P121 = "16_1271948651.35295" 
     capture_lex $P121
-    .const 'Sub' $P32 = "13_1271336381.18625" 
+    .const 'Sub' $P32 = "13_1271948651.35295" 
     capture_lex $P32
-    .const 'Sub' $P15 = "12_1271336381.18625" 
+    .const 'Sub' $P15 = "12_1271948651.35295" 
     capture_lex $P15
 .annotate "line", 14
-    .const 'Sub' $P15 = "12_1271336381.18625" 
+    .const 'Sub' $P15 = "12_1271948651.35295" 
     capture_lex $P15
     .lex "value_type", $P15
 .annotate "line", 10
     find_lex $P31, "value_type"
 .annotate "line", 69
-    .const 'Sub' $P187 = "20_1271336381.18625" 
+    .const 'Sub' $P187 = "20_1271948651.35295" 
     capture_lex $P187
 .annotate "line", 6
     .return ($P187)
@@ -6582,7 +6486,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "" :load :init :subid("post26") :outer("11_1271336381.18625")
+.sub "" :load :init :subid("post26") :outer("11_1271948651.35295")
 .annotate "line", 6
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     .local pmc block
@@ -6594,7 +6498,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "value_type"  :subid("12_1271336381.18625") :outer("11_1271336381.18625")
+.sub "value_type"  :subid("12_1271948651.35295") :outer("11_1271948651.35295")
     .param pmc param_18
 .annotate "line", 14
     new $P17, 'ExceptionHandler'
@@ -6638,15 +6542,15 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "get_exports"  :subid("13_1271336381.18625") :method :outer("11_1271336381.18625")
+.sub "get_exports"  :subid("13_1271948651.35295") :method :outer("11_1271948651.35295")
     .param pmc param_35
     .param pmc param_38 :slurpy
     .param pmc param_36 :optional :named("tagset")
     .param int has_param_36 :opt_flag
 .annotate "line", 20
-    .const 'Sub' $P104 = "15_1271336381.18625" 
+    .const 'Sub' $P104 = "15_1271948651.35295" 
     capture_lex $P104
-    .const 'Sub' $P83 = "14_1271336381.18625" 
+    .const 'Sub' $P83 = "14_1271948651.35295" 
     capture_lex $P83
     new $P34, 'ExceptionHandler'
     set_addr $P34, control_33
@@ -6752,7 +6656,7 @@
     unless $P99, loop116_done
     shift $P102, $P99
   loop116_redo:
-    .const 'Sub' $P104 = "15_1271336381.18625" 
+    .const 'Sub' $P104 = "15_1271948651.35295" 
     capture_lex $P104
     $P104($P102)
   loop116_next:
@@ -6782,7 +6686,7 @@
     unless $P78, loop96_done
     shift $P81, $P78
   loop96_redo:
-    .const 'Sub' $P83 = "14_1271336381.18625" 
+    .const 'Sub' $P83 = "14_1271948651.35295" 
     capture_lex $P83
     $P83($P81)
   loop96_next:
@@ -6810,7 +6714,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block103"  :anon :subid("15_1271336381.18625") :outer("13_1271336381.18625")
+.sub "_block103"  :anon :subid("15_1271948651.35295") :outer("13_1271948651.35295")
     .param pmc param_106
 .annotate "line", 40
     new $P105, "Undef"
@@ -6842,7 +6746,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block82"  :anon :subid("14_1271336381.18625") :outer("13_1271336381.18625")
+.sub "_block82"  :anon :subid("14_1271948651.35295") :outer("13_1271948651.35295")
     .param pmc param_85
 .annotate "line", 34
     new $P84, "Undef"
@@ -6881,7 +6785,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "get_module"  :subid("16_1271336381.18625") :method :outer("11_1271336381.18625")
+.sub "get_module"  :subid("16_1271948651.35295") :method :outer("11_1271948651.35295")
     .param pmc param_124
 .annotate "line", 47
     new $P123, 'ExceptionHandler'
@@ -6921,7 +6825,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "language"  :subid("17_1271336381.18625") :method :outer("11_1271336381.18625")
+.sub "language"  :subid("17_1271948651.35295") :method :outer("11_1271948651.35295")
     .param pmc param_140 :optional
     .param int has_param_140 :opt_flag
 .annotate "line", 53
@@ -6965,10 +6869,10 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "load_module"  :subid("18_1271336381.18625") :method :outer("11_1271336381.18625")
+.sub "load_module"  :subid("18_1271948651.35295") :method :outer("11_1271948651.35295")
     .param pmc param_155
 .annotate "line", 61
-    .const 'Sub' $P165 = "19_1271336381.18625" 
+    .const 'Sub' $P165 = "19_1271948651.35295" 
     capture_lex $P165
     new $P154, 'ExceptionHandler'
     set_addr $P154, control_153
@@ -6995,7 +6899,7 @@
     assign $P163, 0
     store_lex "$loaded", $P163
 .annotate "line", 64
-    .const 'Sub' $P165 = "19_1271336381.18625" 
+    .const 'Sub' $P165 = "19_1271948651.35295" 
     capture_lex $P165
     $P165()
 .annotate "line", 65
@@ -7024,7 +6928,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block164"  :anon :subid("19_1271336381.18625") :outer("18_1271336381.18625")
+.sub "_block164"  :anon :subid("19_1271948651.35295") :outer("18_1271948651.35295")
 .annotate "line", 64
     new $P172, 'ExceptionHandler'
     set_addr $P172, control_171
@@ -7057,11 +6961,11 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "import"  :subid("20_1271336381.18625") :method :outer("11_1271336381.18625")
+.sub "import"  :subid("20_1271948651.35295") :method :outer("11_1271948651.35295")
     .param pmc param_190
     .param pmc param_191
 .annotate "line", 69
-    .const 'Sub' $P197 = "21_1271336381.18625" 
+    .const 'Sub' $P197 = "21_1271948651.35295" 
     capture_lex $P197
     new $P189, 'ExceptionHandler'
     set_addr $P189, control_188
@@ -7083,7 +6987,7 @@
     unless $P192, loop278_done
     shift $P195, $P192
   loop278_redo:
-    .const 'Sub' $P197 = "21_1271336381.18625" 
+    .const 'Sub' $P197 = "21_1271948651.35295" 
     capture_lex $P197
     $P197($P195)
   loop278_next:
@@ -7108,14 +7012,14 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block196"  :anon :subid("21_1271336381.18625") :outer("20_1271336381.18625")
+.sub "_block196"  :anon :subid("21_1271948651.35295") :outer("20_1271948651.35295")
     .param pmc param_200
 .annotate "line", 70
-    .const 'Sub' $P267 = "24_1271336381.18625" 
+    .const 'Sub' $P267 = "24_1271948651.35295" 
     capture_lex $P267
-    .const 'Sub' $P247 = "23_1271336381.18625" 
+    .const 'Sub' $P247 = "23_1271948651.35295" 
     capture_lex $P247
-    .const 'Sub' $P218 = "22_1271336381.18625" 
+    .const 'Sub' $P218 = "22_1271948651.35295" 
     capture_lex $P218
 .annotate "line", 71
     new $P198, "Undef"
@@ -7163,7 +7067,7 @@
     unless $P262, loop275_done
     shift $P265, $P262
   loop275_redo:
-    .const 'Sub' $P267 = "24_1271336381.18625" 
+    .const 'Sub' $P267 = "24_1271948651.35295" 
     capture_lex $P267
     $P267($P265)
   loop275_next:
@@ -7195,7 +7099,7 @@
     unless $P242, loop259_done
     shift $P245, $P242
   loop259_redo:
-    .const 'Sub' $P247 = "23_1271336381.18625" 
+    .const 'Sub' $P247 = "23_1271948651.35295" 
     capture_lex $P247
     $P247($P245)
   loop259_next:
@@ -7229,7 +7133,7 @@
     unless $P213, loop231_done
     shift $P216, $P213
   loop231_redo:
-    .const 'Sub' $P218 = "22_1271336381.18625" 
+    .const 'Sub' $P218 = "22_1271948651.35295" 
     capture_lex $P218
     $P218($P216)
   loop231_next:
@@ -7252,7 +7156,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block266"  :anon :subid("24_1271336381.18625") :outer("21_1271336381.18625")
+.sub "_block266"  :anon :subid("24_1271948651.35295") :outer("21_1271948651.35295")
     .param pmc param_268
 .annotate "line", 80
     .lex "$_", param_268
@@ -7272,7 +7176,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block246"  :anon :subid("23_1271336381.18625") :outer("21_1271336381.18625")
+.sub "_block246"  :anon :subid("23_1271948651.35295") :outer("21_1271948651.35295")
     .param pmc param_248
 .annotate "line", 77
     .lex "$_", param_248
@@ -7292,7 +7196,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block217"  :anon :subid("22_1271336381.18625") :outer("21_1271336381.18625")
+.sub "_block217"  :anon :subid("22_1271948651.35295") :outer("21_1271948651.35295")
     .param pmc param_219
 .annotate "line", 74
     .lex "$_", param_219

Modified: branches/runcore_purge/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- branches/runcore_purge/ext/nqp-rx/src/stage0/NQP-s0.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/ext/nqp-rx/src/stage0/NQP-s0.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -15,387 +15,389 @@
 ### .include 'gen/nqp-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271336396.90314")
+.sub "_block11"  :anon :subid("10_1271948667.92136")
 .annotate "line", 0
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     capture_lex $P14
 .annotate "line", 4
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     capture_lex $P14
-    $P1299 = $P14()
+    $P1304 = $P14()
 .annotate "line", 1
-    .return ($P1299)
+    .return ($P1304)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post331") :outer("10_1271336396.90314")
+.sub "" :load :init :subid("post333") :outer("10_1271948667.92136")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271336396.90314" 
+    .const 'Sub' $P12 = "10_1271948667.92136" 
     .local pmc block
     set block, $P12
-    $P1300 = get_root_global ["parrot"], "P6metaclass"
-    $P1300."new_class"("NQP::Grammar", "HLL::Grammar" :named("parent"))
+    $P1305 = get_root_global ["parrot"], "P6metaclass"
+    $P1305."new_class"("NQP::Grammar", "HLL::Grammar" :named("parent"))
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block13"  :subid("11_1271336396.90314") :outer("10_1271336396.90314")
+.sub "_block13"  :subid("11_1271948667.92136") :outer("10_1271948667.92136")
 .annotate "line", 4
-    get_hll_global $P1243, ["NQP";"Regex"], "_block1242" 
-    capture_lex $P1243
-    .const 'Sub' $P1229 = "317_1271336396.90314" 
-    capture_lex $P1229
-    .const 'Sub' $P1223 = "315_1271336396.90314" 
-    capture_lex $P1223
-    .const 'Sub' $P1217 = "313_1271336396.90314" 
-    capture_lex $P1217
-    .const 'Sub' $P1210 = "311_1271336396.90314" 
-    capture_lex $P1210
-    .const 'Sub' $P1203 = "309_1271336396.90314" 
-    capture_lex $P1203
-    .const 'Sub' $P1196 = "307_1271336396.90314" 
-    capture_lex $P1196
-    .const 'Sub' $P1189 = "305_1271336396.90314" 
-    capture_lex $P1189
-    .const 'Sub' $P1183 = "303_1271336396.90314" 
-    capture_lex $P1183
-    .const 'Sub' $P1176 = "301_1271336396.90314" 
-    capture_lex $P1176
-    .const 'Sub' $P1169 = "299_1271336396.90314" 
-    capture_lex $P1169
-    .const 'Sub' $P1162 = "297_1271336396.90314" 
-    capture_lex $P1162
-    .const 'Sub' $P1155 = "295_1271336396.90314" 
-    capture_lex $P1155
-    .const 'Sub' $P1148 = "293_1271336396.90314" 
-    capture_lex $P1148
-    .const 'Sub' $P1141 = "291_1271336396.90314" 
-    capture_lex $P1141
-    .const 'Sub' $P1134 = "289_1271336396.90314" 
-    capture_lex $P1134
-    .const 'Sub' $P1127 = "287_1271336396.90314" 
-    capture_lex $P1127
-    .const 'Sub' $P1120 = "285_1271336396.90314" 
-    capture_lex $P1120
-    .const 'Sub' $P1113 = "283_1271336396.90314" 
-    capture_lex $P1113
-    .const 'Sub' $P1106 = "281_1271336396.90314" 
-    capture_lex $P1106
-    .const 'Sub' $P1099 = "279_1271336396.90314" 
-    capture_lex $P1099
-    .const 'Sub' $P1092 = "277_1271336396.90314" 
-    capture_lex $P1092
-    .const 'Sub' $P1085 = "275_1271336396.90314" 
-    capture_lex $P1085
-    .const 'Sub' $P1078 = "273_1271336396.90314" 
-    capture_lex $P1078
-    .const 'Sub' $P1071 = "271_1271336396.90314" 
-    capture_lex $P1071
-    .const 'Sub' $P1064 = "269_1271336396.90314" 
-    capture_lex $P1064
-    .const 'Sub' $P1057 = "267_1271336396.90314" 
-    capture_lex $P1057
-    .const 'Sub' $P1050 = "265_1271336396.90314" 
-    capture_lex $P1050
-    .const 'Sub' $P1043 = "263_1271336396.90314" 
-    capture_lex $P1043
-    .const 'Sub' $P1036 = "261_1271336396.90314" 
-    capture_lex $P1036
-    .const 'Sub' $P1029 = "259_1271336396.90314" 
-    capture_lex $P1029
-    .const 'Sub' $P1022 = "257_1271336396.90314" 
-    capture_lex $P1022
-    .const 'Sub' $P1015 = "255_1271336396.90314" 
-    capture_lex $P1015
-    .const 'Sub' $P1008 = "253_1271336396.90314" 
-    capture_lex $P1008
-    .const 'Sub' $P1001 = "251_1271336396.90314" 
-    capture_lex $P1001
-    .const 'Sub' $P995 = "249_1271336396.90314" 
-    capture_lex $P995
-    .const 'Sub' $P988 = "247_1271336396.90314" 
-    capture_lex $P988
-    .const 'Sub' $P981 = "245_1271336396.90314" 
-    capture_lex $P981
-    .const 'Sub' $P974 = "243_1271336396.90314" 
-    capture_lex $P974
-    .const 'Sub' $P967 = "241_1271336396.90314" 
-    capture_lex $P967
-    .const 'Sub' $P960 = "239_1271336396.90314" 
-    capture_lex $P960
-    .const 'Sub' $P953 = "237_1271336396.90314" 
-    capture_lex $P953
-    .const 'Sub' $P946 = "235_1271336396.90314" 
-    capture_lex $P946
-    .const 'Sub' $P940 = "233_1271336396.90314" 
-    capture_lex $P940
-    .const 'Sub' $P934 = "231_1271336396.90314" 
+    get_hll_global $P1248, ["NQP";"Regex"], "_block1247" 
+    capture_lex $P1248
+    .const 'Sub' $P1234 = "319_1271948667.92136" 
+    capture_lex $P1234
+    .const 'Sub' $P1228 = "317_1271948667.92136" 
+    capture_lex $P1228
+    .const 'Sub' $P1222 = "315_1271948667.92136" 
+    capture_lex $P1222
+    .const 'Sub' $P1215 = "313_1271948667.92136" 
+    capture_lex $P1215
+    .const 'Sub' $P1208 = "311_1271948667.92136" 
+    capture_lex $P1208
+    .const 'Sub' $P1201 = "309_1271948667.92136" 
+    capture_lex $P1201
+    .const 'Sub' $P1194 = "307_1271948667.92136" 
+    capture_lex $P1194
+    .const 'Sub' $P1188 = "305_1271948667.92136" 
+    capture_lex $P1188
+    .const 'Sub' $P1181 = "303_1271948667.92136" 
+    capture_lex $P1181
+    .const 'Sub' $P1174 = "301_1271948667.92136" 
+    capture_lex $P1174
+    .const 'Sub' $P1167 = "299_1271948667.92136" 
+    capture_lex $P1167
+    .const 'Sub' $P1160 = "297_1271948667.92136" 
+    capture_lex $P1160
+    .const 'Sub' $P1153 = "295_1271948667.92136" 
+    capture_lex $P1153
+    .const 'Sub' $P1146 = "293_1271948667.92136" 
+    capture_lex $P1146
+    .const 'Sub' $P1139 = "291_1271948667.92136" 
+    capture_lex $P1139
+    .const 'Sub' $P1132 = "289_1271948667.92136" 
+    capture_lex $P1132
+    .const 'Sub' $P1125 = "287_1271948667.92136" 
+    capture_lex $P1125
+    .const 'Sub' $P1118 = "285_1271948667.92136" 
+    capture_lex $P1118
+    .const 'Sub' $P1111 = "283_1271948667.92136" 
+    capture_lex $P1111
+    .const 'Sub' $P1104 = "281_1271948667.92136" 
+    capture_lex $P1104
+    .const 'Sub' $P1097 = "279_1271948667.92136" 
+    capture_lex $P1097
+    .const 'Sub' $P1090 = "277_1271948667.92136" 
+    capture_lex $P1090
+    .const 'Sub' $P1083 = "275_1271948667.92136" 
+    capture_lex $P1083
+    .const 'Sub' $P1076 = "273_1271948667.92136" 
+    capture_lex $P1076
+    .const 'Sub' $P1069 = "271_1271948667.92136" 
+    capture_lex $P1069
+    .const 'Sub' $P1062 = "269_1271948667.92136" 
+    capture_lex $P1062
+    .const 'Sub' $P1055 = "267_1271948667.92136" 
+    capture_lex $P1055
+    .const 'Sub' $P1048 = "265_1271948667.92136" 
+    capture_lex $P1048
+    .const 'Sub' $P1041 = "263_1271948667.92136" 
+    capture_lex $P1041
+    .const 'Sub' $P1034 = "261_1271948667.92136" 
+    capture_lex $P1034
+    .const 'Sub' $P1027 = "259_1271948667.92136" 
+    capture_lex $P1027
+    .const 'Sub' $P1020 = "257_1271948667.92136" 
+    capture_lex $P1020
+    .const 'Sub' $P1013 = "255_1271948667.92136" 
+    capture_lex $P1013
+    .const 'Sub' $P1006 = "253_1271948667.92136" 
+    capture_lex $P1006
+    .const 'Sub' $P1000 = "251_1271948667.92136" 
+    capture_lex $P1000
+    .const 'Sub' $P993 = "249_1271948667.92136" 
+    capture_lex $P993
+    .const 'Sub' $P986 = "247_1271948667.92136" 
+    capture_lex $P986
+    .const 'Sub' $P979 = "245_1271948667.92136" 
+    capture_lex $P979
+    .const 'Sub' $P972 = "243_1271948667.92136" 
+    capture_lex $P972
+    .const 'Sub' $P965 = "241_1271948667.92136" 
+    capture_lex $P965
+    .const 'Sub' $P958 = "239_1271948667.92136" 
+    capture_lex $P958
+    .const 'Sub' $P951 = "237_1271948667.92136" 
+    capture_lex $P951
+    .const 'Sub' $P945 = "235_1271948667.92136" 
+    capture_lex $P945
+    .const 'Sub' $P939 = "233_1271948667.92136" 
+    capture_lex $P939
+    .const 'Sub' $P934 = "231_1271948667.92136" 
     capture_lex $P934
-    .const 'Sub' $P929 = "229_1271336396.90314" 
-    capture_lex $P929
-    .const 'Sub' $P923 = "227_1271336396.90314" 
-    capture_lex $P923
-    .const 'Sub' $P917 = "225_1271336396.90314" 
+    .const 'Sub' $P928 = "229_1271948667.92136" 
+    capture_lex $P928
+    .const 'Sub' $P922 = "227_1271948667.92136" 
+    capture_lex $P922
+    .const 'Sub' $P917 = "225_1271948667.92136" 
     capture_lex $P917
-    .const 'Sub' $P912 = "223_1271336396.90314" 
+    .const 'Sub' $P912 = "223_1271948667.92136" 
     capture_lex $P912
-    .const 'Sub' $P907 = "221_1271336396.90314" 
-    capture_lex $P907
-    .const 'Sub' $P900 = "219_1271336396.90314" 
-    capture_lex $P900
-    .const 'Sub' $P892 = "217_1271336396.90314" 
+    .const 'Sub' $P905 = "221_1271948667.92136" 
+    capture_lex $P905
+    .const 'Sub' $P897 = "219_1271948667.92136" 
+    capture_lex $P897
+    .const 'Sub' $P892 = "217_1271948667.92136" 
     capture_lex $P892
-    .const 'Sub' $P887 = "215_1271336396.90314" 
+    .const 'Sub' $P887 = "215_1271948667.92136" 
     capture_lex $P887
-    .const 'Sub' $P882 = "213_1271336396.90314" 
+    .const 'Sub' $P882 = "213_1271948667.92136" 
     capture_lex $P882
-    .const 'Sub' $P877 = "211_1271336396.90314" 
-    capture_lex $P877
-    .const 'Sub' $P869 = "209_1271336396.90314" 
-    capture_lex $P869
-    .const 'Sub' $P861 = "207_1271336396.90314" 
+    .const 'Sub' $P874 = "211_1271948667.92136" 
+    capture_lex $P874
+    .const 'Sub' $P866 = "209_1271948667.92136" 
+    capture_lex $P866
+    .const 'Sub' $P861 = "207_1271948667.92136" 
     capture_lex $P861
-    .const 'Sub' $P856 = "205_1271336396.90314" 
+    .const 'Sub' $P856 = "205_1271948667.92136" 
     capture_lex $P856
-    .const 'Sub' $P851 = "203_1271336396.90314" 
+    .const 'Sub' $P851 = "203_1271948667.92136" 
     capture_lex $P851
-    .const 'Sub' $P845 = "201_1271336396.90314" 
+    .const 'Sub' $P845 = "201_1271948667.92136" 
     capture_lex $P845
-    .const 'Sub' $P839 = "199_1271336396.90314" 
+    .const 'Sub' $P839 = "199_1271948667.92136" 
     capture_lex $P839
-    .const 'Sub' $P833 = "197_1271336396.90314" 
+    .const 'Sub' $P833 = "197_1271948667.92136" 
     capture_lex $P833
-    .const 'Sub' $P827 = "195_1271336396.90314" 
+    .const 'Sub' $P827 = "195_1271948667.92136" 
     capture_lex $P827
-    .const 'Sub' $P821 = "193_1271336396.90314" 
+    .const 'Sub' $P821 = "193_1271948667.92136" 
     capture_lex $P821
-    .const 'Sub' $P816 = "191_1271336396.90314" 
+    .const 'Sub' $P816 = "191_1271948667.92136" 
     capture_lex $P816
-    .const 'Sub' $P811 = "189_1271336396.90314" 
+    .const 'Sub' $P811 = "189_1271948667.92136" 
     capture_lex $P811
-    .const 'Sub' $P798 = "185_1271336396.90314" 
+    .const 'Sub' $P798 = "185_1271948667.92136" 
     capture_lex $P798
-    .const 'Sub' $P790 = "183_1271336396.90314" 
+    .const 'Sub' $P790 = "183_1271948667.92136" 
     capture_lex $P790
-    .const 'Sub' $P784 = "181_1271336396.90314" 
+    .const 'Sub' $P784 = "181_1271948667.92136" 
     capture_lex $P784
-    .const 'Sub' $P777 = "179_1271336396.90314" 
+    .const 'Sub' $P777 = "179_1271948667.92136" 
     capture_lex $P777
-    .const 'Sub' $P771 = "177_1271336396.90314" 
+    .const 'Sub' $P771 = "177_1271948667.92136" 
     capture_lex $P771
-    .const 'Sub' $P763 = "175_1271336396.90314" 
+    .const 'Sub' $P763 = "175_1271948667.92136" 
     capture_lex $P763
-    .const 'Sub' $P755 = "173_1271336396.90314" 
+    .const 'Sub' $P755 = "173_1271948667.92136" 
     capture_lex $P755
-    .const 'Sub' $P749 = "171_1271336396.90314" 
+    .const 'Sub' $P749 = "171_1271948667.92136" 
     capture_lex $P749
-    .const 'Sub' $P743 = "169_1271336396.90314" 
+    .const 'Sub' $P743 = "169_1271948667.92136" 
     capture_lex $P743
-    .const 'Sub' $P728 = "165_1271336396.90314" 
+    .const 'Sub' $P728 = "165_1271948667.92136" 
     capture_lex $P728
-    .const 'Sub' $P691 = "163_1271336396.90314" 
+    .const 'Sub' $P691 = "163_1271948667.92136" 
     capture_lex $P691
-    .const 'Sub' $P683 = "161_1271336396.90314" 
+    .const 'Sub' $P683 = "161_1271948667.92136" 
     capture_lex $P683
-    .const 'Sub' $P677 = "159_1271336396.90314" 
+    .const 'Sub' $P677 = "159_1271948667.92136" 
     capture_lex $P677
-    .const 'Sub' $P667 = "157_1271336396.90314" 
+    .const 'Sub' $P667 = "157_1271948667.92136" 
     capture_lex $P667
-    .const 'Sub' $P652 = "155_1271336396.90314" 
+    .const 'Sub' $P652 = "155_1271948667.92136" 
     capture_lex $P652
-    .const 'Sub' $P643 = "153_1271336396.90314" 
+    .const 'Sub' $P643 = "153_1271948667.92136" 
     capture_lex $P643
-    .const 'Sub' $P624 = "151_1271336396.90314" 
+    .const 'Sub' $P624 = "151_1271948667.92136" 
     capture_lex $P624
-    .const 'Sub' $P600 = "149_1271336396.90314" 
+    .const 'Sub' $P600 = "149_1271948667.92136" 
     capture_lex $P600
-    .const 'Sub' $P593 = "147_1271336396.90314" 
+    .const 'Sub' $P593 = "147_1271948667.92136" 
     capture_lex $P593
-    .const 'Sub' $P586 = "145_1271336396.90314" 
+    .const 'Sub' $P586 = "145_1271948667.92136" 
     capture_lex $P586
-    .const 'Sub' $P576 = "141_1271336396.90314" 
+    .const 'Sub' $P576 = "141_1271948667.92136" 
     capture_lex $P576
-    .const 'Sub' $P565 = "139_1271336396.90314" 
+    .const 'Sub' $P565 = "139_1271948667.92136" 
     capture_lex $P565
-    .const 'Sub' $P558 = "137_1271336396.90314" 
+    .const 'Sub' $P558 = "137_1271948667.92136" 
     capture_lex $P558
-    .const 'Sub' $P551 = "135_1271336396.90314" 
+    .const 'Sub' $P551 = "135_1271948667.92136" 
     capture_lex $P551
-    .const 'Sub' $P544 = "133_1271336396.90314" 
+    .const 'Sub' $P544 = "133_1271948667.92136" 
     capture_lex $P544
-    .const 'Sub' $P517 = "129_1271336396.90314" 
+    .const 'Sub' $P517 = "129_1271948667.92136" 
     capture_lex $P517
-    .const 'Sub' $P508 = "127_1271336396.90314" 
+    .const 'Sub' $P508 = "127_1271948667.92136" 
     capture_lex $P508
-    .const 'Sub' $P501 = "125_1271336396.90314" 
+    .const 'Sub' $P501 = "125_1271948667.92136" 
     capture_lex $P501
-    .const 'Sub' $P492 = "121_1271336396.90314" 
+    .const 'Sub' $P492 = "121_1271948667.92136" 
     capture_lex $P492
-    .const 'Sub' $P487 = "119_1271336396.90314" 
+    .const 'Sub' $P487 = "119_1271948667.92136" 
     capture_lex $P487
-    .const 'Sub' $P475 = "117_1271336396.90314" 
+    .const 'Sub' $P475 = "117_1271948667.92136" 
     capture_lex $P475
-    .const 'Sub' $P463 = "115_1271336396.90314" 
+    .const 'Sub' $P463 = "115_1271948667.92136" 
     capture_lex $P463
-    .const 'Sub' $P455 = "113_1271336396.90314" 
+    .const 'Sub' $P455 = "113_1271948667.92136" 
     capture_lex $P455
-    .const 'Sub' $P450 = "111_1271336396.90314" 
+    .const 'Sub' $P450 = "111_1271948667.92136" 
     capture_lex $P450
-    .const 'Sub' $P444 = "109_1271336396.90314" 
+    .const 'Sub' $P444 = "109_1271948667.92136" 
     capture_lex $P444
-    .const 'Sub' $P438 = "107_1271336396.90314" 
+    .const 'Sub' $P438 = "107_1271948667.92136" 
     capture_lex $P438
-    .const 'Sub' $P432 = "105_1271336396.90314" 
+    .const 'Sub' $P432 = "105_1271948667.92136" 
     capture_lex $P432
-    .const 'Sub' $P426 = "103_1271336396.90314" 
+    .const 'Sub' $P426 = "103_1271948667.92136" 
     capture_lex $P426
-    .const 'Sub' $P420 = "101_1271336396.90314" 
+    .const 'Sub' $P420 = "101_1271948667.92136" 
     capture_lex $P420
-    .const 'Sub' $P414 = "99_1271336396.90314" 
+    .const 'Sub' $P414 = "99_1271948667.92136" 
     capture_lex $P414
-    .const 'Sub' $P408 = "97_1271336396.90314" 
+    .const 'Sub' $P408 = "97_1271948667.92136" 
     capture_lex $P408
-    .const 'Sub' $P402 = "95_1271336396.90314" 
+    .const 'Sub' $P402 = "95_1271948667.92136" 
     capture_lex $P402
-    .const 'Sub' $P394 = "93_1271336396.90314" 
+    .const 'Sub' $P394 = "93_1271948667.92136" 
     capture_lex $P394
-    .const 'Sub' $P386 = "91_1271336396.90314" 
+    .const 'Sub' $P386 = "91_1271948667.92136" 
     capture_lex $P386
-    .const 'Sub' $P374 = "87_1271336396.90314" 
+    .const 'Sub' $P374 = "87_1271948667.92136" 
     capture_lex $P374
-    .const 'Sub' $P366 = "85_1271336396.90314" 
+    .const 'Sub' $P366 = "85_1271948667.92136" 
     capture_lex $P366
-    .const 'Sub' $P356 = "81_1271336396.90314" 
+    .const 'Sub' $P356 = "81_1271948667.92136" 
     capture_lex $P356
-    .const 'Sub' $P349 = "79_1271336396.90314" 
+    .const 'Sub' $P349 = "79_1271948667.92136" 
     capture_lex $P349
-    .const 'Sub' $P342 = "77_1271336396.90314" 
+    .const 'Sub' $P342 = "77_1271948667.92136" 
     capture_lex $P342
-    .const 'Sub' $P330 = "73_1271336396.90314" 
+    .const 'Sub' $P330 = "73_1271948667.92136" 
     capture_lex $P330
-    .const 'Sub' $P322 = "71_1271336396.90314" 
+    .const 'Sub' $P322 = "71_1271948667.92136" 
     capture_lex $P322
-    .const 'Sub' $P314 = "69_1271336396.90314" 
+    .const 'Sub' $P314 = "69_1271948667.92136" 
     capture_lex $P314
-    .const 'Sub' $P294 = "67_1271336396.90314" 
+    .const 'Sub' $P294 = "67_1271948667.92136" 
     capture_lex $P294
-    .const 'Sub' $P285 = "65_1271336396.90314" 
+    .const 'Sub' $P285 = "65_1271948667.92136" 
     capture_lex $P285
-    .const 'Sub' $P267 = "62_1271336396.90314" 
+    .const 'Sub' $P267 = "62_1271948667.92136" 
     capture_lex $P267
-    .const 'Sub' $P247 = "60_1271336396.90314" 
+    .const 'Sub' $P247 = "60_1271948667.92136" 
     capture_lex $P247
-    .const 'Sub' $P238 = "56_1271336396.90314" 
+    .const 'Sub' $P238 = "56_1271948667.92136" 
     capture_lex $P238
-    .const 'Sub' $P233 = "54_1271336396.90314" 
+    .const 'Sub' $P233 = "54_1271948667.92136" 
     capture_lex $P233
-    .const 'Sub' $P224 = "50_1271336396.90314" 
+    .const 'Sub' $P224 = "50_1271948667.92136" 
     capture_lex $P224
-    .const 'Sub' $P219 = "48_1271336396.90314" 
+    .const 'Sub' $P219 = "48_1271948667.92136" 
     capture_lex $P219
-    .const 'Sub' $P211 = "46_1271336396.90314" 
+    .const 'Sub' $P211 = "46_1271948667.92136" 
     capture_lex $P211
-    .const 'Sub' $P204 = "44_1271336396.90314" 
+    .const 'Sub' $P204 = "44_1271948667.92136" 
     capture_lex $P204
-    .const 'Sub' $P198 = "42_1271336396.90314" 
+    .const 'Sub' $P198 = "42_1271948667.92136" 
     capture_lex $P198
-    .const 'Sub' $P190 = "40_1271336396.90314" 
+    .const 'Sub' $P190 = "40_1271948667.92136" 
     capture_lex $P190
-    .const 'Sub' $P184 = "38_1271336396.90314" 
+    .const 'Sub' $P184 = "38_1271948667.92136" 
     capture_lex $P184
-    .const 'Sub' $P178 = "36_1271336396.90314" 
+    .const 'Sub' $P178 = "36_1271948667.92136" 
     capture_lex $P178
-    .const 'Sub' $P162 = "33_1271336396.90314" 
+    .const 'Sub' $P162 = "33_1271948667.92136" 
     capture_lex $P162
-    .const 'Sub' $P149 = "31_1271336396.90314" 
+    .const 'Sub' $P149 = "31_1271948667.92136" 
     capture_lex $P149
-    .const 'Sub' $P142 = "29_1271336396.90314" 
+    .const 'Sub' $P142 = "29_1271948667.92136" 
     capture_lex $P142
-    .const 'Sub' $P96 = "26_1271336396.90314" 
+    .const 'Sub' $P96 = "26_1271948667.92136" 
     capture_lex $P96
-    .const 'Sub' $P78 = "23_1271336396.90314" 
+    .const 'Sub' $P78 = "23_1271948667.92136" 
     capture_lex $P78
-    .const 'Sub' $P68 = "21_1271336396.90314" 
+    .const 'Sub' $P68 = "21_1271948667.92136" 
     capture_lex $P68
-    .const 'Sub' $P54 = "19_1271336396.90314" 
+    .const 'Sub' $P54 = "19_1271948667.92136" 
     capture_lex $P54
-    .const 'Sub' $P46 = "17_1271336396.90314" 
+    .const 'Sub' $P46 = "17_1271948667.92136" 
     capture_lex $P46
-    .const 'Sub' $P39 = "15_1271336396.90314" 
+    .const 'Sub' $P39 = "15_1271948667.92136" 
     capture_lex $P39
-    .const 'Sub' $P33 = "13_1271336396.90314" 
+    .const 'Sub' $P33 = "13_1271948667.92136" 
     capture_lex $P33
-    .const 'Sub' $P15 = "12_1271336396.90314" 
+    .const 'Sub' $P15 = "12_1271948667.92136" 
     capture_lex $P15
-.annotate "line", 535
-    get_hll_global $P1243, ["NQP";"Regex"], "_block1242" 
-    capture_lex $P1243
-    $P1282 = $P1243()
+.annotate "line", 536
+    get_hll_global $P1248, ["NQP";"Regex"], "_block1247" 
+    capture_lex $P1248
+    $P1287 = $P1248()
 .annotate "line", 4
-    .return ($P1282)
+    .return ($P1287)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "" :load :init :subid("post332") :outer("11_1271336396.90314")
+.sub "" :load :init :subid("post334") :outer("11_1271948667.92136")
 .annotate "line", 4
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     .local pmc block
     set block, $P14
-.annotate "line", 422
-    get_hll_global $P1283, ["NQP"], "Grammar"
-    $P1283."O"(":prec<y=>, :assoc<unary>", "%methodop")
 .annotate "line", 423
-    get_hll_global $P1284, ["NQP"], "Grammar"
-    $P1284."O"(":prec<x=>, :assoc<unary>", "%autoincrement")
+    get_hll_global $P1288, ["NQP"], "Grammar"
+    $P1288."O"(":prec<y=>, :assoc<unary>", "%methodop")
 .annotate "line", 424
-    get_hll_global $P1285, ["NQP"], "Grammar"
-    $P1285."O"(":prec<w=>, :assoc<left>", "%exponentiation")
+    get_hll_global $P1289, ["NQP"], "Grammar"
+    $P1289."O"(":prec<x=>, :assoc<unary>", "%autoincrement")
 .annotate "line", 425
-    get_hll_global $P1286, ["NQP"], "Grammar"
-    $P1286."O"(":prec<v=>, :assoc<unary>", "%symbolic_unary")
+    get_hll_global $P1290, ["NQP"], "Grammar"
+    $P1290."O"(":prec<w=>, :assoc<left>", "%exponentiation")
 .annotate "line", 426
-    get_hll_global $P1287, ["NQP"], "Grammar"
-    $P1287."O"(":prec<u=>, :assoc<left>", "%multiplicative")
+    get_hll_global $P1291, ["NQP"], "Grammar"
+    $P1291."O"(":prec<v=>, :assoc<unary>", "%symbolic_unary")
 .annotate "line", 427
-    get_hll_global $P1288, ["NQP"], "Grammar"
-    $P1288."O"(":prec<t=>, :assoc<left>", "%additive")
+    get_hll_global $P1292, ["NQP"], "Grammar"
+    $P1292."O"(":prec<u=>, :assoc<left>", "%multiplicative")
 .annotate "line", 428
-    get_hll_global $P1289, ["NQP"], "Grammar"
-    $P1289."O"(":prec<r=>, :assoc<left>", "%concatenation")
+    get_hll_global $P1293, ["NQP"], "Grammar"
+    $P1293."O"(":prec<t=>, :assoc<left>", "%additive")
 .annotate "line", 429
-    get_hll_global $P1290, ["NQP"], "Grammar"
-    $P1290."O"(":prec<m=>, :assoc<left>", "%relational")
+    get_hll_global $P1294, ["NQP"], "Grammar"
+    $P1294."O"(":prec<r=>, :assoc<left>", "%concatenation")
 .annotate "line", 430
-    get_hll_global $P1291, ["NQP"], "Grammar"
-    $P1291."O"(":prec<l=>, :assoc<left>", "%tight_and")
+    get_hll_global $P1295, ["NQP"], "Grammar"
+    $P1295."O"(":prec<m=>, :assoc<left>", "%relational")
 .annotate "line", 431
-    get_hll_global $P1292, ["NQP"], "Grammar"
-    $P1292."O"(":prec<k=>, :assoc<left>", "%tight_or")
+    get_hll_global $P1296, ["NQP"], "Grammar"
+    $P1296."O"(":prec<l=>, :assoc<left>", "%tight_and")
 .annotate "line", 432
-    get_hll_global $P1293, ["NQP"], "Grammar"
-    $P1293."O"(":prec<j=>, :assoc<right>", "%conditional")
+    get_hll_global $P1297, ["NQP"], "Grammar"
+    $P1297."O"(":prec<k=>, :assoc<left>", "%tight_or")
 .annotate "line", 433
-    get_hll_global $P1294, ["NQP"], "Grammar"
-    $P1294."O"(":prec<i=>, :assoc<right>", "%assignment")
+    get_hll_global $P1298, ["NQP"], "Grammar"
+    $P1298."O"(":prec<j=>, :assoc<right>", "%conditional")
 .annotate "line", 434
-    get_hll_global $P1295, ["NQP"], "Grammar"
-    $P1295."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
+    get_hll_global $P1299, ["NQP"], "Grammar"
+    $P1299."O"(":prec<i=>, :assoc<right>", "%assignment")
 .annotate "line", 435
-    get_hll_global $P1296, ["NQP"], "Grammar"
-    $P1296."O"(":prec<f=>, :assoc<list>", "%list_infix")
+    get_hll_global $P1300, ["NQP"], "Grammar"
+    $P1300."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
 .annotate "line", 436
-    get_hll_global $P1297, ["NQP"], "Grammar"
-    $P1297."O"(":prec<e=>, :assoc<unary>", "%list_prefix")
-.annotate "line", 421
-    $P1298 = get_root_global ["parrot"], "P6metaclass"
-    $P1298."new_class"("NQP::Regex", "Regex::P6Regex::Grammar" :named("parent"))
+    get_hll_global $P1301, ["NQP"], "Grammar"
+    $P1301."O"(":prec<f=>, :assoc<list>", "%list_infix")
+.annotate "line", 437
+    get_hll_global $P1302, ["NQP"], "Grammar"
+    $P1302."O"(":prec<e=>, :assoc<unary>", "%list_prefix")
+.annotate "line", 422
+    $P1303 = get_root_global ["parrot"], "P6metaclass"
+    $P1303."new_class"("NQP::Regex", "Regex::P6Regex::Grammar" :named("parent"))
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "TOP"  :subid("12_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "TOP"  :subid("12_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     new $P17, 'ExceptionHandler'
     set_addr $P17, control_16
@@ -410,55 +412,55 @@
     .lex "$*SCOPE", $P19
 .annotate "line", 4
     find_lex $P20, "%*LANG"
-    unless_null $P20, vivify_333
+    unless_null $P20, vivify_335
     get_hll_global $P20, "%LANG"
-    unless_null $P20, vivify_334
+    unless_null $P20, vivify_336
     die "Contextual %*LANG not found"
-  vivify_334:
-  vivify_333:
+  vivify_336:
+  vivify_335:
 .annotate "line", 6
     get_hll_global $P21, ["NQP"], "Regex"
     find_lex $P22, "%*LANG"
-    unless_null $P22, vivify_335
+    unless_null $P22, vivify_337
     get_hll_global $P22, "%LANG"
-    unless_null $P22, vivify_336
+    unless_null $P22, vivify_338
     die "Contextual %*LANG not found"
-  vivify_336:
+  vivify_338:
     store_lex "%*LANG", $P22
-  vivify_335:
+  vivify_337:
     set $P22["Regex"], $P21
 .annotate "line", 7
     get_hll_global $P23, ["NQP"], "RegexActions"
     find_lex $P24, "%*LANG"
-    unless_null $P24, vivify_337
+    unless_null $P24, vivify_339
     get_hll_global $P24, "%LANG"
-    unless_null $P24, vivify_338
+    unless_null $P24, vivify_340
     die "Contextual %*LANG not found"
-  vivify_338:
+  vivify_340:
     store_lex "%*LANG", $P24
-  vivify_337:
+  vivify_339:
     set $P24["Regex-actions"], $P23
 .annotate "line", 8
     get_hll_global $P25, ["NQP"], "Grammar"
     find_lex $P26, "%*LANG"
-    unless_null $P26, vivify_339
+    unless_null $P26, vivify_341
     get_hll_global $P26, "%LANG"
-    unless_null $P26, vivify_340
+    unless_null $P26, vivify_342
     die "Contextual %*LANG not found"
-  vivify_340:
+  vivify_342:
     store_lex "%*LANG", $P26
-  vivify_339:
+  vivify_341:
     set $P26["MAIN"], $P25
 .annotate "line", 9
     get_hll_global $P27, ["NQP"], "Actions"
     find_lex $P28, "%*LANG"
-    unless_null $P28, vivify_341
+    unless_null $P28, vivify_343
     get_hll_global $P28, "%LANG"
-    unless_null $P28, vivify_342
+    unless_null $P28, vivify_344
     die "Contextual %*LANG not found"
-  vivify_342:
+  vivify_344:
     store_lex "%*LANG", $P28
-  vivify_341:
+  vivify_343:
     set $P28["MAIN-actions"], $P27
 .annotate "line", 10
     new $P29, "String"
@@ -478,7 +480,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "identifier"  :subid("13_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "identifier"  :subid("13_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx34_tgt
     .local int rx34_pos
@@ -536,7 +538,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__identifier"  :subid("14_1271336396.90314") :method
+.sub "!PREFIX__identifier"  :subid("14_1271948667.92136") :method
 .annotate "line", 4
     $P36 = self."!PREFIX__!subrule"("ident", "")
     new $P37, "ResizablePMCArray"
@@ -546,7 +548,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "name"  :subid("15_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "name"  :subid("15_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx40_tgt
     .local int rx40_pos
@@ -620,7 +622,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__name"  :subid("16_1271336396.90314") :method
+.sub "!PREFIX__name"  :subid("16_1271948667.92136") :method
 .annotate "line", 4
     new $P42, "ResizablePMCArray"
     push $P42, ""
@@ -629,7 +631,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "deflongname"  :subid("17_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "deflongname"  :subid("17_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx47_tgt
     .local int rx47_pos
@@ -702,7 +704,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__deflongname"  :subid("18_1271336396.90314") :method
+.sub "!PREFIX__deflongname"  :subid("18_1271948667.92136") :method
 .annotate "line", 4
     $P49 = self."!PREFIX__!subrule"("identifier", "")
     new $P50, "ResizablePMCArray"
@@ -712,7 +714,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ENDSTMT"  :subid("19_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "ENDSTMT"  :subid("19_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx55_tgt
     .local int rx55_pos
@@ -844,7 +846,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ENDSTMT"  :subid("20_1271336396.90314") :method
+.sub "!PREFIX__ENDSTMT"  :subid("20_1271948667.92136") :method
 .annotate "line", 4
     new $P57, "ResizablePMCArray"
     push $P57, ""
@@ -853,7 +855,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ws"  :subid("21_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "ws"  :subid("21_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx69_tgt
     .local int rx69_pos
@@ -979,7 +981,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ws"  :subid("22_1271336396.90314") :method
+.sub "!PREFIX__ws"  :subid("22_1271948667.92136") :method
 .annotate "line", 4
     new $P71, "ResizablePMCArray"
     push $P71, ""
@@ -989,9 +991,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "unv"  :subid("23_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "unv"  :subid("23_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
-    .const 'Sub' $P86 = "25_1271336396.90314" 
+    .const 'Sub' $P86 = "25_1271948667.92136" 
     capture_lex $P86
     .local string rx79_tgt
     .local int rx79_pos
@@ -1037,7 +1039,7 @@
   rxanchor84_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx79_cur."!cursor_pos"(rx79_pos)
-    .const 'Sub' $P86 = "25_1271336396.90314" 
+    .const 'Sub' $P86 = "25_1271948667.92136" 
     capture_lex $P86
     $P10 = rx79_cur."before"($P86)
     unless $P10, rx79_fail
@@ -1116,7 +1118,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__unv"  :subid("24_1271336396.90314") :method
+.sub "!PREFIX__unv"  :subid("24_1271948667.92136") :method
 .annotate "line", 4
     new $P81, "ResizablePMCArray"
     push $P81, ""
@@ -1127,7 +1129,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block85"  :anon :subid("25_1271336396.90314") :method :outer("23_1271336396.90314")
+.sub "_block85"  :anon :subid("25_1271948667.92136") :method :outer("23_1271948667.92136")
 .annotate "line", 44
     .local string rx87_tgt
     .local int rx87_pos
@@ -1217,9 +1219,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pod_comment"  :subid("26_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "pod_comment"  :subid("26_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
-    .const 'Sub' $P133 = "28_1271336396.90314" 
+    .const 'Sub' $P133 = "28_1271948667.92136" 
     capture_lex $P133
     .local string rx97_tgt
     .local int rx97_pos
@@ -1675,7 +1677,7 @@
   rxanchor131_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx97_cur."!cursor_pos"(rx97_pos)
-    .const 'Sub' $P133 = "28_1271336396.90314" 
+    .const 'Sub' $P133 = "28_1271948667.92136" 
     capture_lex $P133
     $P10 = rx97_cur."before"($P133)
     unless $P10, rx97_fail
@@ -1726,7 +1728,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pod_comment"  :subid("27_1271336396.90314") :method
+.sub "!PREFIX__pod_comment"  :subid("27_1271948667.92136") :method
 .annotate "line", 4
     new $P99, "ResizablePMCArray"
     push $P99, ""
@@ -1735,7 +1737,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block132"  :anon :subid("28_1271336396.90314") :method :outer("26_1271336396.90314")
+.sub "_block132"  :anon :subid("28_1271948667.92136") :method :outer("26_1271948667.92136")
 .annotate "line", 67
     .local string rx134_tgt
     .local int rx134_pos
@@ -1854,7 +1856,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "comp_unit"  :subid("29_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "comp_unit"  :subid("29_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx143_tgt
     .local int rx143_pos
@@ -1933,7 +1935,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__comp_unit"  :subid("30_1271336396.90314") :method
+.sub "!PREFIX__comp_unit"  :subid("30_1271948667.92136") :method
 .annotate "line", 4
     $P145 = self."!PREFIX__!subrule"("", "")
     new $P146, "ResizablePMCArray"
@@ -1943,7 +1945,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statementlist"  :subid("31_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statementlist"  :subid("31_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx150_tgt
     .local int rx150_pos
@@ -2051,7 +2053,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statementlist"  :subid("32_1271336396.90314") :method
+.sub "!PREFIX__statementlist"  :subid("32_1271948667.92136") :method
 .annotate "line", 4
     new $P152, "ResizablePMCArray"
     push $P152, ""
@@ -2061,9 +2063,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement"  :subid("33_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement"  :subid("33_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
-    .const 'Sub' $P168 = "35_1271336396.90314" 
+    .const 'Sub' $P168 = "35_1271948667.92136" 
     capture_lex $P168
     .local string rx163_tgt
     .local int rx163_pos
@@ -2073,7 +2075,7 @@
     .local pmc rx163_cur
     (rx163_cur, rx163_pos, rx163_tgt) = self."!cursor_start"()
     rx163_cur."!cursor_debug"("START ", "statement")
-    rx163_cur."!cursor_caparray"("statement_mod_loop", "statement_mod_cond")
+    rx163_cur."!cursor_caparray"("statement_mod_cond", "statement_mod_loop")
     .lex unicode:"$\x{a2}", rx163_cur
     .local pmc match
     .lex "$/", match
@@ -2098,7 +2100,7 @@
 .annotate "line", 93
   # rx subrule "before" subtype=zerowidth negate=1
     rx163_cur."!cursor_pos"(rx163_pos)
-    .const 'Sub' $P168 = "35_1271336396.90314" 
+    .const 'Sub' $P168 = "35_1271948667.92136" 
     capture_lex $P168
     $P10 = rx163_cur."before"($P168)
     if $P10, rx163_fail
@@ -2203,7 +2205,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement"  :subid("34_1271336396.90314") :method
+.sub "!PREFIX__statement"  :subid("34_1271948667.92136") :method
 .annotate "line", 4
     new $P165, "ResizablePMCArray"
     push $P165, ""
@@ -2212,7 +2214,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block167"  :anon :subid("35_1271336396.90314") :method :outer("33_1271336396.90314")
+.sub "_block167"  :anon :subid("35_1271948667.92136") :method :outer("33_1271948667.92136")
 .annotate "line", 93
     .local string rx169_tgt
     .local int rx169_pos
@@ -2276,7 +2278,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "eat_terminator"  :subid("36_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "eat_terminator"  :subid("36_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx179_tgt
     .local int rx179_pos
@@ -2363,7 +2365,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__eat_terminator"  :subid("37_1271336396.90314") :method
+.sub "!PREFIX__eat_terminator"  :subid("37_1271948667.92136") :method
 .annotate "line", 4
     new $P181, "ResizablePMCArray"
     push $P181, ""
@@ -2375,7 +2377,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "xblock"  :subid("38_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "xblock"  :subid("38_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx185_tgt
     .local int rx185_pos
@@ -2446,7 +2448,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__xblock"  :subid("39_1271336396.90314") :method
+.sub "!PREFIX__xblock"  :subid("39_1271948667.92136") :method
 .annotate "line", 4
     $P187 = self."!PREFIX__!subrule"("EXPR", "")
     new $P188, "ResizablePMCArray"
@@ -2456,7 +2458,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pblock"  :subid("40_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "pblock"  :subid("40_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx191_tgt
     .local int rx191_pos
@@ -2575,7 +2577,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pblock"  :subid("41_1271336396.90314") :method
+.sub "!PREFIX__pblock"  :subid("41_1271948667.92136") :method
 .annotate "line", 4
     $P193 = self."!PREFIX__!subrule"("", "")
     $P194 = self."!PREFIX__!subrule"("", "")
@@ -2588,7 +2590,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "lambda"  :subid("42_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "lambda"  :subid("42_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx199_tgt
     .local int rx199_pos
@@ -2659,7 +2661,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__lambda"  :subid("43_1271336396.90314") :method
+.sub "!PREFIX__lambda"  :subid("43_1271948667.92136") :method
 .annotate "line", 4
     new $P201, "ResizablePMCArray"
     push $P201, "<->"
@@ -2669,7 +2671,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "block"  :subid("44_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "block"  :subid("44_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx205_tgt
     .local int rx205_pos
@@ -2752,7 +2754,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__block"  :subid("45_1271336396.90314") :method
+.sub "!PREFIX__block"  :subid("45_1271948667.92136") :method
 .annotate "line", 4
     $P207 = self."!PREFIX__!subrule"("", "")
     new $P208, "ResizablePMCArray"
@@ -2763,7 +2765,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blockoid"  :subid("46_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "blockoid"  :subid("46_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx212_tgt
     .local int rx212_pos
@@ -2858,7 +2860,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blockoid"  :subid("47_1271336396.90314") :method
+.sub "!PREFIX__blockoid"  :subid("47_1271948667.92136") :method
 .annotate "line", 4
     $P214 = self."!PREFIX__!subrule"("", "")
     new $P215, "ResizablePMCArray"
@@ -2868,7 +2870,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "newpad"  :subid("48_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "newpad"  :subid("48_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx220_tgt
     .local int rx220_pos
@@ -2919,7 +2921,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__newpad"  :subid("49_1271336396.90314") :method
+.sub "!PREFIX__newpad"  :subid("49_1271948667.92136") :method
 .annotate "line", 4
     new $P222, "ResizablePMCArray"
     push $P222, ""
@@ -2928,7 +2930,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "finishpad"  :subid("50_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "finishpad"  :subid("50_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx225_tgt
     .local int rx225_pos
@@ -2979,7 +2981,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__finishpad"  :subid("51_1271336396.90314") :method
+.sub "!PREFIX__finishpad"  :subid("51_1271948667.92136") :method
 .annotate "line", 4
     new $P227, "ResizablePMCArray"
     push $P227, ""
@@ -2988,7 +2990,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator"  :subid("52_1271336396.90314") :method
+.sub "terminator"  :subid("52_1271948667.92136") :method
 .annotate "line", 144
     $P230 = self."!protoregex"("terminator")
     .return ($P230)
@@ -2996,7 +2998,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator"  :subid("53_1271336396.90314") :method
+.sub "!PREFIX__terminator"  :subid("53_1271948667.92136") :method
 .annotate "line", 144
     $P232 = self."!PREFIX__!protoregex"("terminator")
     .return ($P232)
@@ -3004,7 +3006,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<;>"  :subid("54_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "terminator:sym<;>"  :subid("54_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx234_tgt
     .local int rx234_pos
@@ -3061,7 +3063,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<;>"  :subid("55_1271336396.90314") :method
+.sub "!PREFIX__terminator:sym<;>"  :subid("55_1271948667.92136") :method
 .annotate "line", 4
     new $P236, "ResizablePMCArray"
     push $P236, ";"
@@ -3070,7 +3072,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<}>"  :subid("56_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "terminator:sym<}>"  :subid("56_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx239_tgt
     .local int rx239_pos
@@ -3127,7 +3129,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<}>"  :subid("57_1271336396.90314") :method
+.sub "!PREFIX__terminator:sym<}>"  :subid("57_1271948667.92136") :method
 .annotate "line", 4
     new $P241, "ResizablePMCArray"
     push $P241, "}"
@@ -3136,7 +3138,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control"  :subid("58_1271336396.90314") :method
+.sub "statement_control"  :subid("58_1271948667.92136") :method
 .annotate "line", 151
     $P244 = self."!protoregex"("statement_control")
     .return ($P244)
@@ -3144,7 +3146,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control"  :subid("59_1271336396.90314") :method
+.sub "!PREFIX__statement_control"  :subid("59_1271948667.92136") :method
 .annotate "line", 151
     $P246 = self."!PREFIX__!protoregex"("statement_control")
     .return ($P246)
@@ -3152,7 +3154,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<if>"  :subid("60_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_control:sym<if>"  :subid("60_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx248_tgt
     .local int rx248_pos
@@ -3346,7 +3348,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<if>"  :subid("61_1271336396.90314") :method
+.sub "!PREFIX__statement_control:sym<if>"  :subid("61_1271948667.92136") :method
 .annotate "line", 4
     new $P250, "ResizablePMCArray"
     push $P250, "if"
@@ -3355,9 +3357,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<unless>"  :subid("62_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_control:sym<unless>"  :subid("62_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
-    .const 'Sub' $P278 = "64_1271336396.90314" 
+    .const 'Sub' $P278 = "64_1271948667.92136" 
     capture_lex $P278
     .local string rx268_tgt
     .local int rx268_pos
@@ -3445,7 +3447,7 @@
     rx268_pos = $P10."pos"()
   # rx subrule "before" subtype=zerowidth negate=1
     rx268_cur."!cursor_pos"(rx268_pos)
-    .const 'Sub' $P278 = "64_1271336396.90314" 
+    .const 'Sub' $P278 = "64_1271948667.92136" 
     capture_lex $P278
     $P10 = rx268_cur."before"($P278)
     if $P10, rx268_fail
@@ -3497,7 +3499,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<unless>"  :subid("63_1271336396.90314") :method
+.sub "!PREFIX__statement_control:sym<unless>"  :subid("63_1271948667.92136") :method
 .annotate "line", 4
     new $P270, "ResizablePMCArray"
     push $P270, "unless"
@@ -3506,7 +3508,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block277"  :anon :subid("64_1271336396.90314") :method :outer("62_1271336396.90314")
+.sub "_block277"  :anon :subid("64_1271948667.92136") :method :outer("62_1271948667.92136")
 .annotate "line", 163
     .local string rx279_tgt
     .local int rx279_pos
@@ -3562,7 +3564,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<while>"  :subid("65_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_control:sym<while>"  :subid("65_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx286_tgt
     .local int rx286_pos
@@ -3672,7 +3674,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<while>"  :subid("66_1271336396.90314") :method
+.sub "!PREFIX__statement_control:sym<while>"  :subid("66_1271948667.92136") :method
 .annotate "line", 4
     new $P288, "ResizablePMCArray"
     push $P288, "until"
@@ -3682,7 +3684,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<repeat>"  :subid("67_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_control:sym<repeat>"  :subid("67_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx295_tgt
     .local int rx295_pos
@@ -3917,7 +3919,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<repeat>"  :subid("68_1271336396.90314") :method
+.sub "!PREFIX__statement_control:sym<repeat>"  :subid("68_1271948667.92136") :method
 .annotate "line", 4
     new $P297, "ResizablePMCArray"
     push $P297, "repeat"
@@ -3926,7 +3928,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<for>"  :subid("69_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_control:sym<for>"  :subid("69_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx315_tgt
     .local int rx315_pos
@@ -4023,7 +4025,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<for>"  :subid("70_1271336396.90314") :method
+.sub "!PREFIX__statement_control:sym<for>"  :subid("70_1271948667.92136") :method
 .annotate "line", 4
     new $P317, "ResizablePMCArray"
     push $P317, "for"
@@ -4032,7 +4034,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CATCH>"  :subid("71_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_control:sym<CATCH>"  :subid("71_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx323_tgt
     .local int rx323_pos
@@ -4129,7 +4131,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CATCH>"  :subid("72_1271336396.90314") :method
+.sub "!PREFIX__statement_control:sym<CATCH>"  :subid("72_1271948667.92136") :method
 .annotate "line", 4
     new $P325, "ResizablePMCArray"
     push $P325, "CATCH"
@@ -4138,7 +4140,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CONTROL>"  :subid("73_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_control:sym<CONTROL>"  :subid("73_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx331_tgt
     .local int rx331_pos
@@ -4235,7 +4237,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CONTROL>"  :subid("74_1271336396.90314") :method
+.sub "!PREFIX__statement_control:sym<CONTROL>"  :subid("74_1271948667.92136") :method
 .annotate "line", 4
     new $P333, "ResizablePMCArray"
     push $P333, "CONTROL"
@@ -4244,7 +4246,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix"  :subid("75_1271336396.90314") :method
+.sub "statement_prefix"  :subid("75_1271948667.92136") :method
 .annotate "line", 194
     $P339 = self."!protoregex"("statement_prefix")
     .return ($P339)
@@ -4252,7 +4254,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix"  :subid("76_1271336396.90314") :method
+.sub "!PREFIX__statement_prefix"  :subid("76_1271948667.92136") :method
 .annotate "line", 194
     $P341 = self."!PREFIX__!protoregex"("statement_prefix")
     .return ($P341)
@@ -4260,7 +4262,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<INIT>"  :subid("77_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_prefix:sym<INIT>"  :subid("77_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx343_tgt
     .local int rx343_pos
@@ -4339,7 +4341,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("78_1271336396.90314") :method
+.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("78_1271948667.92136") :method
 .annotate "line", 4
     $P345 = self."!PREFIX__!subrule"("blorst", "INIT")
     new $P346, "ResizablePMCArray"
@@ -4349,7 +4351,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<try>"  :subid("79_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_prefix:sym<try>"  :subid("79_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx350_tgt
     .local int rx350_pos
@@ -4430,7 +4432,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<try>"  :subid("80_1271336396.90314") :method
+.sub "!PREFIX__statement_prefix:sym<try>"  :subid("80_1271948667.92136") :method
 .annotate "line", 4
     $P352 = self."!PREFIX__!subrule"("blorst", "try")
     new $P353, "ResizablePMCArray"
@@ -4440,7 +4442,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blorst"  :subid("81_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "blorst"  :subid("81_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx357_tgt
     .local int rx357_pos
@@ -4529,7 +4531,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blorst"  :subid("82_1271336396.90314") :method
+.sub "!PREFIX__blorst"  :subid("82_1271948667.92136") :method
 .annotate "line", 4
     new $P359, "ResizablePMCArray"
     push $P359, ""
@@ -4538,7 +4540,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond"  :subid("83_1271336396.90314") :method
+.sub "statement_mod_cond"  :subid("83_1271948667.92136") :method
 .annotate "line", 208
     $P363 = self."!protoregex"("statement_mod_cond")
     .return ($P363)
@@ -4546,7 +4548,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond"  :subid("84_1271336396.90314") :method
+.sub "!PREFIX__statement_mod_cond"  :subid("84_1271948667.92136") :method
 .annotate "line", 208
     $P365 = self."!PREFIX__!protoregex"("statement_mod_cond")
     .return ($P365)
@@ -4554,7 +4556,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<if>"  :subid("85_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_mod_cond:sym<if>"  :subid("85_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx367_tgt
     .local int rx367_pos
@@ -4643,7 +4645,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("86_1271336396.90314") :method
+.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("86_1271948667.92136") :method
 .annotate "line", 4
     new $P369, "ResizablePMCArray"
     push $P369, "if"
@@ -4652,7 +4654,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<unless>"  :subid("87_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_mod_cond:sym<unless>"  :subid("87_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx375_tgt
     .local int rx375_pos
@@ -4741,7 +4743,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("88_1271336396.90314") :method
+.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("88_1271948667.92136") :method
 .annotate "line", 4
     new $P377, "ResizablePMCArray"
     push $P377, "unless"
@@ -4750,7 +4752,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop"  :subid("89_1271336396.90314") :method
+.sub "statement_mod_loop"  :subid("89_1271948667.92136") :method
 .annotate "line", 213
     $P383 = self."!protoregex"("statement_mod_loop")
     .return ($P383)
@@ -4758,7 +4760,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop"  :subid("90_1271336396.90314") :method
+.sub "!PREFIX__statement_mod_loop"  :subid("90_1271948667.92136") :method
 .annotate "line", 213
     $P385 = self."!PREFIX__!protoregex"("statement_mod_loop")
     .return ($P385)
@@ -4766,7 +4768,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<while>"  :subid("91_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_mod_loop:sym<while>"  :subid("91_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx387_tgt
     .local int rx387_pos
@@ -4855,7 +4857,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("92_1271336396.90314") :method
+.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("92_1271948667.92136") :method
 .annotate "line", 4
     new $P389, "ResizablePMCArray"
     push $P389, "while"
@@ -4864,7 +4866,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<until>"  :subid("93_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statement_mod_loop:sym<until>"  :subid("93_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx395_tgt
     .local int rx395_pos
@@ -4953,7 +4955,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("94_1271336396.90314") :method
+.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("94_1271948667.92136") :method
 .annotate "line", 4
     new $P397, "ResizablePMCArray"
     push $P397, "until"
@@ -4962,7 +4964,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<fatarrow>"  :subid("95_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<fatarrow>"  :subid("95_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx403_tgt
     .local int rx403_pos
@@ -5020,7 +5022,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<fatarrow>"  :subid("96_1271336396.90314") :method
+.sub "!PREFIX__term:sym<fatarrow>"  :subid("96_1271948667.92136") :method
 .annotate "line", 4
     $P405 = self."!PREFIX__!subrule"("fatarrow", "")
     new $P406, "ResizablePMCArray"
@@ -5030,7 +5032,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<colonpair>"  :subid("97_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<colonpair>"  :subid("97_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx409_tgt
     .local int rx409_pos
@@ -5088,7 +5090,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<colonpair>"  :subid("98_1271336396.90314") :method
+.sub "!PREFIX__term:sym<colonpair>"  :subid("98_1271948667.92136") :method
 .annotate "line", 4
     $P411 = self."!PREFIX__!subrule"("colonpair", "")
     new $P412, "ResizablePMCArray"
@@ -5098,7 +5100,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<variable>"  :subid("99_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<variable>"  :subid("99_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx415_tgt
     .local int rx415_pos
@@ -5156,7 +5158,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<variable>"  :subid("100_1271336396.90314") :method
+.sub "!PREFIX__term:sym<variable>"  :subid("100_1271948667.92136") :method
 .annotate "line", 4
     $P417 = self."!PREFIX__!subrule"("variable", "")
     new $P418, "ResizablePMCArray"
@@ -5166,7 +5168,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<package_declarator>"  :subid("101_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<package_declarator>"  :subid("101_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx421_tgt
     .local int rx421_pos
@@ -5224,7 +5226,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<package_declarator>"  :subid("102_1271336396.90314") :method
+.sub "!PREFIX__term:sym<package_declarator>"  :subid("102_1271948667.92136") :method
 .annotate "line", 4
     $P423 = self."!PREFIX__!subrule"("package_declarator", "")
     new $P424, "ResizablePMCArray"
@@ -5234,7 +5236,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<scope_declarator>"  :subid("103_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<scope_declarator>"  :subid("103_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx427_tgt
     .local int rx427_pos
@@ -5292,7 +5294,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<scope_declarator>"  :subid("104_1271336396.90314") :method
+.sub "!PREFIX__term:sym<scope_declarator>"  :subid("104_1271948667.92136") :method
 .annotate "line", 4
     $P429 = self."!PREFIX__!subrule"("scope_declarator", "")
     new $P430, "ResizablePMCArray"
@@ -5302,7 +5304,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<routine_declarator>"  :subid("105_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<routine_declarator>"  :subid("105_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx433_tgt
     .local int rx433_pos
@@ -5360,7 +5362,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<routine_declarator>"  :subid("106_1271336396.90314") :method
+.sub "!PREFIX__term:sym<routine_declarator>"  :subid("106_1271948667.92136") :method
 .annotate "line", 4
     $P435 = self."!PREFIX__!subrule"("routine_declarator", "")
     new $P436, "ResizablePMCArray"
@@ -5370,7 +5372,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<regex_declarator>"  :subid("107_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<regex_declarator>"  :subid("107_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx439_tgt
     .local int rx439_pos
@@ -5428,7 +5430,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<regex_declarator>"  :subid("108_1271336396.90314") :method
+.sub "!PREFIX__term:sym<regex_declarator>"  :subid("108_1271948667.92136") :method
 .annotate "line", 4
     $P441 = self."!PREFIX__!subrule"("regex_declarator", "")
     new $P442, "ResizablePMCArray"
@@ -5438,7 +5440,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<statement_prefix>"  :subid("109_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<statement_prefix>"  :subid("109_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx445_tgt
     .local int rx445_pos
@@ -5496,7 +5498,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<statement_prefix>"  :subid("110_1271336396.90314") :method
+.sub "!PREFIX__term:sym<statement_prefix>"  :subid("110_1271948667.92136") :method
 .annotate "line", 4
     $P447 = self."!PREFIX__!subrule"("statement_prefix", "")
     new $P448, "ResizablePMCArray"
@@ -5506,7 +5508,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<lambda>"  :subid("111_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<lambda>"  :subid("111_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx451_tgt
     .local int rx451_pos
@@ -5568,7 +5570,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<lambda>"  :subid("112_1271336396.90314") :method
+.sub "!PREFIX__term:sym<lambda>"  :subid("112_1271948667.92136") :method
 .annotate "line", 4
     new $P453, "ResizablePMCArray"
     push $P453, ""
@@ -5577,7 +5579,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "fatarrow"  :subid("113_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "fatarrow"  :subid("113_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx456_tgt
     .local int rx456_pos
@@ -5670,7 +5672,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__fatarrow"  :subid("114_1271336396.90314") :method
+.sub "!PREFIX__fatarrow"  :subid("114_1271948667.92136") :method
 .annotate "line", 4
     $P458 = self."!PREFIX__!subrule"("key", "")
     new $P459, "ResizablePMCArray"
@@ -5680,7 +5682,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "colonpair"  :subid("115_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "colonpair"  :subid("115_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx464_tgt
     .local int rx464_pos
@@ -5809,7 +5811,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__colonpair"  :subid("116_1271336396.90314") :method
+.sub "!PREFIX__colonpair"  :subid("116_1271948667.92136") :method
 .annotate "line", 4
     $P466 = self."!PREFIX__!subrule"("circumfix", ":")
     $P467 = self."!PREFIX__!subrule"("identifier", ":")
@@ -5823,7 +5825,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable"  :subid("117_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "variable"  :subid("117_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx476_tgt
     .local int rx476_pos
@@ -5978,7 +5980,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable"  :subid("118_1271336396.90314") :method
+.sub "!PREFIX__variable"  :subid("118_1271948667.92136") :method
 .annotate "line", 4
     $P478 = self."!PREFIX__!subrule"("sigil", "")
     $P479 = self."!PREFIX__!subrule"("sigil", "")
@@ -5993,7 +5995,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "sigil"  :subid("119_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "sigil"  :subid("119_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx488_tgt
     .local int rx488_pos
@@ -6051,7 +6053,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__sigil"  :subid("120_1271336396.90314") :method
+.sub "!PREFIX__sigil"  :subid("120_1271948667.92136") :method
 .annotate "line", 4
     new $P490, "ResizablePMCArray"
     push $P490, "&"
@@ -6063,7 +6065,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "twigil"  :subid("121_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "twigil"  :subid("121_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx493_tgt
     .local int rx493_pos
@@ -6121,7 +6123,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__twigil"  :subid("122_1271336396.90314") :method
+.sub "!PREFIX__twigil"  :subid("122_1271948667.92136") :method
 .annotate "line", 4
     new $P495, "ResizablePMCArray"
     push $P495, "?"
@@ -6132,7 +6134,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator"  :subid("123_1271336396.90314") :method
+.sub "package_declarator"  :subid("123_1271948667.92136") :method
 .annotate "line", 253
     $P498 = self."!protoregex"("package_declarator")
     .return ($P498)
@@ -6140,7 +6142,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator"  :subid("124_1271336396.90314") :method
+.sub "!PREFIX__package_declarator"  :subid("124_1271948667.92136") :method
 .annotate "line", 253
     $P500 = self."!PREFIX__!protoregex"("package_declarator")
     .return ($P500)
@@ -6148,7 +6150,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<module>"  :subid("125_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "package_declarator:sym<module>"  :subid("125_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx502_tgt
     .local int rx502_pos
@@ -6227,7 +6229,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<module>"  :subid("126_1271336396.90314") :method
+.sub "!PREFIX__package_declarator:sym<module>"  :subid("126_1271948667.92136") :method
 .annotate "line", 4
     $P504 = self."!PREFIX__!subrule"("package_def", "module")
     new $P505, "ResizablePMCArray"
@@ -6237,7 +6239,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<class>"  :subid("127_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "package_declarator:sym<class>"  :subid("127_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx509_tgt
     .local int rx509_pos
@@ -6329,7 +6331,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<class>"  :subid("128_1271336396.90314") :method
+.sub "!PREFIX__package_declarator:sym<class>"  :subid("128_1271948667.92136") :method
 .annotate "line", 4
     $P511 = self."!PREFIX__!subrule"("package_def", "grammar")
     $P512 = self."!PREFIX__!subrule"("package_def", "class")
@@ -6341,7 +6343,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_def"  :subid("129_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "package_def"  :subid("129_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx518_tgt
     .local int rx518_pos
@@ -6545,7 +6547,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_def"  :subid("130_1271336396.90314") :method
+.sub "!PREFIX__package_def"  :subid("130_1271948667.92136") :method
 .annotate "line", 4
     new $P520, "ResizablePMCArray"
     push $P520, ""
@@ -6554,7 +6556,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator"  :subid("131_1271336396.90314") :method
+.sub "scope_declarator"  :subid("131_1271948667.92136") :method
 .annotate "line", 267
     $P541 = self."!protoregex"("scope_declarator")
     .return ($P541)
@@ -6562,7 +6564,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator"  :subid("132_1271336396.90314") :method
+.sub "!PREFIX__scope_declarator"  :subid("132_1271948667.92136") :method
 .annotate "line", 267
     $P543 = self."!PREFIX__!protoregex"("scope_declarator")
     .return ($P543)
@@ -6570,7 +6572,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<my>"  :subid("133_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "scope_declarator:sym<my>"  :subid("133_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx545_tgt
     .local int rx545_pos
@@ -6649,7 +6651,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<my>"  :subid("134_1271336396.90314") :method
+.sub "!PREFIX__scope_declarator:sym<my>"  :subid("134_1271948667.92136") :method
 .annotate "line", 4
     $P547 = self."!PREFIX__!subrule"("scoped", "my")
     new $P548, "ResizablePMCArray"
@@ -6659,7 +6661,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<our>"  :subid("135_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "scope_declarator:sym<our>"  :subid("135_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx552_tgt
     .local int rx552_pos
@@ -6738,7 +6740,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<our>"  :subid("136_1271336396.90314") :method
+.sub "!PREFIX__scope_declarator:sym<our>"  :subid("136_1271948667.92136") :method
 .annotate "line", 4
     $P554 = self."!PREFIX__!subrule"("scoped", "our")
     new $P555, "ResizablePMCArray"
@@ -6748,7 +6750,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<has>"  :subid("137_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "scope_declarator:sym<has>"  :subid("137_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx559_tgt
     .local int rx559_pos
@@ -6827,7 +6829,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<has>"  :subid("138_1271336396.90314") :method
+.sub "!PREFIX__scope_declarator:sym<has>"  :subid("138_1271948667.92136") :method
 .annotate "line", 4
     $P561 = self."!PREFIX__!subrule"("scoped", "has")
     new $P562, "ResizablePMCArray"
@@ -6837,7 +6839,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scoped"  :subid("139_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "scoped"  :subid("139_1271948667.92136") :method :outer("11_1271948667.92136")
     .param pmc param_566
 .annotate "line", 272
     .lex "$*SCOPE", param_566
@@ -6934,7 +6936,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scoped"  :subid("140_1271336396.90314") :method
+.sub "!PREFIX__scoped"  :subid("140_1271948667.92136") :method
 .annotate "line", 4
     new $P569, "ResizablePMCArray"
     push $P569, ""
@@ -6944,7 +6946,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable_declarator"  :subid("141_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "variable_declarator"  :subid("141_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx577_tgt
     .local int rx577_pos
@@ -7002,7 +7004,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable_declarator"  :subid("142_1271336396.90314") :method
+.sub "!PREFIX__variable_declarator"  :subid("142_1271948667.92136") :method
 .annotate "line", 4
     $P579 = self."!PREFIX__!subrule"("variable", "")
     new $P580, "ResizablePMCArray"
@@ -7012,7 +7014,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator"  :subid("143_1271336396.90314") :method
+.sub "routine_declarator"  :subid("143_1271948667.92136") :method
 .annotate "line", 279
     $P583 = self."!protoregex"("routine_declarator")
     .return ($P583)
@@ -7020,7 +7022,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator"  :subid("144_1271336396.90314") :method
+.sub "!PREFIX__routine_declarator"  :subid("144_1271948667.92136") :method
 .annotate "line", 279
     $P585 = self."!PREFIX__!protoregex"("routine_declarator")
     .return ($P585)
@@ -7028,7 +7030,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<sub>"  :subid("145_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "routine_declarator:sym<sub>"  :subid("145_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx587_tgt
     .local int rx587_pos
@@ -7107,7 +7109,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("146_1271336396.90314") :method
+.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("146_1271948667.92136") :method
 .annotate "line", 4
     $P589 = self."!PREFIX__!subrule"("routine_def", "sub")
     new $P590, "ResizablePMCArray"
@@ -7117,7 +7119,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<method>"  :subid("147_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "routine_declarator:sym<method>"  :subid("147_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx594_tgt
     .local int rx594_pos
@@ -7196,7 +7198,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<method>"  :subid("148_1271336396.90314") :method
+.sub "!PREFIX__routine_declarator:sym<method>"  :subid("148_1271948667.92136") :method
 .annotate "line", 4
     $P596 = self."!PREFIX__!subrule"("method_def", "method")
     new $P597, "ResizablePMCArray"
@@ -7206,7 +7208,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_def"  :subid("149_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "routine_def"  :subid("149_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx601_tgt
     .local int rx601_pos
@@ -7216,7 +7218,7 @@
     .local pmc rx601_cur
     (rx601_cur, rx601_pos, rx601_tgt) = self."!cursor_start"()
     rx601_cur."!cursor_debug"("START ", "routine_def")
-    rx601_cur."!cursor_caparray"("sigil", "deflongname")
+    rx601_cur."!cursor_caparray"("deflongname", "sigil")
     .lex unicode:"$\x{a2}", rx601_cur
     .local pmc match
     .lex "$/", match
@@ -7413,7 +7415,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_def"  :subid("150_1271336396.90314") :method
+.sub "!PREFIX__routine_def"  :subid("150_1271948667.92136") :method
 .annotate "line", 4
     new $P603, "ResizablePMCArray"
     push $P603, ""
@@ -7422,7 +7424,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "method_def"  :subid("151_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "method_def"  :subid("151_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx625_tgt
     .local int rx625_pos
@@ -7592,7 +7594,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__method_def"  :subid("152_1271336396.90314") :method
+.sub "!PREFIX__method_def"  :subid("152_1271948667.92136") :method
 .annotate "line", 4
     new $P627, "ResizablePMCArray"
     push $P627, ""
@@ -7601,7 +7603,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "signature"  :subid("153_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "signature"  :subid("153_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx644_tgt
     .local int rx644_pos
@@ -7691,7 +7693,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__signature"  :subid("154_1271336396.90314") :method
+.sub "!PREFIX__signature"  :subid("154_1271948667.92136") :method
 .annotate "line", 4
     new $P646, "ResizablePMCArray"
     push $P646, ""
@@ -7700,7 +7702,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "parameter"  :subid("155_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "parameter"  :subid("155_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx653_tgt
     .local int rx653_pos
@@ -7861,7 +7863,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__parameter"  :subid("156_1271336396.90314") :method
+.sub "!PREFIX__parameter"  :subid("156_1271948667.92136") :method
 .annotate "line", 4
     $P655 = self."!PREFIX__!subrule"("named_param", "")
     $P656 = self."!PREFIX__!subrule"("param_var", "")
@@ -7875,7 +7877,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "param_var"  :subid("157_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "param_var"  :subid("157_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx668_tgt
     .local int rx668_pos
@@ -7983,7 +7985,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__param_var"  :subid("158_1271336396.90314") :method
+.sub "!PREFIX__param_var"  :subid("158_1271948667.92136") :method
 .annotate "line", 4
     $P670 = self."!PREFIX__!subrule"("sigil", "")
     new $P671, "ResizablePMCArray"
@@ -7993,7 +7995,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "named_param"  :subid("159_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "named_param"  :subid("159_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx678_tgt
     .local int rx678_pos
@@ -8059,7 +8061,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__named_param"  :subid("160_1271336396.90314") :method
+.sub "!PREFIX__named_param"  :subid("160_1271948667.92136") :method
 .annotate "line", 4
     $P680 = self."!PREFIX__!subrule"("param_var", ":")
     new $P681, "ResizablePMCArray"
@@ -8069,7 +8071,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "default_value"  :subid("161_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "default_value"  :subid("161_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx684_tgt
     .local int rx684_pos
@@ -8149,7 +8151,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__default_value"  :subid("162_1271336396.90314") :method
+.sub "!PREFIX__default_value"  :subid("162_1271948667.92136") :method
 .annotate "line", 4
     new $P686, "ResizablePMCArray"
     push $P686, ""
@@ -8158,7 +8160,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "regex_declarator"  :subid("163_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "regex_declarator"  :subid("163_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx692_tgt
     .local int rx692_pos
@@ -8559,7 +8561,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__regex_declarator"  :subid("164_1271336396.90314") :method
+.sub "!PREFIX__regex_declarator"  :subid("164_1271948667.92136") :method
 .annotate "line", 4
     new $P694, "ResizablePMCArray"
     push $P694, ""
@@ -8568,7 +8570,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "dotty"  :subid("165_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "dotty"  :subid("165_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx729_tgt
     .local int rx729_pos
@@ -8724,7 +8726,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__dotty"  :subid("166_1271336396.90314") :method
+.sub "!PREFIX__dotty"  :subid("166_1271948667.92136") :method
 .annotate "line", 4
     $P731 = self."!PREFIX__!subrule"("longname=identifier", ".")
     new $P732, "ResizablePMCArray"
@@ -8736,7 +8738,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term"  :subid("167_1271336396.90314") :method
+.sub "term"  :subid("167_1271948667.92136") :method
 .annotate "line", 351
     $P740 = self."!protoregex"("term")
     .return ($P740)
@@ -8744,7 +8746,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term"  :subid("168_1271336396.90314") :method
+.sub "!PREFIX__term"  :subid("168_1271948667.92136") :method
 .annotate "line", 351
     $P742 = self."!PREFIX__!protoregex"("term")
     .return ($P742)
@@ -8752,7 +8754,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<self>"  :subid("169_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<self>"  :subid("169_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx744_tgt
     .local int rx744_pos
@@ -8832,7 +8834,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<self>"  :subid("170_1271336396.90314") :method
+.sub "!PREFIX__term:sym<self>"  :subid("170_1271948667.92136") :method
 .annotate "line", 4
     new $P746, "ResizablePMCArray"
     push $P746, "self"
@@ -8841,7 +8843,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<identifier>"  :subid("171_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<identifier>"  :subid("171_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx750_tgt
     .local int rx750_pos
@@ -8913,7 +8915,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<identifier>"  :subid("172_1271336396.90314") :method
+.sub "!PREFIX__term:sym<identifier>"  :subid("172_1271948667.92136") :method
 .annotate "line", 4
     $P752 = self."!PREFIX__!subrule"("identifier", "")
     new $P753, "ResizablePMCArray"
@@ -8923,7 +8925,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<name>"  :subid("173_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<name>"  :subid("173_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx756_tgt
     .local int rx756_pos
@@ -8996,7 +8998,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<name>"  :subid("174_1271336396.90314") :method
+.sub "!PREFIX__term:sym<name>"  :subid("174_1271948667.92136") :method
 .annotate "line", 4
     $P758 = self."!PREFIX__!subrule"("name", "")
     new $P759, "ResizablePMCArray"
@@ -9006,7 +9008,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<pir::op>"  :subid("175_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<pir::op>"  :subid("175_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx764_tgt
     .local int rx764_pos
@@ -9099,7 +9101,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<pir::op>"  :subid("176_1271336396.90314") :method
+.sub "!PREFIX__term:sym<pir::op>"  :subid("176_1271948667.92136") :method
 .annotate "line", 4
     new $P766, "ResizablePMCArray"
     push $P766, "pir::"
@@ -9108,7 +9110,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "args"  :subid("177_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "args"  :subid("177_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx772_tgt
     .local int rx772_pos
@@ -9180,7 +9182,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__args"  :subid("178_1271336396.90314") :method
+.sub "!PREFIX__args"  :subid("178_1271948667.92136") :method
 .annotate "line", 4
     $P774 = self."!PREFIX__!subrule"("arglist", "(")
     new $P775, "ResizablePMCArray"
@@ -9190,7 +9192,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "arglist"  :subid("179_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "arglist"  :subid("179_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx778_tgt
     .local int rx778_pos
@@ -9262,7 +9264,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("180_1271336396.90314") :method
+.sub "!PREFIX__arglist"  :subid("180_1271948667.92136") :method
 .annotate "line", 4
     $P780 = self."!PREFIX__!subrule"("", "")
     new $P781, "ResizablePMCArray"
@@ -9272,7 +9274,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<value>"  :subid("181_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "term:sym<value>"  :subid("181_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx785_tgt
     .local int rx785_pos
@@ -9330,7 +9332,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<value>"  :subid("182_1271336396.90314") :method
+.sub "!PREFIX__term:sym<value>"  :subid("182_1271948667.92136") :method
 .annotate "line", 4
     $P787 = self."!PREFIX__!subrule"("value", "")
     new $P788, "ResizablePMCArray"
@@ -9340,7 +9342,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "value"  :subid("183_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "value"  :subid("183_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx791_tgt
     .local int rx791_pos
@@ -9414,7 +9416,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__value"  :subid("184_1271336396.90314") :method
+.sub "!PREFIX__value"  :subid("184_1271948667.92136") :method
 .annotate "line", 4
     $P793 = self."!PREFIX__!subrule"("number", "")
     $P794 = self."!PREFIX__!subrule"("quote", "")
@@ -9426,7 +9428,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "number"  :subid("185_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "number"  :subid("185_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx799_tgt
     .local int rx799_pos
@@ -9526,7 +9528,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__number"  :subid("186_1271336396.90314") :method
+.sub "!PREFIX__number"  :subid("186_1271948667.92136") :method
 .annotate "line", 4
     new $P801, "ResizablePMCArray"
     push $P801, ""
@@ -9535,7 +9537,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote"  :subid("187_1271336396.90314") :method
+.sub "quote"  :subid("187_1271948667.92136") :method
 .annotate "line", 392
     $P808 = self."!protoregex"("quote")
     .return ($P808)
@@ -9543,7 +9545,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote"  :subid("188_1271336396.90314") :method
+.sub "!PREFIX__quote"  :subid("188_1271948667.92136") :method
 .annotate "line", 392
     $P810 = self."!PREFIX__!protoregex"("quote")
     .return ($P810)
@@ -9551,7 +9553,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<apos>"  :subid("189_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "quote:sym<apos>"  :subid("189_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx812_tgt
     .local int rx812_pos
@@ -9615,7 +9617,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<apos>"  :subid("190_1271336396.90314") :method
+.sub "!PREFIX__quote:sym<apos>"  :subid("190_1271948667.92136") :method
 .annotate "line", 4
     new $P814, "ResizablePMCArray"
     push $P814, "'"
@@ -9624,7 +9626,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<dblq>"  :subid("191_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "quote:sym<dblq>"  :subid("191_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx817_tgt
     .local int rx817_pos
@@ -9688,7 +9690,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<dblq>"  :subid("192_1271336396.90314") :method
+.sub "!PREFIX__quote:sym<dblq>"  :subid("192_1271948667.92136") :method
 .annotate "line", 4
     new $P819, "ResizablePMCArray"
     push $P819, "\""
@@ -9697,7 +9699,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<q>"  :subid("193_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "quote:sym<q>"  :subid("193_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx822_tgt
     .local int rx822_pos
@@ -9773,7 +9775,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<q>"  :subid("194_1271336396.90314") :method
+.sub "!PREFIX__quote:sym<q>"  :subid("194_1271948667.92136") :method
 .annotate "line", 4
     $P824 = self."!PREFIX__!subrule"("", "q")
     new $P825, "ResizablePMCArray"
@@ -9783,7 +9785,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<qq>"  :subid("195_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "quote:sym<qq>"  :subid("195_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx828_tgt
     .local int rx828_pos
@@ -9859,7 +9861,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<qq>"  :subid("196_1271336396.90314") :method
+.sub "!PREFIX__quote:sym<qq>"  :subid("196_1271948667.92136") :method
 .annotate "line", 4
     $P830 = self."!PREFIX__!subrule"("", "qq")
     new $P831, "ResizablePMCArray"
@@ -9869,7 +9871,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q>"  :subid("197_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "quote:sym<Q>"  :subid("197_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx834_tgt
     .local int rx834_pos
@@ -9945,7 +9947,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q>"  :subid("198_1271336396.90314") :method
+.sub "!PREFIX__quote:sym<Q>"  :subid("198_1271948667.92136") :method
 .annotate "line", 4
     $P836 = self."!PREFIX__!subrule"("", "Q")
     new $P837, "ResizablePMCArray"
@@ -9955,7 +9957,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q:PIR>"  :subid("199_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "quote:sym<Q:PIR>"  :subid("199_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx840_tgt
     .local int rx840_pos
@@ -10025,7 +10027,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("200_1271336396.90314") :method
+.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("200_1271948667.92136") :method
 .annotate "line", 4
     $P842 = self."!PREFIX__!subrule"("", "Q:PIR")
     new $P843, "ResizablePMCArray"
@@ -10035,7 +10037,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym</ />"  :subid("201_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "quote:sym</ />"  :subid("201_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx846_tgt
     .local int rx846_pos
@@ -10120,7 +10122,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym</ />"  :subid("202_1271336396.90314") :method
+.sub "!PREFIX__quote:sym</ />"  :subid("202_1271948667.92136") :method
 .annotate "line", 4
     $P848 = self."!PREFIX__!subrule"("", "/")
     new $P849, "ResizablePMCArray"
@@ -10130,7 +10132,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<$>"  :subid("203_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "quote_escape:sym<$>"  :subid("203_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx852_tgt
     .local int rx852_pos
@@ -10198,7 +10200,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<$>"  :subid("204_1271336396.90314") :method
+.sub "!PREFIX__quote_escape:sym<$>"  :subid("204_1271948667.92136") :method
 .annotate "line", 4
     new $P854, "ResizablePMCArray"
     push $P854, "$"
@@ -10207,7 +10209,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<{ }>"  :subid("205_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "quote_escape:sym<{ }>"  :subid("205_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx857_tgt
     .local int rx857_pos
@@ -10275,7 +10277,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("206_1271336396.90314") :method
+.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("206_1271948667.92136") :method
 .annotate "line", 4
     new $P859, "ResizablePMCArray"
     push $P859, "{"
@@ -10284,7 +10286,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<( )>"  :subid("207_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "quote_escape:sym<esc>"  :subid("207_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx862_tgt
     .local int rx862_pos
@@ -10293,8 +10295,7 @@
     .local int rx862_rep
     .local pmc rx862_cur
     (rx862_cur, rx862_pos, rx862_tgt) = self."!cursor_start"()
-    rx862_cur."!cursor_debug"("START ", "circumfix:sym<( )>")
-    rx862_cur."!cursor_caparray"("EXPR")
+    rx862_cur."!cursor_debug"("START ", "quote_escape:sym<esc>")
     .lex unicode:"$\x{a2}", rx862_cur
     .local pmc match
     .lex "$/", match
@@ -10305,53 +10306,32 @@
     substr rx862_tgt, rx862_tgt, rx862_off
   rx862_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan866_done
-    goto rxscan866_scan
-  rxscan866_loop:
+    ne $I10, -1, rxscan865_done
+    goto rxscan865_scan
+  rxscan865_loop:
     ($P10) = rx862_cur."from"()
     inc $P10
     set rx862_pos, $P10
-    ge rx862_pos, rx862_eos, rxscan866_done
-  rxscan866_scan:
-    set_addr $I10, rxscan866_loop
+    ge rx862_pos, rx862_eos, rxscan865_done
+  rxscan865_scan:
+    set_addr $I10, rxscan865_loop
     rx862_cur."!mark_push"(0, rx862_pos, $I10)
-  rxscan866_done:
-.annotate "line", 410
-  # rx literal  "("
-    add $I11, rx862_pos, 1
+  rxscan865_done:
+.annotate "line", 409
+  # rx literal  "\\e"
+    add $I11, rx862_pos, 2
     gt $I11, rx862_eos, rx862_fail
     sub $I11, rx862_pos, rx862_off
-    substr $S10, rx862_tgt, $I11, 1
-    ne $S10, "(", rx862_fail
-    add rx862_pos, 1
-  # rx subrule "ws" subtype=method negate=
-    rx862_cur."!cursor_pos"(rx862_pos)
-    $P10 = rx862_cur."ws"()
-    unless $P10, rx862_fail
-    rx862_pos = $P10."pos"()
-  # rx rxquantr867 ** 0..1
-    set_addr $I868, rxquantr867_done
-    rx862_cur."!mark_push"(0, rx862_pos, $I868)
-  rxquantr867_loop:
-  # rx subrule "EXPR" subtype=capture negate=
+    substr $S10, rx862_tgt, $I11, 2
+    ne $S10, "\\e", rx862_fail
+    add rx862_pos, 2
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
     rx862_cur."!cursor_pos"(rx862_pos)
-    $P10 = rx862_cur."EXPR"()
+    $P10 = rx862_cur."quotemod_check"("b")
     unless $P10, rx862_fail
-    rx862_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("EXPR")
-    rx862_pos = $P10."pos"()
-    (rx862_rep) = rx862_cur."!mark_commit"($I868)
-  rxquantr867_done:
-  # rx literal  ")"
-    add $I11, rx862_pos, 1
-    gt $I11, rx862_eos, rx862_fail
-    sub $I11, rx862_pos, rx862_off
-    substr $S10, rx862_tgt, $I11, 1
-    ne $S10, ")", rx862_fail
-    add rx862_pos, 1
   # rx pass
-    rx862_cur."!cursor_pass"(rx862_pos, "circumfix:sym<( )>")
-    rx862_cur."!cursor_debug"("PASS  ", "circumfix:sym<( )>", " at pos=", rx862_pos)
+    rx862_cur."!cursor_pass"(rx862_pos, "quote_escape:sym<esc>")
+    rx862_cur."!cursor_debug"("PASS  ", "quote_escape:sym<esc>", " at pos=", rx862_pos)
     .return (rx862_cur)
   rx862_fail:
 .annotate "line", 4
@@ -10361,191 +10341,211 @@
     jump $I10
   rx862_done:
     rx862_cur."!cursor_fail"()
-    rx862_cur."!cursor_debug"("FAIL  ", "circumfix:sym<( )>")
+    rx862_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<esc>")
     .return (rx862_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<( )>"  :subid("208_1271336396.90314") :method
+.sub "!PREFIX__quote_escape:sym<esc>"  :subid("208_1271948667.92136") :method
 .annotate "line", 4
-    $P864 = self."!PREFIX__!subrule"("", "(")
-    new $P865, "ResizablePMCArray"
-    push $P865, $P864
-    .return ($P865)
+    new $P864, "ResizablePMCArray"
+    push $P864, "\\e"
+    .return ($P864)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<[ ]>"  :subid("209_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 4
-    .local string rx870_tgt
-    .local int rx870_pos
-    .local int rx870_off
-    .local int rx870_eos
-    .local int rx870_rep
-    .local pmc rx870_cur
-    (rx870_cur, rx870_pos, rx870_tgt) = self."!cursor_start"()
-    rx870_cur."!cursor_debug"("START ", "circumfix:sym<[ ]>")
-    rx870_cur."!cursor_caparray"("EXPR")
-    .lex unicode:"$\x{a2}", rx870_cur
-    .local pmc match
-    .lex "$/", match
-    length rx870_eos, rx870_tgt
-    set rx870_off, 0
-    lt rx870_pos, 2, rx870_start
-    sub rx870_off, rx870_pos, 1
-    substr rx870_tgt, rx870_tgt, rx870_off
-  rx870_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan874_done
-    goto rxscan874_scan
-  rxscan874_loop:
-    ($P10) = rx870_cur."from"()
-    inc $P10
-    set rx870_pos, $P10
-    ge rx870_pos, rx870_eos, rxscan874_done
-  rxscan874_scan:
-    set_addr $I10, rxscan874_loop
-    rx870_cur."!mark_push"(0, rx870_pos, $I10)
-  rxscan874_done:
+.sub "circumfix:sym<( )>"  :subid("209_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 4
+    .local string rx867_tgt
+    .local int rx867_pos
+    .local int rx867_off
+    .local int rx867_eos
+    .local int rx867_rep
+    .local pmc rx867_cur
+    (rx867_cur, rx867_pos, rx867_tgt) = self."!cursor_start"()
+    rx867_cur."!cursor_debug"("START ", "circumfix:sym<( )>")
+    rx867_cur."!cursor_caparray"("EXPR")
+    .lex unicode:"$\x{a2}", rx867_cur
+    .local pmc match
+    .lex "$/", match
+    length rx867_eos, rx867_tgt
+    set rx867_off, 0
+    lt rx867_pos, 2, rx867_start
+    sub rx867_off, rx867_pos, 1
+    substr rx867_tgt, rx867_tgt, rx867_off
+  rx867_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan871_done
+    goto rxscan871_scan
+  rxscan871_loop:
+    ($P10) = rx867_cur."from"()
+    inc $P10
+    set rx867_pos, $P10
+    ge rx867_pos, rx867_eos, rxscan871_done
+  rxscan871_scan:
+    set_addr $I10, rxscan871_loop
+    rx867_cur."!mark_push"(0, rx867_pos, $I10)
+  rxscan871_done:
 .annotate "line", 411
-  # rx literal  "["
-    add $I11, rx870_pos, 1
-    gt $I11, rx870_eos, rx870_fail
-    sub $I11, rx870_pos, rx870_off
-    substr $S10, rx870_tgt, $I11, 1
-    ne $S10, "[", rx870_fail
-    add rx870_pos, 1
-  # rx subrule "ws" subtype=method negate=
-    rx870_cur."!cursor_pos"(rx870_pos)
-    $P10 = rx870_cur."ws"()
-    unless $P10, rx870_fail
-    rx870_pos = $P10."pos"()
-  # rx rxquantr875 ** 0..1
-    set_addr $I876, rxquantr875_done
-    rx870_cur."!mark_push"(0, rx870_pos, $I876)
-  rxquantr875_loop:
+  # rx literal  "("
+    add $I11, rx867_pos, 1
+    gt $I11, rx867_eos, rx867_fail
+    sub $I11, rx867_pos, rx867_off
+    substr $S10, rx867_tgt, $I11, 1
+    ne $S10, "(", rx867_fail
+    add rx867_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx867_cur."!cursor_pos"(rx867_pos)
+    $P10 = rx867_cur."ws"()
+    unless $P10, rx867_fail
+    rx867_pos = $P10."pos"()
+  # rx rxquantr872 ** 0..1
+    set_addr $I873, rxquantr872_done
+    rx867_cur."!mark_push"(0, rx867_pos, $I873)
+  rxquantr872_loop:
   # rx subrule "EXPR" subtype=capture negate=
-    rx870_cur."!cursor_pos"(rx870_pos)
-    $P10 = rx870_cur."EXPR"()
-    unless $P10, rx870_fail
-    rx870_cur."!mark_push"(0, -1, 0, $P10)
+    rx867_cur."!cursor_pos"(rx867_pos)
+    $P10 = rx867_cur."EXPR"()
+    unless $P10, rx867_fail
+    rx867_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("EXPR")
-    rx870_pos = $P10."pos"()
-    (rx870_rep) = rx870_cur."!mark_commit"($I876)
-  rxquantr875_done:
-  # rx literal  "]"
-    add $I11, rx870_pos, 1
-    gt $I11, rx870_eos, rx870_fail
-    sub $I11, rx870_pos, rx870_off
-    substr $S10, rx870_tgt, $I11, 1
-    ne $S10, "]", rx870_fail
-    add rx870_pos, 1
+    rx867_pos = $P10."pos"()
+    (rx867_rep) = rx867_cur."!mark_commit"($I873)
+  rxquantr872_done:
+  # rx literal  ")"
+    add $I11, rx867_pos, 1
+    gt $I11, rx867_eos, rx867_fail
+    sub $I11, rx867_pos, rx867_off
+    substr $S10, rx867_tgt, $I11, 1
+    ne $S10, ")", rx867_fail
+    add rx867_pos, 1
   # rx pass
-    rx870_cur."!cursor_pass"(rx870_pos, "circumfix:sym<[ ]>")
-    rx870_cur."!cursor_debug"("PASS  ", "circumfix:sym<[ ]>", " at pos=", rx870_pos)
-    .return (rx870_cur)
-  rx870_fail:
+    rx867_cur."!cursor_pass"(rx867_pos, "circumfix:sym<( )>")
+    rx867_cur."!cursor_debug"("PASS  ", "circumfix:sym<( )>", " at pos=", rx867_pos)
+    .return (rx867_cur)
+  rx867_fail:
 .annotate "line", 4
-    (rx870_rep, rx870_pos, $I10, $P10) = rx870_cur."!mark_fail"(0)
-    lt rx870_pos, -1, rx870_done
-    eq rx870_pos, -1, rx870_fail
+    (rx867_rep, rx867_pos, $I10, $P10) = rx867_cur."!mark_fail"(0)
+    lt rx867_pos, -1, rx867_done
+    eq rx867_pos, -1, rx867_fail
     jump $I10
-  rx870_done:
-    rx870_cur."!cursor_fail"()
-    rx870_cur."!cursor_debug"("FAIL  ", "circumfix:sym<[ ]>")
-    .return (rx870_cur)
+  rx867_done:
+    rx867_cur."!cursor_fail"()
+    rx867_cur."!cursor_debug"("FAIL  ", "circumfix:sym<( )>")
+    .return (rx867_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("210_1271336396.90314") :method
+.sub "!PREFIX__circumfix:sym<( )>"  :subid("210_1271948667.92136") :method
 .annotate "line", 4
-    $P872 = self."!PREFIX__!subrule"("", "[")
-    new $P873, "ResizablePMCArray"
-    push $P873, $P872
-    .return ($P873)
+    $P869 = self."!PREFIX__!subrule"("", "(")
+    new $P870, "ResizablePMCArray"
+    push $P870, $P869
+    .return ($P870)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<ang>"  :subid("211_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "circumfix:sym<[ ]>"  :subid("211_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
-    .local string rx878_tgt
-    .local int rx878_pos
-    .local int rx878_off
-    .local int rx878_eos
-    .local int rx878_rep
-    .local pmc rx878_cur
-    (rx878_cur, rx878_pos, rx878_tgt) = self."!cursor_start"()
-    rx878_cur."!cursor_debug"("START ", "circumfix:sym<ang>")
-    .lex unicode:"$\x{a2}", rx878_cur
-    .local pmc match
-    .lex "$/", match
-    length rx878_eos, rx878_tgt
-    set rx878_off, 0
-    lt rx878_pos, 2, rx878_start
-    sub rx878_off, rx878_pos, 1
-    substr rx878_tgt, rx878_tgt, rx878_off
-  rx878_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan881_done
-    goto rxscan881_scan
-  rxscan881_loop:
-    ($P10) = rx878_cur."from"()
-    inc $P10
-    set rx878_pos, $P10
-    ge rx878_pos, rx878_eos, rxscan881_done
-  rxscan881_scan:
-    set_addr $I10, rxscan881_loop
-    rx878_cur."!mark_push"(0, rx878_pos, $I10)
-  rxscan881_done:
+    .local string rx875_tgt
+    .local int rx875_pos
+    .local int rx875_off
+    .local int rx875_eos
+    .local int rx875_rep
+    .local pmc rx875_cur
+    (rx875_cur, rx875_pos, rx875_tgt) = self."!cursor_start"()
+    rx875_cur."!cursor_debug"("START ", "circumfix:sym<[ ]>")
+    rx875_cur."!cursor_caparray"("EXPR")
+    .lex unicode:"$\x{a2}", rx875_cur
+    .local pmc match
+    .lex "$/", match
+    length rx875_eos, rx875_tgt
+    set rx875_off, 0
+    lt rx875_pos, 2, rx875_start
+    sub rx875_off, rx875_pos, 1
+    substr rx875_tgt, rx875_tgt, rx875_off
+  rx875_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan879_done
+    goto rxscan879_scan
+  rxscan879_loop:
+    ($P10) = rx875_cur."from"()
+    inc $P10
+    set rx875_pos, $P10
+    ge rx875_pos, rx875_eos, rxscan879_done
+  rxscan879_scan:
+    set_addr $I10, rxscan879_loop
+    rx875_cur."!mark_push"(0, rx875_pos, $I10)
+  rxscan879_done:
 .annotate "line", 412
-  # rx enumcharlist negate=0 zerowidth
-    ge rx878_pos, rx878_eos, rx878_fail
-    sub $I10, rx878_pos, rx878_off
-    substr $S10, rx878_tgt, $I10, 1
-    index $I11, "<", $S10
-    lt $I11, 0, rx878_fail
-  # rx subrule "quote_EXPR" subtype=capture negate=
-    rx878_cur."!cursor_pos"(rx878_pos)
-    $P10 = rx878_cur."quote_EXPR"(":q", ":w")
-    unless $P10, rx878_fail
-    rx878_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("quote_EXPR")
-    rx878_pos = $P10."pos"()
+  # rx literal  "["
+    add $I11, rx875_pos, 1
+    gt $I11, rx875_eos, rx875_fail
+    sub $I11, rx875_pos, rx875_off
+    substr $S10, rx875_tgt, $I11, 1
+    ne $S10, "[", rx875_fail
+    add rx875_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx875_cur."!cursor_pos"(rx875_pos)
+    $P10 = rx875_cur."ws"()
+    unless $P10, rx875_fail
+    rx875_pos = $P10."pos"()
+  # rx rxquantr880 ** 0..1
+    set_addr $I881, rxquantr880_done
+    rx875_cur."!mark_push"(0, rx875_pos, $I881)
+  rxquantr880_loop:
+  # rx subrule "EXPR" subtype=capture negate=
+    rx875_cur."!cursor_pos"(rx875_pos)
+    $P10 = rx875_cur."EXPR"()
+    unless $P10, rx875_fail
+    rx875_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx875_pos = $P10."pos"()
+    (rx875_rep) = rx875_cur."!mark_commit"($I881)
+  rxquantr880_done:
+  # rx literal  "]"
+    add $I11, rx875_pos, 1
+    gt $I11, rx875_eos, rx875_fail
+    sub $I11, rx875_pos, rx875_off
+    substr $S10, rx875_tgt, $I11, 1
+    ne $S10, "]", rx875_fail
+    add rx875_pos, 1
   # rx pass
-    rx878_cur."!cursor_pass"(rx878_pos, "circumfix:sym<ang>")
-    rx878_cur."!cursor_debug"("PASS  ", "circumfix:sym<ang>", " at pos=", rx878_pos)
-    .return (rx878_cur)
-  rx878_fail:
+    rx875_cur."!cursor_pass"(rx875_pos, "circumfix:sym<[ ]>")
+    rx875_cur."!cursor_debug"("PASS  ", "circumfix:sym<[ ]>", " at pos=", rx875_pos)
+    .return (rx875_cur)
+  rx875_fail:
 .annotate "line", 4
-    (rx878_rep, rx878_pos, $I10, $P10) = rx878_cur."!mark_fail"(0)
-    lt rx878_pos, -1, rx878_done
-    eq rx878_pos, -1, rx878_fail
+    (rx875_rep, rx875_pos, $I10, $P10) = rx875_cur."!mark_fail"(0)
+    lt rx875_pos, -1, rx875_done
+    eq rx875_pos, -1, rx875_fail
     jump $I10
-  rx878_done:
-    rx878_cur."!cursor_fail"()
-    rx878_cur."!cursor_debug"("FAIL  ", "circumfix:sym<ang>")
-    .return (rx878_cur)
+  rx875_done:
+    rx875_cur."!cursor_fail"()
+    rx875_cur."!cursor_debug"("FAIL  ", "circumfix:sym<[ ]>")
+    .return (rx875_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<ang>"  :subid("212_1271336396.90314") :method
+.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("212_1271948667.92136") :method
 .annotate "line", 4
-    new $P880, "ResizablePMCArray"
-    push $P880, "<"
-    .return ($P880)
+    $P877 = self."!PREFIX__!subrule"("", "[")
+    new $P878, "ResizablePMCArray"
+    push $P878, $P877
+    .return ($P878)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("213_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "circumfix:sym<ang>"  :subid("213_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx883_tgt
     .local int rx883_pos
@@ -10554,7 +10554,7 @@
     .local int rx883_rep
     .local pmc rx883_cur
     (rx883_cur, rx883_pos, rx883_tgt) = self."!cursor_start"()
-    rx883_cur."!cursor_debug"("START ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
+    rx883_cur."!cursor_debug"("START ", "circumfix:sym<ang>")
     .lex unicode:"$\x{a2}", rx883_cur
     .local pmc match
     .lex "$/", match
@@ -10581,18 +10581,18 @@
     ge rx883_pos, rx883_eos, rx883_fail
     sub $I10, rx883_pos, rx883_off
     substr $S10, rx883_tgt, $I10, 1
-    index $I11, unicode:"\x{ab}", $S10
+    index $I11, "<", $S10
     lt $I11, 0, rx883_fail
   # rx subrule "quote_EXPR" subtype=capture negate=
     rx883_cur."!cursor_pos"(rx883_pos)
-    $P10 = rx883_cur."quote_EXPR"(":qq", ":w")
+    $P10 = rx883_cur."quote_EXPR"(":q", ":w")
     unless $P10, rx883_fail
     rx883_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("quote_EXPR")
     rx883_pos = $P10."pos"()
   # rx pass
-    rx883_cur."!cursor_pass"(rx883_pos, unicode:"circumfix:sym<\x{ab} \x{bb}>")
-    rx883_cur."!cursor_debug"("PASS  ", unicode:"circumfix:sym<\x{ab} \x{bb}>", " at pos=", rx883_pos)
+    rx883_cur."!cursor_pass"(rx883_pos, "circumfix:sym<ang>")
+    rx883_cur."!cursor_debug"("PASS  ", "circumfix:sym<ang>", " at pos=", rx883_pos)
     .return (rx883_cur)
   rx883_fail:
 .annotate "line", 4
@@ -10602,23 +10602,23 @@
     jump $I10
   rx883_done:
     rx883_cur."!cursor_fail"()
-    rx883_cur."!cursor_debug"("FAIL  ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
+    rx883_cur."!cursor_debug"("FAIL  ", "circumfix:sym<ang>")
     .return (rx883_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>"  :subid("214_1271336396.90314") :method
+.sub "!PREFIX__circumfix:sym<ang>"  :subid("214_1271948667.92136") :method
 .annotate "line", 4
     new $P885, "ResizablePMCArray"
-    push $P885, unicode:"\x{ab}"
+    push $P885, "<"
     .return ($P885)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<{ }>"  :subid("215_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("215_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx888_tgt
     .local int rx888_pos
@@ -10627,7 +10627,7 @@
     .local int rx888_rep
     .local pmc rx888_cur
     (rx888_cur, rx888_pos, rx888_tgt) = self."!cursor_start"()
-    rx888_cur."!cursor_debug"("START ", "circumfix:sym<{ }>")
+    rx888_cur."!cursor_debug"("START ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
     .lex unicode:"$\x{a2}", rx888_cur
     .local pmc match
     .lex "$/", match
@@ -10654,18 +10654,18 @@
     ge rx888_pos, rx888_eos, rx888_fail
     sub $I10, rx888_pos, rx888_off
     substr $S10, rx888_tgt, $I10, 1
-    index $I11, "{", $S10
+    index $I11, unicode:"\x{ab}", $S10
     lt $I11, 0, rx888_fail
-  # rx subrule "pblock" subtype=capture negate=
+  # rx subrule "quote_EXPR" subtype=capture negate=
     rx888_cur."!cursor_pos"(rx888_pos)
-    $P10 = rx888_cur."pblock"()
+    $P10 = rx888_cur."quote_EXPR"(":qq", ":w")
     unless $P10, rx888_fail
     rx888_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("pblock")
+    $P10."!cursor_names"("quote_EXPR")
     rx888_pos = $P10."pos"()
   # rx pass
-    rx888_cur."!cursor_pass"(rx888_pos, "circumfix:sym<{ }>")
-    rx888_cur."!cursor_debug"("PASS  ", "circumfix:sym<{ }>", " at pos=", rx888_pos)
+    rx888_cur."!cursor_pass"(rx888_pos, unicode:"circumfix:sym<\x{ab} \x{bb}>")
+    rx888_cur."!cursor_debug"("PASS  ", unicode:"circumfix:sym<\x{ab} \x{bb}>", " at pos=", rx888_pos)
     .return (rx888_cur)
   rx888_fail:
 .annotate "line", 4
@@ -10675,23 +10675,23 @@
     jump $I10
   rx888_done:
     rx888_cur."!cursor_fail"()
-    rx888_cur."!cursor_debug"("FAIL  ", "circumfix:sym<{ }>")
+    rx888_cur."!cursor_debug"("FAIL  ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
     .return (rx888_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<{ }>"  :subid("216_1271336396.90314") :method
+.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>"  :subid("216_1271948667.92136") :method
 .annotate "line", 4
     new $P890, "ResizablePMCArray"
-    push $P890, "{"
+    push $P890, unicode:"\x{ab}"
     .return ($P890)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<sigil>"  :subid("217_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "circumfix:sym<{ }>"  :subid("217_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx893_tgt
     .local int rx893_pos
@@ -10700,7 +10700,7 @@
     .local int rx893_rep
     .local pmc rx893_cur
     (rx893_cur, rx893_pos, rx893_tgt) = self."!cursor_start"()
-    rx893_cur."!cursor_debug"("START ", "circumfix:sym<sigil>")
+    rx893_cur."!cursor_debug"("START ", "circumfix:sym<{ }>")
     .lex unicode:"$\x{a2}", rx893_cur
     .local pmc match
     .lex "$/", match
@@ -10711,60 +10711,34 @@
     substr rx893_tgt, rx893_tgt, rx893_off
   rx893_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan897_done
-    goto rxscan897_scan
-  rxscan897_loop:
+    ne $I10, -1, rxscan896_done
+    goto rxscan896_scan
+  rxscan896_loop:
     ($P10) = rx893_cur."from"()
     inc $P10
     set rx893_pos, $P10
-    ge rx893_pos, rx893_eos, rxscan897_done
-  rxscan897_scan:
-    set_addr $I10, rxscan897_loop
+    ge rx893_pos, rx893_eos, rxscan896_done
+  rxscan896_scan:
+    set_addr $I10, rxscan896_loop
     rx893_cur."!mark_push"(0, rx893_pos, $I10)
-  rxscan897_done:
+  rxscan896_done:
 .annotate "line", 415
-  # rx subrule "sigil" subtype=capture negate=
-    rx893_cur."!cursor_pos"(rx893_pos)
-    $P10 = rx893_cur."sigil"()
-    unless $P10, rx893_fail
-    rx893_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("sigil")
-    rx893_pos = $P10."pos"()
-  # rx literal  "("
-    add $I11, rx893_pos, 1
-    gt $I11, rx893_eos, rx893_fail
-    sub $I11, rx893_pos, rx893_off
-    substr $S10, rx893_tgt, $I11, 1
-    ne $S10, "(", rx893_fail
-    add rx893_pos, 1
-  # rx subrule "semilist" subtype=capture negate=
+  # rx enumcharlist negate=0 zerowidth
+    ge rx893_pos, rx893_eos, rx893_fail
+    sub $I10, rx893_pos, rx893_off
+    substr $S10, rx893_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx893_fail
+  # rx subrule "pblock" subtype=capture negate=
     rx893_cur."!cursor_pos"(rx893_pos)
-    $P10 = rx893_cur."semilist"()
+    $P10 = rx893_cur."pblock"()
     unless $P10, rx893_fail
     rx893_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("semilist")
-    rx893_pos = $P10."pos"()
-  alt898_0:
-    set_addr $I10, alt898_1
-    rx893_cur."!mark_push"(0, rx893_pos, $I10)
-  # rx literal  ")"
-    add $I11, rx893_pos, 1
-    gt $I11, rx893_eos, rx893_fail
-    sub $I11, rx893_pos, rx893_off
-    substr $S10, rx893_tgt, $I11, 1
-    ne $S10, ")", rx893_fail
-    add rx893_pos, 1
-    goto alt898_end
-  alt898_1:
-  # rx subrule "FAILGOAL" subtype=method negate=
-    rx893_cur."!cursor_pos"(rx893_pos)
-    $P10 = rx893_cur."FAILGOAL"("')'")
-    unless $P10, rx893_fail
+    $P10."!cursor_names"("pblock")
     rx893_pos = $P10."pos"()
-  alt898_end:
   # rx pass
-    rx893_cur."!cursor_pass"(rx893_pos, "circumfix:sym<sigil>")
-    rx893_cur."!cursor_debug"("PASS  ", "circumfix:sym<sigil>", " at pos=", rx893_pos)
+    rx893_cur."!cursor_pass"(rx893_pos, "circumfix:sym<{ }>")
+    rx893_cur."!cursor_debug"("PASS  ", "circumfix:sym<{ }>", " at pos=", rx893_pos)
     .return (rx893_cur)
   rx893_fail:
 .annotate "line", 4
@@ -10774,173 +10748,201 @@
     jump $I10
   rx893_done:
     rx893_cur."!cursor_fail"()
-    rx893_cur."!cursor_debug"("FAIL  ", "circumfix:sym<sigil>")
+    rx893_cur."!cursor_debug"("FAIL  ", "circumfix:sym<{ }>")
     .return (rx893_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<sigil>"  :subid("218_1271336396.90314") :method
+.sub "!PREFIX__circumfix:sym<{ }>"  :subid("218_1271948667.92136") :method
 .annotate "line", 4
-    $P895 = self."!PREFIX__!subrule"("sigil", "")
-    new $P896, "ResizablePMCArray"
-    push $P896, $P895
-    .return ($P896)
+    new $P895, "ResizablePMCArray"
+    push $P895, "{"
+    .return ($P895)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "semilist"  :subid("219_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 4
-    .local string rx901_tgt
-    .local int rx901_pos
-    .local int rx901_off
-    .local int rx901_eos
-    .local int rx901_rep
-    .local pmc rx901_cur
-    (rx901_cur, rx901_pos, rx901_tgt) = self."!cursor_start"()
-    rx901_cur."!cursor_debug"("START ", "semilist")
-    .lex unicode:"$\x{a2}", rx901_cur
-    .local pmc match
-    .lex "$/", match
-    length rx901_eos, rx901_tgt
-    set rx901_off, 0
-    lt rx901_pos, 2, rx901_start
-    sub rx901_off, rx901_pos, 1
-    substr rx901_tgt, rx901_tgt, rx901_off
-  rx901_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan904_done
-    goto rxscan904_scan
-  rxscan904_loop:
-    ($P10) = rx901_cur."from"()
-    inc $P10
-    set rx901_pos, $P10
-    ge rx901_pos, rx901_eos, rxscan904_done
-  rxscan904_scan:
-    set_addr $I10, rxscan904_loop
-    rx901_cur."!mark_push"(0, rx901_pos, $I10)
-  rxscan904_done:
-.annotate "line", 417
-  # rx subrule "ws" subtype=method negate=
-    rx901_cur."!cursor_pos"(rx901_pos)
-    $P10 = rx901_cur."ws"()
-    unless $P10, rx901_fail
-    rx901_pos = $P10."pos"()
-  # rx subrule "statement" subtype=capture negate=
-    rx901_cur."!cursor_pos"(rx901_pos)
-    $P10 = rx901_cur."statement"()
-    unless $P10, rx901_fail
-    rx901_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("statement")
-    rx901_pos = $P10."pos"()
-  # rx subrule "ws" subtype=method negate=
-    rx901_cur."!cursor_pos"(rx901_pos)
-    $P10 = rx901_cur."ws"()
-    unless $P10, rx901_fail
-    rx901_pos = $P10."pos"()
+.sub "circumfix:sym<sigil>"  :subid("219_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 4
+    .local string rx898_tgt
+    .local int rx898_pos
+    .local int rx898_off
+    .local int rx898_eos
+    .local int rx898_rep
+    .local pmc rx898_cur
+    (rx898_cur, rx898_pos, rx898_tgt) = self."!cursor_start"()
+    rx898_cur."!cursor_debug"("START ", "circumfix:sym<sigil>")
+    .lex unicode:"$\x{a2}", rx898_cur
+    .local pmc match
+    .lex "$/", match
+    length rx898_eos, rx898_tgt
+    set rx898_off, 0
+    lt rx898_pos, 2, rx898_start
+    sub rx898_off, rx898_pos, 1
+    substr rx898_tgt, rx898_tgt, rx898_off
+  rx898_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan902_done
+    goto rxscan902_scan
+  rxscan902_loop:
+    ($P10) = rx898_cur."from"()
+    inc $P10
+    set rx898_pos, $P10
+    ge rx898_pos, rx898_eos, rxscan902_done
+  rxscan902_scan:
+    set_addr $I10, rxscan902_loop
+    rx898_cur."!mark_push"(0, rx898_pos, $I10)
+  rxscan902_done:
+.annotate "line", 416
+  # rx subrule "sigil" subtype=capture negate=
+    rx898_cur."!cursor_pos"(rx898_pos)
+    $P10 = rx898_cur."sigil"()
+    unless $P10, rx898_fail
+    rx898_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sigil")
+    rx898_pos = $P10."pos"()
+  # rx literal  "("
+    add $I11, rx898_pos, 1
+    gt $I11, rx898_eos, rx898_fail
+    sub $I11, rx898_pos, rx898_off
+    substr $S10, rx898_tgt, $I11, 1
+    ne $S10, "(", rx898_fail
+    add rx898_pos, 1
+  # rx subrule "semilist" subtype=capture negate=
+    rx898_cur."!cursor_pos"(rx898_pos)
+    $P10 = rx898_cur."semilist"()
+    unless $P10, rx898_fail
+    rx898_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("semilist")
+    rx898_pos = $P10."pos"()
+  alt903_0:
+    set_addr $I10, alt903_1
+    rx898_cur."!mark_push"(0, rx898_pos, $I10)
+  # rx literal  ")"
+    add $I11, rx898_pos, 1
+    gt $I11, rx898_eos, rx898_fail
+    sub $I11, rx898_pos, rx898_off
+    substr $S10, rx898_tgt, $I11, 1
+    ne $S10, ")", rx898_fail
+    add rx898_pos, 1
+    goto alt903_end
+  alt903_1:
+  # rx subrule "FAILGOAL" subtype=method negate=
+    rx898_cur."!cursor_pos"(rx898_pos)
+    $P10 = rx898_cur."FAILGOAL"("')'")
+    unless $P10, rx898_fail
+    rx898_pos = $P10."pos"()
+  alt903_end:
   # rx pass
-    rx901_cur."!cursor_pass"(rx901_pos, "semilist")
-    rx901_cur."!cursor_debug"("PASS  ", "semilist", " at pos=", rx901_pos)
-    .return (rx901_cur)
-  rx901_fail:
+    rx898_cur."!cursor_pass"(rx898_pos, "circumfix:sym<sigil>")
+    rx898_cur."!cursor_debug"("PASS  ", "circumfix:sym<sigil>", " at pos=", rx898_pos)
+    .return (rx898_cur)
+  rx898_fail:
 .annotate "line", 4
-    (rx901_rep, rx901_pos, $I10, $P10) = rx901_cur."!mark_fail"(0)
-    lt rx901_pos, -1, rx901_done
-    eq rx901_pos, -1, rx901_fail
+    (rx898_rep, rx898_pos, $I10, $P10) = rx898_cur."!mark_fail"(0)
+    lt rx898_pos, -1, rx898_done
+    eq rx898_pos, -1, rx898_fail
     jump $I10
-  rx901_done:
-    rx901_cur."!cursor_fail"()
-    rx901_cur."!cursor_debug"("FAIL  ", "semilist")
-    .return (rx901_cur)
+  rx898_done:
+    rx898_cur."!cursor_fail"()
+    rx898_cur."!cursor_debug"("FAIL  ", "circumfix:sym<sigil>")
+    .return (rx898_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__semilist"  :subid("220_1271336396.90314") :method
+.sub "!PREFIX__circumfix:sym<sigil>"  :subid("220_1271948667.92136") :method
 .annotate "line", 4
-    new $P903, "ResizablePMCArray"
-    push $P903, ""
-    .return ($P903)
+    $P900 = self."!PREFIX__!subrule"("sigil", "")
+    new $P901, "ResizablePMCArray"
+    push $P901, $P900
+    .return ($P901)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixish"  :subid("221_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx908_tgt
-    .local int rx908_pos
-    .local int rx908_off
-    .local int rx908_eos
-    .local int rx908_rep
-    .local pmc rx908_cur
-    (rx908_cur, rx908_pos, rx908_tgt) = self."!cursor_start"()
-    rx908_cur."!cursor_debug"("START ", "infixish")
-    .lex unicode:"$\x{a2}", rx908_cur
+.sub "semilist"  :subid("221_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 4
+    .local string rx906_tgt
+    .local int rx906_pos
+    .local int rx906_off
+    .local int rx906_eos
+    .local int rx906_rep
+    .local pmc rx906_cur
+    (rx906_cur, rx906_pos, rx906_tgt) = self."!cursor_start"()
+    rx906_cur."!cursor_debug"("START ", "semilist")
+    .lex unicode:"$\x{a2}", rx906_cur
     .local pmc match
     .lex "$/", match
-    length rx908_eos, rx908_tgt
-    set rx908_off, 0
-    lt rx908_pos, 2, rx908_start
-    sub rx908_off, rx908_pos, 1
-    substr rx908_tgt, rx908_tgt, rx908_off
-  rx908_start:
+    length rx906_eos, rx906_tgt
+    set rx906_off, 0
+    lt rx906_pos, 2, rx906_start
+    sub rx906_off, rx906_pos, 1
+    substr rx906_tgt, rx906_tgt, rx906_off
+  rx906_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan911_done
-    goto rxscan911_scan
-  rxscan911_loop:
-    ($P10) = rx908_cur."from"()
+    ne $I10, -1, rxscan909_done
+    goto rxscan909_scan
+  rxscan909_loop:
+    ($P10) = rx906_cur."from"()
     inc $P10
-    set rx908_pos, $P10
-    ge rx908_pos, rx908_eos, rxscan911_done
-  rxscan911_scan:
-    set_addr $I10, rxscan911_loop
-    rx908_cur."!mark_push"(0, rx908_pos, $I10)
-  rxscan911_done:
-.annotate "line", 440
-  # rx subrule "infixstopper" subtype=zerowidth negate=1
-    rx908_cur."!cursor_pos"(rx908_pos)
-    $P10 = rx908_cur."infixstopper"()
-    if $P10, rx908_fail
-  # rx subrule "infix" subtype=capture negate=
-    rx908_cur."!cursor_pos"(rx908_pos)
-    $P10 = rx908_cur."infix"()
-    unless $P10, rx908_fail
-    rx908_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("OPER=infix")
-    rx908_pos = $P10."pos"()
+    set rx906_pos, $P10
+    ge rx906_pos, rx906_eos, rxscan909_done
+  rxscan909_scan:
+    set_addr $I10, rxscan909_loop
+    rx906_cur."!mark_push"(0, rx906_pos, $I10)
+  rxscan909_done:
+.annotate "line", 418
+  # rx subrule "ws" subtype=method negate=
+    rx906_cur."!cursor_pos"(rx906_pos)
+    $P10 = rx906_cur."ws"()
+    unless $P10, rx906_fail
+    rx906_pos = $P10."pos"()
+  # rx subrule "statement" subtype=capture negate=
+    rx906_cur."!cursor_pos"(rx906_pos)
+    $P10 = rx906_cur."statement"()
+    unless $P10, rx906_fail
+    rx906_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("statement")
+    rx906_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx906_cur."!cursor_pos"(rx906_pos)
+    $P10 = rx906_cur."ws"()
+    unless $P10, rx906_fail
+    rx906_pos = $P10."pos"()
   # rx pass
-    rx908_cur."!cursor_pass"(rx908_pos, "infixish")
-    rx908_cur."!cursor_debug"("PASS  ", "infixish", " at pos=", rx908_pos)
-    .return (rx908_cur)
-  rx908_fail:
-.annotate "line", 421
-    (rx908_rep, rx908_pos, $I10, $P10) = rx908_cur."!mark_fail"(0)
-    lt rx908_pos, -1, rx908_done
-    eq rx908_pos, -1, rx908_fail
+    rx906_cur."!cursor_pass"(rx906_pos, "semilist")
+    rx906_cur."!cursor_debug"("PASS  ", "semilist", " at pos=", rx906_pos)
+    .return (rx906_cur)
+  rx906_fail:
+.annotate "line", 4
+    (rx906_rep, rx906_pos, $I10, $P10) = rx906_cur."!mark_fail"(0)
+    lt rx906_pos, -1, rx906_done
+    eq rx906_pos, -1, rx906_fail
     jump $I10
-  rx908_done:
-    rx908_cur."!cursor_fail"()
-    rx908_cur."!cursor_debug"("FAIL  ", "infixish")
-    .return (rx908_cur)
+  rx906_done:
+    rx906_cur."!cursor_fail"()
+    rx906_cur."!cursor_debug"("FAIL  ", "semilist")
+    .return (rx906_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("222_1271336396.90314") :method
-.annotate "line", 421
-    new $P910, "ResizablePMCArray"
-    push $P910, ""
-    .return ($P910)
+.sub "!PREFIX__semilist"  :subid("222_1271948667.92136") :method
+.annotate "line", 4
+    new $P908, "ResizablePMCArray"
+    push $P908, ""
+    .return ($P908)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixstopper"  :subid("223_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
+.sub "infixish"  :subid("223_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
     .local string rx913_tgt
     .local int rx913_pos
     .local int rx913_off
@@ -10948,7 +10950,7 @@
     .local int rx913_rep
     .local pmc rx913_cur
     (rx913_cur, rx913_pos, rx913_tgt) = self."!cursor_start"()
-    rx913_cur."!cursor_debug"("START ", "infixstopper")
+    rx913_cur."!cursor_debug"("START ", "infixish")
     .lex unicode:"$\x{a2}", rx913_cur
     .local pmc match
     .lex "$/", match
@@ -10971,31 +10973,38 @@
     rx913_cur."!mark_push"(0, rx913_pos, $I10)
   rxscan916_done:
 .annotate "line", 441
-  # rx subrule "lambda" subtype=zerowidth negate=
+  # rx subrule "infixstopper" subtype=zerowidth negate=1
+    rx913_cur."!cursor_pos"(rx913_pos)
+    $P10 = rx913_cur."infixstopper"()
+    if $P10, rx913_fail
+  # rx subrule "infix" subtype=capture negate=
     rx913_cur."!cursor_pos"(rx913_pos)
-    $P10 = rx913_cur."lambda"()
+    $P10 = rx913_cur."infix"()
     unless $P10, rx913_fail
+    rx913_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("OPER=infix")
+    rx913_pos = $P10."pos"()
   # rx pass
-    rx913_cur."!cursor_pass"(rx913_pos, "infixstopper")
-    rx913_cur."!cursor_debug"("PASS  ", "infixstopper", " at pos=", rx913_pos)
+    rx913_cur."!cursor_pass"(rx913_pos, "infixish")
+    rx913_cur."!cursor_debug"("PASS  ", "infixish", " at pos=", rx913_pos)
     .return (rx913_cur)
   rx913_fail:
-.annotate "line", 421
+.annotate "line", 422
     (rx913_rep, rx913_pos, $I10, $P10) = rx913_cur."!mark_fail"(0)
     lt rx913_pos, -1, rx913_done
     eq rx913_pos, -1, rx913_fail
     jump $I10
   rx913_done:
     rx913_cur."!cursor_fail"()
-    rx913_cur."!cursor_debug"("FAIL  ", "infixstopper")
+    rx913_cur."!cursor_debug"("FAIL  ", "infixish")
     .return (rx913_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixstopper"  :subid("224_1271336396.90314") :method
-.annotate "line", 421
+.sub "!PREFIX__infixish"  :subid("224_1271948667.92136") :method
+.annotate "line", 422
     new $P915, "ResizablePMCArray"
     push $P915, ""
     .return ($P915)
@@ -11003,8 +11012,8 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<[ ]>"  :subid("225_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
+.sub "infixstopper"  :subid("225_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
     .local string rx918_tgt
     .local int rx918_pos
     .local int rx918_off
@@ -11012,7 +11021,7 @@
     .local int rx918_rep
     .local pmc rx918_cur
     (rx918_cur, rx918_pos, rx918_tgt) = self."!cursor_start"()
-    rx918_cur."!cursor_debug"("START ", "postcircumfix:sym<[ ]>")
+    rx918_cur."!cursor_debug"("START ", "infixstopper")
     .lex unicode:"$\x{a2}", rx918_cur
     .local pmc match
     .lex "$/", match
@@ -11023,262 +11032,244 @@
     substr rx918_tgt, rx918_tgt, rx918_off
   rx918_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan922_done
-    goto rxscan922_scan
-  rxscan922_loop:
+    ne $I10, -1, rxscan921_done
+    goto rxscan921_scan
+  rxscan921_loop:
     ($P10) = rx918_cur."from"()
     inc $P10
     set rx918_pos, $P10
-    ge rx918_pos, rx918_eos, rxscan922_done
-  rxscan922_scan:
-    set_addr $I10, rxscan922_loop
+    ge rx918_pos, rx918_eos, rxscan921_done
+  rxscan921_scan:
+    set_addr $I10, rxscan921_loop
     rx918_cur."!mark_push"(0, rx918_pos, $I10)
-  rxscan922_done:
-.annotate "line", 444
-  # rx literal  "["
-    add $I11, rx918_pos, 1
-    gt $I11, rx918_eos, rx918_fail
-    sub $I11, rx918_pos, rx918_off
-    substr $S10, rx918_tgt, $I11, 1
-    ne $S10, "[", rx918_fail
-    add rx918_pos, 1
-  # rx subrule "ws" subtype=method negate=
-    rx918_cur."!cursor_pos"(rx918_pos)
-    $P10 = rx918_cur."ws"()
-    unless $P10, rx918_fail
-    rx918_pos = $P10."pos"()
-  # rx subrule "EXPR" subtype=capture negate=
-    rx918_cur."!cursor_pos"(rx918_pos)
-    $P10 = rx918_cur."EXPR"()
-    unless $P10, rx918_fail
-    rx918_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("EXPR")
-    rx918_pos = $P10."pos"()
-  # rx literal  "]"
-    add $I11, rx918_pos, 1
-    gt $I11, rx918_eos, rx918_fail
-    sub $I11, rx918_pos, rx918_off
-    substr $S10, rx918_tgt, $I11, 1
-    ne $S10, "]", rx918_fail
-    add rx918_pos, 1
-.annotate "line", 445
-  # rx subrule "O" subtype=capture negate=
+  rxscan921_done:
+.annotate "line", 442
+  # rx subrule "lambda" subtype=zerowidth negate=
     rx918_cur."!cursor_pos"(rx918_pos)
-    $P10 = rx918_cur."O"("%methodop")
+    $P10 = rx918_cur."lambda"()
     unless $P10, rx918_fail
-    rx918_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("O")
-    rx918_pos = $P10."pos"()
-.annotate "line", 443
   # rx pass
-    rx918_cur."!cursor_pass"(rx918_pos, "postcircumfix:sym<[ ]>")
-    rx918_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<[ ]>", " at pos=", rx918_pos)
+    rx918_cur."!cursor_pass"(rx918_pos, "infixstopper")
+    rx918_cur."!cursor_debug"("PASS  ", "infixstopper", " at pos=", rx918_pos)
     .return (rx918_cur)
   rx918_fail:
-.annotate "line", 421
+.annotate "line", 422
     (rx918_rep, rx918_pos, $I10, $P10) = rx918_cur."!mark_fail"(0)
     lt rx918_pos, -1, rx918_done
     eq rx918_pos, -1, rx918_fail
     jump $I10
   rx918_done:
     rx918_cur."!cursor_fail"()
-    rx918_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<[ ]>")
+    rx918_cur."!cursor_debug"("FAIL  ", "infixstopper")
     .return (rx918_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("226_1271336396.90314") :method
-.annotate "line", 421
-    $P920 = self."!PREFIX__!subrule"("", "[")
-    new $P921, "ResizablePMCArray"
-    push $P921, $P920
-    .return ($P921)
+.sub "!PREFIX__infixstopper"  :subid("226_1271948667.92136") :method
+.annotate "line", 422
+    new $P920, "ResizablePMCArray"
+    push $P920, ""
+    .return ($P920)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<{ }>"  :subid("227_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx924_tgt
-    .local int rx924_pos
-    .local int rx924_off
-    .local int rx924_eos
-    .local int rx924_rep
-    .local pmc rx924_cur
-    (rx924_cur, rx924_pos, rx924_tgt) = self."!cursor_start"()
-    rx924_cur."!cursor_debug"("START ", "postcircumfix:sym<{ }>")
-    .lex unicode:"$\x{a2}", rx924_cur
-    .local pmc match
-    .lex "$/", match
-    length rx924_eos, rx924_tgt
-    set rx924_off, 0
-    lt rx924_pos, 2, rx924_start
-    sub rx924_off, rx924_pos, 1
-    substr rx924_tgt, rx924_tgt, rx924_off
-  rx924_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan928_done
-    goto rxscan928_scan
-  rxscan928_loop:
-    ($P10) = rx924_cur."from"()
-    inc $P10
-    set rx924_pos, $P10
-    ge rx924_pos, rx924_eos, rxscan928_done
-  rxscan928_scan:
-    set_addr $I10, rxscan928_loop
-    rx924_cur."!mark_push"(0, rx924_pos, $I10)
-  rxscan928_done:
-.annotate "line", 449
-  # rx literal  "{"
-    add $I11, rx924_pos, 1
-    gt $I11, rx924_eos, rx924_fail
-    sub $I11, rx924_pos, rx924_off
-    substr $S10, rx924_tgt, $I11, 1
-    ne $S10, "{", rx924_fail
-    add rx924_pos, 1
-  # rx subrule "ws" subtype=method negate=
-    rx924_cur."!cursor_pos"(rx924_pos)
-    $P10 = rx924_cur."ws"()
-    unless $P10, rx924_fail
-    rx924_pos = $P10."pos"()
+.sub "postcircumfix:sym<[ ]>"  :subid("227_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx923_tgt
+    .local int rx923_pos
+    .local int rx923_off
+    .local int rx923_eos
+    .local int rx923_rep
+    .local pmc rx923_cur
+    (rx923_cur, rx923_pos, rx923_tgt) = self."!cursor_start"()
+    rx923_cur."!cursor_debug"("START ", "postcircumfix:sym<[ ]>")
+    .lex unicode:"$\x{a2}", rx923_cur
+    .local pmc match
+    .lex "$/", match
+    length rx923_eos, rx923_tgt
+    set rx923_off, 0
+    lt rx923_pos, 2, rx923_start
+    sub rx923_off, rx923_pos, 1
+    substr rx923_tgt, rx923_tgt, rx923_off
+  rx923_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan927_done
+    goto rxscan927_scan
+  rxscan927_loop:
+    ($P10) = rx923_cur."from"()
+    inc $P10
+    set rx923_pos, $P10
+    ge rx923_pos, rx923_eos, rxscan927_done
+  rxscan927_scan:
+    set_addr $I10, rxscan927_loop
+    rx923_cur."!mark_push"(0, rx923_pos, $I10)
+  rxscan927_done:
+.annotate "line", 445
+  # rx literal  "["
+    add $I11, rx923_pos, 1
+    gt $I11, rx923_eos, rx923_fail
+    sub $I11, rx923_pos, rx923_off
+    substr $S10, rx923_tgt, $I11, 1
+    ne $S10, "[", rx923_fail
+    add rx923_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx923_cur."!cursor_pos"(rx923_pos)
+    $P10 = rx923_cur."ws"()
+    unless $P10, rx923_fail
+    rx923_pos = $P10."pos"()
   # rx subrule "EXPR" subtype=capture negate=
-    rx924_cur."!cursor_pos"(rx924_pos)
-    $P10 = rx924_cur."EXPR"()
-    unless $P10, rx924_fail
-    rx924_cur."!mark_push"(0, -1, 0, $P10)
+    rx923_cur."!cursor_pos"(rx923_pos)
+    $P10 = rx923_cur."EXPR"()
+    unless $P10, rx923_fail
+    rx923_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("EXPR")
-    rx924_pos = $P10."pos"()
-  # rx literal  "}"
-    add $I11, rx924_pos, 1
-    gt $I11, rx924_eos, rx924_fail
-    sub $I11, rx924_pos, rx924_off
-    substr $S10, rx924_tgt, $I11, 1
-    ne $S10, "}", rx924_fail
-    add rx924_pos, 1
-.annotate "line", 450
+    rx923_pos = $P10."pos"()
+  # rx literal  "]"
+    add $I11, rx923_pos, 1
+    gt $I11, rx923_eos, rx923_fail
+    sub $I11, rx923_pos, rx923_off
+    substr $S10, rx923_tgt, $I11, 1
+    ne $S10, "]", rx923_fail
+    add rx923_pos, 1
+.annotate "line", 446
   # rx subrule "O" subtype=capture negate=
-    rx924_cur."!cursor_pos"(rx924_pos)
-    $P10 = rx924_cur."O"("%methodop")
-    unless $P10, rx924_fail
-    rx924_cur."!mark_push"(0, -1, 0, $P10)
+    rx923_cur."!cursor_pos"(rx923_pos)
+    $P10 = rx923_cur."O"("%methodop")
+    unless $P10, rx923_fail
+    rx923_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx924_pos = $P10."pos"()
-.annotate "line", 448
+    rx923_pos = $P10."pos"()
+.annotate "line", 444
   # rx pass
-    rx924_cur."!cursor_pass"(rx924_pos, "postcircumfix:sym<{ }>")
-    rx924_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<{ }>", " at pos=", rx924_pos)
-    .return (rx924_cur)
-  rx924_fail:
-.annotate "line", 421
-    (rx924_rep, rx924_pos, $I10, $P10) = rx924_cur."!mark_fail"(0)
-    lt rx924_pos, -1, rx924_done
-    eq rx924_pos, -1, rx924_fail
+    rx923_cur."!cursor_pass"(rx923_pos, "postcircumfix:sym<[ ]>")
+    rx923_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<[ ]>", " at pos=", rx923_pos)
+    .return (rx923_cur)
+  rx923_fail:
+.annotate "line", 422
+    (rx923_rep, rx923_pos, $I10, $P10) = rx923_cur."!mark_fail"(0)
+    lt rx923_pos, -1, rx923_done
+    eq rx923_pos, -1, rx923_fail
     jump $I10
-  rx924_done:
-    rx924_cur."!cursor_fail"()
-    rx924_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<{ }>")
-    .return (rx924_cur)
+  rx923_done:
+    rx923_cur."!cursor_fail"()
+    rx923_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<[ ]>")
+    .return (rx923_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("228_1271336396.90314") :method
-.annotate "line", 421
-    $P926 = self."!PREFIX__!subrule"("", "{")
-    new $P927, "ResizablePMCArray"
-    push $P927, $P926
-    .return ($P927)
+.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("228_1271948667.92136") :method
+.annotate "line", 422
+    $P925 = self."!PREFIX__!subrule"("", "[")
+    new $P926, "ResizablePMCArray"
+    push $P926, $P925
+    .return ($P926)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<ang>"  :subid("229_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx930_tgt
-    .local int rx930_pos
-    .local int rx930_off
-    .local int rx930_eos
-    .local int rx930_rep
-    .local pmc rx930_cur
-    (rx930_cur, rx930_pos, rx930_tgt) = self."!cursor_start"()
-    rx930_cur."!cursor_debug"("START ", "postcircumfix:sym<ang>")
-    .lex unicode:"$\x{a2}", rx930_cur
-    .local pmc match
-    .lex "$/", match
-    length rx930_eos, rx930_tgt
-    set rx930_off, 0
-    lt rx930_pos, 2, rx930_start
-    sub rx930_off, rx930_pos, 1
-    substr rx930_tgt, rx930_tgt, rx930_off
-  rx930_start:
+.sub "postcircumfix:sym<{ }>"  :subid("229_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx929_tgt
+    .local int rx929_pos
+    .local int rx929_off
+    .local int rx929_eos
+    .local int rx929_rep
+    .local pmc rx929_cur
+    (rx929_cur, rx929_pos, rx929_tgt) = self."!cursor_start"()
+    rx929_cur."!cursor_debug"("START ", "postcircumfix:sym<{ }>")
+    .lex unicode:"$\x{a2}", rx929_cur
+    .local pmc match
+    .lex "$/", match
+    length rx929_eos, rx929_tgt
+    set rx929_off, 0
+    lt rx929_pos, 2, rx929_start
+    sub rx929_off, rx929_pos, 1
+    substr rx929_tgt, rx929_tgt, rx929_off
+  rx929_start:
     $I10 = self.'from'()
     ne $I10, -1, rxscan933_done
     goto rxscan933_scan
   rxscan933_loop:
-    ($P10) = rx930_cur."from"()
+    ($P10) = rx929_cur."from"()
     inc $P10
-    set rx930_pos, $P10
-    ge rx930_pos, rx930_eos, rxscan933_done
+    set rx929_pos, $P10
+    ge rx929_pos, rx929_eos, rxscan933_done
   rxscan933_scan:
     set_addr $I10, rxscan933_loop
-    rx930_cur."!mark_push"(0, rx930_pos, $I10)
+    rx929_cur."!mark_push"(0, rx929_pos, $I10)
   rxscan933_done:
-.annotate "line", 454
-  # rx enumcharlist negate=0 zerowidth
-    ge rx930_pos, rx930_eos, rx930_fail
-    sub $I10, rx930_pos, rx930_off
-    substr $S10, rx930_tgt, $I10, 1
-    index $I11, "<", $S10
-    lt $I11, 0, rx930_fail
-  # rx subrule "quote_EXPR" subtype=capture negate=
-    rx930_cur."!cursor_pos"(rx930_pos)
-    $P10 = rx930_cur."quote_EXPR"(":q")
-    unless $P10, rx930_fail
-    rx930_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("quote_EXPR")
-    rx930_pos = $P10."pos"()
-.annotate "line", 455
+.annotate "line", 450
+  # rx literal  "{"
+    add $I11, rx929_pos, 1
+    gt $I11, rx929_eos, rx929_fail
+    sub $I11, rx929_pos, rx929_off
+    substr $S10, rx929_tgt, $I11, 1
+    ne $S10, "{", rx929_fail
+    add rx929_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx929_cur."!cursor_pos"(rx929_pos)
+    $P10 = rx929_cur."ws"()
+    unless $P10, rx929_fail
+    rx929_pos = $P10."pos"()
+  # rx subrule "EXPR" subtype=capture negate=
+    rx929_cur."!cursor_pos"(rx929_pos)
+    $P10 = rx929_cur."EXPR"()
+    unless $P10, rx929_fail
+    rx929_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx929_pos = $P10."pos"()
+  # rx literal  "}"
+    add $I11, rx929_pos, 1
+    gt $I11, rx929_eos, rx929_fail
+    sub $I11, rx929_pos, rx929_off
+    substr $S10, rx929_tgt, $I11, 1
+    ne $S10, "}", rx929_fail
+    add rx929_pos, 1
+.annotate "line", 451
   # rx subrule "O" subtype=capture negate=
-    rx930_cur."!cursor_pos"(rx930_pos)
-    $P10 = rx930_cur."O"("%methodop")
-    unless $P10, rx930_fail
-    rx930_cur."!mark_push"(0, -1, 0, $P10)
+    rx929_cur."!cursor_pos"(rx929_pos)
+    $P10 = rx929_cur."O"("%methodop")
+    unless $P10, rx929_fail
+    rx929_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx930_pos = $P10."pos"()
-.annotate "line", 453
+    rx929_pos = $P10."pos"()
+.annotate "line", 449
   # rx pass
-    rx930_cur."!cursor_pass"(rx930_pos, "postcircumfix:sym<ang>")
-    rx930_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<ang>", " at pos=", rx930_pos)
-    .return (rx930_cur)
-  rx930_fail:
-.annotate "line", 421
-    (rx930_rep, rx930_pos, $I10, $P10) = rx930_cur."!mark_fail"(0)
-    lt rx930_pos, -1, rx930_done
-    eq rx930_pos, -1, rx930_fail
+    rx929_cur."!cursor_pass"(rx929_pos, "postcircumfix:sym<{ }>")
+    rx929_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<{ }>", " at pos=", rx929_pos)
+    .return (rx929_cur)
+  rx929_fail:
+.annotate "line", 422
+    (rx929_rep, rx929_pos, $I10, $P10) = rx929_cur."!mark_fail"(0)
+    lt rx929_pos, -1, rx929_done
+    eq rx929_pos, -1, rx929_fail
     jump $I10
-  rx930_done:
-    rx930_cur."!cursor_fail"()
-    rx930_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<ang>")
-    .return (rx930_cur)
+  rx929_done:
+    rx929_cur."!cursor_fail"()
+    rx929_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<{ }>")
+    .return (rx929_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("230_1271336396.90314") :method
-.annotate "line", 421
+.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("230_1271948667.92136") :method
+.annotate "line", 422
+    $P931 = self."!PREFIX__!subrule"("", "{")
     new $P932, "ResizablePMCArray"
-    push $P932, "<"
+    push $P932, $P931
     .return ($P932)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<( )>"  :subid("231_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
+.sub "postcircumfix:sym<ang>"  :subid("231_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
     .local string rx935_tgt
     .local int rx935_pos
     .local int rx935_off
@@ -11286,7 +11277,7 @@
     .local int rx935_rep
     .local pmc rx935_cur
     (rx935_cur, rx935_pos, rx935_tgt) = self."!cursor_start"()
-    rx935_cur."!cursor_debug"("START ", "postcircumfix:sym<( )>")
+    rx935_cur."!cursor_debug"("START ", "postcircumfix:sym<ang>")
     .lex unicode:"$\x{a2}", rx935_cur
     .local pmc match
     .lex "$/", match
@@ -11297,45 +11288,32 @@
     substr rx935_tgt, rx935_tgt, rx935_off
   rx935_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan939_done
-    goto rxscan939_scan
-  rxscan939_loop:
+    ne $I10, -1, rxscan938_done
+    goto rxscan938_scan
+  rxscan938_loop:
     ($P10) = rx935_cur."from"()
     inc $P10
     set rx935_pos, $P10
-    ge rx935_pos, rx935_eos, rxscan939_done
-  rxscan939_scan:
-    set_addr $I10, rxscan939_loop
+    ge rx935_pos, rx935_eos, rxscan938_done
+  rxscan938_scan:
+    set_addr $I10, rxscan938_loop
     rx935_cur."!mark_push"(0, rx935_pos, $I10)
-  rxscan939_done:
-.annotate "line", 459
-  # rx literal  "("
-    add $I11, rx935_pos, 1
-    gt $I11, rx935_eos, rx935_fail
-    sub $I11, rx935_pos, rx935_off
-    substr $S10, rx935_tgt, $I11, 1
-    ne $S10, "(", rx935_fail
-    add rx935_pos, 1
-  # rx subrule "ws" subtype=method negate=
-    rx935_cur."!cursor_pos"(rx935_pos)
-    $P10 = rx935_cur."ws"()
-    unless $P10, rx935_fail
-    rx935_pos = $P10."pos"()
-  # rx subrule "arglist" subtype=capture negate=
+  rxscan938_done:
+.annotate "line", 455
+  # rx enumcharlist negate=0 zerowidth
+    ge rx935_pos, rx935_eos, rx935_fail
+    sub $I10, rx935_pos, rx935_off
+    substr $S10, rx935_tgt, $I10, 1
+    index $I11, "<", $S10
+    lt $I11, 0, rx935_fail
+  # rx subrule "quote_EXPR" subtype=capture negate=
     rx935_cur."!cursor_pos"(rx935_pos)
-    $P10 = rx935_cur."arglist"()
+    $P10 = rx935_cur."quote_EXPR"(":q")
     unless $P10, rx935_fail
     rx935_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("arglist")
+    $P10."!cursor_names"("quote_EXPR")
     rx935_pos = $P10."pos"()
-  # rx literal  ")"
-    add $I11, rx935_pos, 1
-    gt $I11, rx935_eos, rx935_fail
-    sub $I11, rx935_pos, rx935_off
-    substr $S10, rx935_tgt, $I11, 1
-    ne $S10, ")", rx935_fail
-    add rx935_pos, 1
-.annotate "line", 460
+.annotate "line", 456
   # rx subrule "O" subtype=capture negate=
     rx935_cur."!cursor_pos"(rx935_pos)
     $P10 = rx935_cur."O"("%methodop")
@@ -11343,4087 +11321,4108 @@
     rx935_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
     rx935_pos = $P10."pos"()
-.annotate "line", 458
+.annotate "line", 454
   # rx pass
-    rx935_cur."!cursor_pass"(rx935_pos, "postcircumfix:sym<( )>")
-    rx935_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<( )>", " at pos=", rx935_pos)
+    rx935_cur."!cursor_pass"(rx935_pos, "postcircumfix:sym<ang>")
+    rx935_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<ang>", " at pos=", rx935_pos)
     .return (rx935_cur)
   rx935_fail:
-.annotate "line", 421
+.annotate "line", 422
     (rx935_rep, rx935_pos, $I10, $P10) = rx935_cur."!mark_fail"(0)
     lt rx935_pos, -1, rx935_done
     eq rx935_pos, -1, rx935_fail
     jump $I10
   rx935_done:
     rx935_cur."!cursor_fail"()
-    rx935_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<( )>")
+    rx935_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<ang>")
     .return (rx935_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("232_1271336396.90314") :method
-.annotate "line", 421
-    $P937 = self."!PREFIX__!subrule"("", "(")
-    new $P938, "ResizablePMCArray"
-    push $P938, $P937
-    .return ($P938)
+.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("232_1271948667.92136") :method
+.annotate "line", 422
+    new $P937, "ResizablePMCArray"
+    push $P937, "<"
+    .return ($P937)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<.>"  :subid("233_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx941_tgt
-    .local int rx941_pos
-    .local int rx941_off
-    .local int rx941_eos
-    .local int rx941_rep
-    .local pmc rx941_cur
-    (rx941_cur, rx941_pos, rx941_tgt) = self."!cursor_start"()
-    rx941_cur."!cursor_debug"("START ", "postfix:sym<.>")
-    .lex unicode:"$\x{a2}", rx941_cur
-    .local pmc match
-    .lex "$/", match
-    length rx941_eos, rx941_tgt
-    set rx941_off, 0
-    lt rx941_pos, 2, rx941_start
-    sub rx941_off, rx941_pos, 1
-    substr rx941_tgt, rx941_tgt, rx941_off
-  rx941_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan945_done
-    goto rxscan945_scan
-  rxscan945_loop:
-    ($P10) = rx941_cur."from"()
-    inc $P10
-    set rx941_pos, $P10
-    ge rx941_pos, rx941_eos, rxscan945_done
-  rxscan945_scan:
-    set_addr $I10, rxscan945_loop
-    rx941_cur."!mark_push"(0, rx941_pos, $I10)
-  rxscan945_done:
-.annotate "line", 463
-  # rx subrule "dotty" subtype=capture negate=
-    rx941_cur."!cursor_pos"(rx941_pos)
-    $P10 = rx941_cur."dotty"()
-    unless $P10, rx941_fail
-    rx941_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("dotty")
-    rx941_pos = $P10."pos"()
+.sub "postcircumfix:sym<( )>"  :subid("233_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx940_tgt
+    .local int rx940_pos
+    .local int rx940_off
+    .local int rx940_eos
+    .local int rx940_rep
+    .local pmc rx940_cur
+    (rx940_cur, rx940_pos, rx940_tgt) = self."!cursor_start"()
+    rx940_cur."!cursor_debug"("START ", "postcircumfix:sym<( )>")
+    .lex unicode:"$\x{a2}", rx940_cur
+    .local pmc match
+    .lex "$/", match
+    length rx940_eos, rx940_tgt
+    set rx940_off, 0
+    lt rx940_pos, 2, rx940_start
+    sub rx940_off, rx940_pos, 1
+    substr rx940_tgt, rx940_tgt, rx940_off
+  rx940_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan944_done
+    goto rxscan944_scan
+  rxscan944_loop:
+    ($P10) = rx940_cur."from"()
+    inc $P10
+    set rx940_pos, $P10
+    ge rx940_pos, rx940_eos, rxscan944_done
+  rxscan944_scan:
+    set_addr $I10, rxscan944_loop
+    rx940_cur."!mark_push"(0, rx940_pos, $I10)
+  rxscan944_done:
+.annotate "line", 460
+  # rx literal  "("
+    add $I11, rx940_pos, 1
+    gt $I11, rx940_eos, rx940_fail
+    sub $I11, rx940_pos, rx940_off
+    substr $S10, rx940_tgt, $I11, 1
+    ne $S10, "(", rx940_fail
+    add rx940_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx940_cur."!cursor_pos"(rx940_pos)
+    $P10 = rx940_cur."ws"()
+    unless $P10, rx940_fail
+    rx940_pos = $P10."pos"()
+  # rx subrule "arglist" subtype=capture negate=
+    rx940_cur."!cursor_pos"(rx940_pos)
+    $P10 = rx940_cur."arglist"()
+    unless $P10, rx940_fail
+    rx940_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("arglist")
+    rx940_pos = $P10."pos"()
+  # rx literal  ")"
+    add $I11, rx940_pos, 1
+    gt $I11, rx940_eos, rx940_fail
+    sub $I11, rx940_pos, rx940_off
+    substr $S10, rx940_tgt, $I11, 1
+    ne $S10, ")", rx940_fail
+    add rx940_pos, 1
+.annotate "line", 461
   # rx subrule "O" subtype=capture negate=
-    rx941_cur."!cursor_pos"(rx941_pos)
-    $P10 = rx941_cur."O"("%methodop")
-    unless $P10, rx941_fail
-    rx941_cur."!mark_push"(0, -1, 0, $P10)
+    rx940_cur."!cursor_pos"(rx940_pos)
+    $P10 = rx940_cur."O"("%methodop")
+    unless $P10, rx940_fail
+    rx940_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx941_pos = $P10."pos"()
+    rx940_pos = $P10."pos"()
+.annotate "line", 459
   # rx pass
-    rx941_cur."!cursor_pass"(rx941_pos, "postfix:sym<.>")
-    rx941_cur."!cursor_debug"("PASS  ", "postfix:sym<.>", " at pos=", rx941_pos)
-    .return (rx941_cur)
-  rx941_fail:
-.annotate "line", 421
-    (rx941_rep, rx941_pos, $I10, $P10) = rx941_cur."!mark_fail"(0)
-    lt rx941_pos, -1, rx941_done
-    eq rx941_pos, -1, rx941_fail
-    jump $I10
-  rx941_done:
-    rx941_cur."!cursor_fail"()
-    rx941_cur."!cursor_debug"("FAIL  ", "postfix:sym<.>")
-    .return (rx941_cur)
+    rx940_cur."!cursor_pass"(rx940_pos, "postcircumfix:sym<( )>")
+    rx940_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<( )>", " at pos=", rx940_pos)
+    .return (rx940_cur)
+  rx940_fail:
+.annotate "line", 422
+    (rx940_rep, rx940_pos, $I10, $P10) = rx940_cur."!mark_fail"(0)
+    lt rx940_pos, -1, rx940_done
+    eq rx940_pos, -1, rx940_fail
+    jump $I10
+  rx940_done:
+    rx940_cur."!cursor_fail"()
+    rx940_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<( )>")
+    .return (rx940_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<.>"  :subid("234_1271336396.90314") :method
-.annotate "line", 421
-    $P943 = self."!PREFIX__!subrule"("dotty", "")
-    new $P944, "ResizablePMCArray"
-    push $P944, $P943
-    .return ($P944)
+.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("234_1271948667.92136") :method
+.annotate "line", 422
+    $P942 = self."!PREFIX__!subrule"("", "(")
+    new $P943, "ResizablePMCArray"
+    push $P943, $P942
+    .return ($P943)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<++>"  :subid("235_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx947_tgt
-    .local int rx947_pos
-    .local int rx947_off
-    .local int rx947_eos
-    .local int rx947_rep
-    .local pmc rx947_cur
-    (rx947_cur, rx947_pos, rx947_tgt) = self."!cursor_start"()
-    rx947_cur."!cursor_debug"("START ", "prefix:sym<++>")
-    .lex unicode:"$\x{a2}", rx947_cur
-    .local pmc match
-    .lex "$/", match
-    length rx947_eos, rx947_tgt
-    set rx947_off, 0
-    lt rx947_pos, 2, rx947_start
-    sub rx947_off, rx947_pos, 1
-    substr rx947_tgt, rx947_tgt, rx947_off
-  rx947_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan951_done
-    goto rxscan951_scan
-  rxscan951_loop:
-    ($P10) = rx947_cur."from"()
-    inc $P10
-    set rx947_pos, $P10
-    ge rx947_pos, rx947_eos, rxscan951_done
-  rxscan951_scan:
-    set_addr $I10, rxscan951_loop
-    rx947_cur."!mark_push"(0, rx947_pos, $I10)
-  rxscan951_done:
-.annotate "line", 465
-  # rx subcapture "sym"
-    set_addr $I10, rxcap_952_fail
-    rx947_cur."!mark_push"(0, rx947_pos, $I10)
-  # rx literal  "++"
-    add $I11, rx947_pos, 2
-    gt $I11, rx947_eos, rx947_fail
-    sub $I11, rx947_pos, rx947_off
-    substr $S10, rx947_tgt, $I11, 2
-    ne $S10, "++", rx947_fail
-    add rx947_pos, 2
-    set_addr $I10, rxcap_952_fail
-    ($I12, $I11) = rx947_cur."!mark_peek"($I10)
-    rx947_cur."!cursor_pos"($I11)
-    ($P10) = rx947_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx947_pos, "")
-    rx947_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("sym")
-    goto rxcap_952_done
-  rxcap_952_fail:
-    goto rx947_fail
-  rxcap_952_done:
+.sub "postfix:sym<.>"  :subid("235_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx946_tgt
+    .local int rx946_pos
+    .local int rx946_off
+    .local int rx946_eos
+    .local int rx946_rep
+    .local pmc rx946_cur
+    (rx946_cur, rx946_pos, rx946_tgt) = self."!cursor_start"()
+    rx946_cur."!cursor_debug"("START ", "postfix:sym<.>")
+    .lex unicode:"$\x{a2}", rx946_cur
+    .local pmc match
+    .lex "$/", match
+    length rx946_eos, rx946_tgt
+    set rx946_off, 0
+    lt rx946_pos, 2, rx946_start
+    sub rx946_off, rx946_pos, 1
+    substr rx946_tgt, rx946_tgt, rx946_off
+  rx946_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan950_done
+    goto rxscan950_scan
+  rxscan950_loop:
+    ($P10) = rx946_cur."from"()
+    inc $P10
+    set rx946_pos, $P10
+    ge rx946_pos, rx946_eos, rxscan950_done
+  rxscan950_scan:
+    set_addr $I10, rxscan950_loop
+    rx946_cur."!mark_push"(0, rx946_pos, $I10)
+  rxscan950_done:
+.annotate "line", 464
+  # rx subrule "dotty" subtype=capture negate=
+    rx946_cur."!cursor_pos"(rx946_pos)
+    $P10 = rx946_cur."dotty"()
+    unless $P10, rx946_fail
+    rx946_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("dotty")
+    rx946_pos = $P10."pos"()
   # rx subrule "O" subtype=capture negate=
-    rx947_cur."!cursor_pos"(rx947_pos)
-    $P10 = rx947_cur."O"("%autoincrement, :pirop<inc>")
-    unless $P10, rx947_fail
-    rx947_cur."!mark_push"(0, -1, 0, $P10)
+    rx946_cur."!cursor_pos"(rx946_pos)
+    $P10 = rx946_cur."O"("%methodop")
+    unless $P10, rx946_fail
+    rx946_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx947_pos = $P10."pos"()
+    rx946_pos = $P10."pos"()
   # rx pass
-    rx947_cur."!cursor_pass"(rx947_pos, "prefix:sym<++>")
-    rx947_cur."!cursor_debug"("PASS  ", "prefix:sym<++>", " at pos=", rx947_pos)
-    .return (rx947_cur)
-  rx947_fail:
-.annotate "line", 421
-    (rx947_rep, rx947_pos, $I10, $P10) = rx947_cur."!mark_fail"(0)
-    lt rx947_pos, -1, rx947_done
-    eq rx947_pos, -1, rx947_fail
-    jump $I10
-  rx947_done:
-    rx947_cur."!cursor_fail"()
-    rx947_cur."!cursor_debug"("FAIL  ", "prefix:sym<++>")
-    .return (rx947_cur)
+    rx946_cur."!cursor_pass"(rx946_pos, "postfix:sym<.>")
+    rx946_cur."!cursor_debug"("PASS  ", "postfix:sym<.>", " at pos=", rx946_pos)
+    .return (rx946_cur)
+  rx946_fail:
+.annotate "line", 422
+    (rx946_rep, rx946_pos, $I10, $P10) = rx946_cur."!mark_fail"(0)
+    lt rx946_pos, -1, rx946_done
+    eq rx946_pos, -1, rx946_fail
+    jump $I10
+  rx946_done:
+    rx946_cur."!cursor_fail"()
+    rx946_cur."!cursor_debug"("FAIL  ", "postfix:sym<.>")
+    .return (rx946_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<++>"  :subid("236_1271336396.90314") :method
-.annotate "line", 421
-    $P949 = self."!PREFIX__!subrule"("O", "++")
-    new $P950, "ResizablePMCArray"
-    push $P950, $P949
-    .return ($P950)
+.sub "!PREFIX__postfix:sym<.>"  :subid("236_1271948667.92136") :method
+.annotate "line", 422
+    $P948 = self."!PREFIX__!subrule"("dotty", "")
+    new $P949, "ResizablePMCArray"
+    push $P949, $P948
+    .return ($P949)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<-->"  :subid("237_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx954_tgt
-    .local int rx954_pos
-    .local int rx954_off
-    .local int rx954_eos
-    .local int rx954_rep
-    .local pmc rx954_cur
-    (rx954_cur, rx954_pos, rx954_tgt) = self."!cursor_start"()
-    rx954_cur."!cursor_debug"("START ", "prefix:sym<-->")
-    .lex unicode:"$\x{a2}", rx954_cur
-    .local pmc match
-    .lex "$/", match
-    length rx954_eos, rx954_tgt
-    set rx954_off, 0
-    lt rx954_pos, 2, rx954_start
-    sub rx954_off, rx954_pos, 1
-    substr rx954_tgt, rx954_tgt, rx954_off
-  rx954_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan958_done
-    goto rxscan958_scan
-  rxscan958_loop:
-    ($P10) = rx954_cur."from"()
-    inc $P10
-    set rx954_pos, $P10
-    ge rx954_pos, rx954_eos, rxscan958_done
-  rxscan958_scan:
-    set_addr $I10, rxscan958_loop
-    rx954_cur."!mark_push"(0, rx954_pos, $I10)
-  rxscan958_done:
+.sub "prefix:sym<++>"  :subid("237_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx952_tgt
+    .local int rx952_pos
+    .local int rx952_off
+    .local int rx952_eos
+    .local int rx952_rep
+    .local pmc rx952_cur
+    (rx952_cur, rx952_pos, rx952_tgt) = self."!cursor_start"()
+    rx952_cur."!cursor_debug"("START ", "prefix:sym<++>")
+    .lex unicode:"$\x{a2}", rx952_cur
+    .local pmc match
+    .lex "$/", match
+    length rx952_eos, rx952_tgt
+    set rx952_off, 0
+    lt rx952_pos, 2, rx952_start
+    sub rx952_off, rx952_pos, 1
+    substr rx952_tgt, rx952_tgt, rx952_off
+  rx952_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan956_done
+    goto rxscan956_scan
+  rxscan956_loop:
+    ($P10) = rx952_cur."from"()
+    inc $P10
+    set rx952_pos, $P10
+    ge rx952_pos, rx952_eos, rxscan956_done
+  rxscan956_scan:
+    set_addr $I10, rxscan956_loop
+    rx952_cur."!mark_push"(0, rx952_pos, $I10)
+  rxscan956_done:
 .annotate "line", 466
   # rx subcapture "sym"
-    set_addr $I10, rxcap_959_fail
-    rx954_cur."!mark_push"(0, rx954_pos, $I10)
-  # rx literal  "--"
-    add $I11, rx954_pos, 2
-    gt $I11, rx954_eos, rx954_fail
-    sub $I11, rx954_pos, rx954_off
-    substr $S10, rx954_tgt, $I11, 2
-    ne $S10, "--", rx954_fail
-    add rx954_pos, 2
-    set_addr $I10, rxcap_959_fail
-    ($I12, $I11) = rx954_cur."!mark_peek"($I10)
-    rx954_cur."!cursor_pos"($I11)
-    ($P10) = rx954_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx954_pos, "")
-    rx954_cur."!mark_push"(0, -1, 0, $P10)
+    set_addr $I10, rxcap_957_fail
+    rx952_cur."!mark_push"(0, rx952_pos, $I10)
+  # rx literal  "++"
+    add $I11, rx952_pos, 2
+    gt $I11, rx952_eos, rx952_fail
+    sub $I11, rx952_pos, rx952_off
+    substr $S10, rx952_tgt, $I11, 2
+    ne $S10, "++", rx952_fail
+    add rx952_pos, 2
+    set_addr $I10, rxcap_957_fail
+    ($I12, $I11) = rx952_cur."!mark_peek"($I10)
+    rx952_cur."!cursor_pos"($I11)
+    ($P10) = rx952_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx952_pos, "")
+    rx952_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_959_done
-  rxcap_959_fail:
-    goto rx954_fail
-  rxcap_959_done:
+    goto rxcap_957_done
+  rxcap_957_fail:
+    goto rx952_fail
+  rxcap_957_done:
   # rx subrule "O" subtype=capture negate=
-    rx954_cur."!cursor_pos"(rx954_pos)
-    $P10 = rx954_cur."O"("%autoincrement, :pirop<dec>")
-    unless $P10, rx954_fail
-    rx954_cur."!mark_push"(0, -1, 0, $P10)
+    rx952_cur."!cursor_pos"(rx952_pos)
+    $P10 = rx952_cur."O"("%autoincrement, :pirop<inc>")
+    unless $P10, rx952_fail
+    rx952_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx954_pos = $P10."pos"()
+    rx952_pos = $P10."pos"()
   # rx pass
-    rx954_cur."!cursor_pass"(rx954_pos, "prefix:sym<-->")
-    rx954_cur."!cursor_debug"("PASS  ", "prefix:sym<-->", " at pos=", rx954_pos)
-    .return (rx954_cur)
-  rx954_fail:
-.annotate "line", 421
-    (rx954_rep, rx954_pos, $I10, $P10) = rx954_cur."!mark_fail"(0)
-    lt rx954_pos, -1, rx954_done
-    eq rx954_pos, -1, rx954_fail
-    jump $I10
-  rx954_done:
-    rx954_cur."!cursor_fail"()
-    rx954_cur."!cursor_debug"("FAIL  ", "prefix:sym<-->")
-    .return (rx954_cur)
+    rx952_cur."!cursor_pass"(rx952_pos, "prefix:sym<++>")
+    rx952_cur."!cursor_debug"("PASS  ", "prefix:sym<++>", " at pos=", rx952_pos)
+    .return (rx952_cur)
+  rx952_fail:
+.annotate "line", 422
+    (rx952_rep, rx952_pos, $I10, $P10) = rx952_cur."!mark_fail"(0)
+    lt rx952_pos, -1, rx952_done
+    eq rx952_pos, -1, rx952_fail
+    jump $I10
+  rx952_done:
+    rx952_cur."!cursor_fail"()
+    rx952_cur."!cursor_debug"("FAIL  ", "prefix:sym<++>")
+    .return (rx952_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<-->"  :subid("238_1271336396.90314") :method
-.annotate "line", 421
-    $P956 = self."!PREFIX__!subrule"("O", "--")
-    new $P957, "ResizablePMCArray"
-    push $P957, $P956
-    .return ($P957)
+.sub "!PREFIX__prefix:sym<++>"  :subid("238_1271948667.92136") :method
+.annotate "line", 422
+    $P954 = self."!PREFIX__!subrule"("O", "++")
+    new $P955, "ResizablePMCArray"
+    push $P955, $P954
+    .return ($P955)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<++>"  :subid("239_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx961_tgt
-    .local int rx961_pos
-    .local int rx961_off
-    .local int rx961_eos
-    .local int rx961_rep
-    .local pmc rx961_cur
-    (rx961_cur, rx961_pos, rx961_tgt) = self."!cursor_start"()
-    rx961_cur."!cursor_debug"("START ", "postfix:sym<++>")
-    .lex unicode:"$\x{a2}", rx961_cur
-    .local pmc match
-    .lex "$/", match
-    length rx961_eos, rx961_tgt
-    set rx961_off, 0
-    lt rx961_pos, 2, rx961_start
-    sub rx961_off, rx961_pos, 1
-    substr rx961_tgt, rx961_tgt, rx961_off
-  rx961_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan965_done
-    goto rxscan965_scan
-  rxscan965_loop:
-    ($P10) = rx961_cur."from"()
-    inc $P10
-    set rx961_pos, $P10
-    ge rx961_pos, rx961_eos, rxscan965_done
-  rxscan965_scan:
-    set_addr $I10, rxscan965_loop
-    rx961_cur."!mark_push"(0, rx961_pos, $I10)
-  rxscan965_done:
-.annotate "line", 469
+.sub "prefix:sym<-->"  :subid("239_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx959_tgt
+    .local int rx959_pos
+    .local int rx959_off
+    .local int rx959_eos
+    .local int rx959_rep
+    .local pmc rx959_cur
+    (rx959_cur, rx959_pos, rx959_tgt) = self."!cursor_start"()
+    rx959_cur."!cursor_debug"("START ", "prefix:sym<-->")
+    .lex unicode:"$\x{a2}", rx959_cur
+    .local pmc match
+    .lex "$/", match
+    length rx959_eos, rx959_tgt
+    set rx959_off, 0
+    lt rx959_pos, 2, rx959_start
+    sub rx959_off, rx959_pos, 1
+    substr rx959_tgt, rx959_tgt, rx959_off
+  rx959_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan963_done
+    goto rxscan963_scan
+  rxscan963_loop:
+    ($P10) = rx959_cur."from"()
+    inc $P10
+    set rx959_pos, $P10
+    ge rx959_pos, rx959_eos, rxscan963_done
+  rxscan963_scan:
+    set_addr $I10, rxscan963_loop
+    rx959_cur."!mark_push"(0, rx959_pos, $I10)
+  rxscan963_done:
+.annotate "line", 467
   # rx subcapture "sym"
-    set_addr $I10, rxcap_966_fail
-    rx961_cur."!mark_push"(0, rx961_pos, $I10)
-  # rx literal  "++"
-    add $I11, rx961_pos, 2
-    gt $I11, rx961_eos, rx961_fail
-    sub $I11, rx961_pos, rx961_off
-    substr $S10, rx961_tgt, $I11, 2
-    ne $S10, "++", rx961_fail
-    add rx961_pos, 2
-    set_addr $I10, rxcap_966_fail
-    ($I12, $I11) = rx961_cur."!mark_peek"($I10)
-    rx961_cur."!cursor_pos"($I11)
-    ($P10) = rx961_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx961_pos, "")
-    rx961_cur."!mark_push"(0, -1, 0, $P10)
+    set_addr $I10, rxcap_964_fail
+    rx959_cur."!mark_push"(0, rx959_pos, $I10)
+  # rx literal  "--"
+    add $I11, rx959_pos, 2
+    gt $I11, rx959_eos, rx959_fail
+    sub $I11, rx959_pos, rx959_off
+    substr $S10, rx959_tgt, $I11, 2
+    ne $S10, "--", rx959_fail
+    add rx959_pos, 2
+    set_addr $I10, rxcap_964_fail
+    ($I12, $I11) = rx959_cur."!mark_peek"($I10)
+    rx959_cur."!cursor_pos"($I11)
+    ($P10) = rx959_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx959_pos, "")
+    rx959_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_966_done
-  rxcap_966_fail:
-    goto rx961_fail
-  rxcap_966_done:
+    goto rxcap_964_done
+  rxcap_964_fail:
+    goto rx959_fail
+  rxcap_964_done:
   # rx subrule "O" subtype=capture negate=
-    rx961_cur."!cursor_pos"(rx961_pos)
-    $P10 = rx961_cur."O"("%autoincrement")
-    unless $P10, rx961_fail
-    rx961_cur."!mark_push"(0, -1, 0, $P10)
+    rx959_cur."!cursor_pos"(rx959_pos)
+    $P10 = rx959_cur."O"("%autoincrement, :pirop<dec>")
+    unless $P10, rx959_fail
+    rx959_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx961_pos = $P10."pos"()
+    rx959_pos = $P10."pos"()
   # rx pass
-    rx961_cur."!cursor_pass"(rx961_pos, "postfix:sym<++>")
-    rx961_cur."!cursor_debug"("PASS  ", "postfix:sym<++>", " at pos=", rx961_pos)
-    .return (rx961_cur)
-  rx961_fail:
-.annotate "line", 421
-    (rx961_rep, rx961_pos, $I10, $P10) = rx961_cur."!mark_fail"(0)
-    lt rx961_pos, -1, rx961_done
-    eq rx961_pos, -1, rx961_fail
-    jump $I10
-  rx961_done:
-    rx961_cur."!cursor_fail"()
-    rx961_cur."!cursor_debug"("FAIL  ", "postfix:sym<++>")
-    .return (rx961_cur)
+    rx959_cur."!cursor_pass"(rx959_pos, "prefix:sym<-->")
+    rx959_cur."!cursor_debug"("PASS  ", "prefix:sym<-->", " at pos=", rx959_pos)
+    .return (rx959_cur)
+  rx959_fail:
+.annotate "line", 422
+    (rx959_rep, rx959_pos, $I10, $P10) = rx959_cur."!mark_fail"(0)
+    lt rx959_pos, -1, rx959_done
+    eq rx959_pos, -1, rx959_fail
+    jump $I10
+  rx959_done:
+    rx959_cur."!cursor_fail"()
+    rx959_cur."!cursor_debug"("FAIL  ", "prefix:sym<-->")
+    .return (rx959_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<++>"  :subid("240_1271336396.90314") :method
-.annotate "line", 421
-    $P963 = self."!PREFIX__!subrule"("O", "++")
-    new $P964, "ResizablePMCArray"
-    push $P964, $P963
-    .return ($P964)
+.sub "!PREFIX__prefix:sym<-->"  :subid("240_1271948667.92136") :method
+.annotate "line", 422
+    $P961 = self."!PREFIX__!subrule"("O", "--")
+    new $P962, "ResizablePMCArray"
+    push $P962, $P961
+    .return ($P962)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<-->"  :subid("241_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx968_tgt
-    .local int rx968_pos
-    .local int rx968_off
-    .local int rx968_eos
-    .local int rx968_rep
-    .local pmc rx968_cur
-    (rx968_cur, rx968_pos, rx968_tgt) = self."!cursor_start"()
-    rx968_cur."!cursor_debug"("START ", "postfix:sym<-->")
-    .lex unicode:"$\x{a2}", rx968_cur
-    .local pmc match
-    .lex "$/", match
-    length rx968_eos, rx968_tgt
-    set rx968_off, 0
-    lt rx968_pos, 2, rx968_start
-    sub rx968_off, rx968_pos, 1
-    substr rx968_tgt, rx968_tgt, rx968_off
-  rx968_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan972_done
-    goto rxscan972_scan
-  rxscan972_loop:
-    ($P10) = rx968_cur."from"()
-    inc $P10
-    set rx968_pos, $P10
-    ge rx968_pos, rx968_eos, rxscan972_done
-  rxscan972_scan:
-    set_addr $I10, rxscan972_loop
-    rx968_cur."!mark_push"(0, rx968_pos, $I10)
-  rxscan972_done:
+.sub "postfix:sym<++>"  :subid("241_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx966_tgt
+    .local int rx966_pos
+    .local int rx966_off
+    .local int rx966_eos
+    .local int rx966_rep
+    .local pmc rx966_cur
+    (rx966_cur, rx966_pos, rx966_tgt) = self."!cursor_start"()
+    rx966_cur."!cursor_debug"("START ", "postfix:sym<++>")
+    .lex unicode:"$\x{a2}", rx966_cur
+    .local pmc match
+    .lex "$/", match
+    length rx966_eos, rx966_tgt
+    set rx966_off, 0
+    lt rx966_pos, 2, rx966_start
+    sub rx966_off, rx966_pos, 1
+    substr rx966_tgt, rx966_tgt, rx966_off
+  rx966_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan970_done
+    goto rxscan970_scan
+  rxscan970_loop:
+    ($P10) = rx966_cur."from"()
+    inc $P10
+    set rx966_pos, $P10
+    ge rx966_pos, rx966_eos, rxscan970_done
+  rxscan970_scan:
+    set_addr $I10, rxscan970_loop
+    rx966_cur."!mark_push"(0, rx966_pos, $I10)
+  rxscan970_done:
 .annotate "line", 470
   # rx subcapture "sym"
-    set_addr $I10, rxcap_973_fail
-    rx968_cur."!mark_push"(0, rx968_pos, $I10)
-  # rx literal  "--"
-    add $I11, rx968_pos, 2
-    gt $I11, rx968_eos, rx968_fail
-    sub $I11, rx968_pos, rx968_off
-    substr $S10, rx968_tgt, $I11, 2
-    ne $S10, "--", rx968_fail
-    add rx968_pos, 2
-    set_addr $I10, rxcap_973_fail
-    ($I12, $I11) = rx968_cur."!mark_peek"($I10)
-    rx968_cur."!cursor_pos"($I11)
-    ($P10) = rx968_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx968_pos, "")
-    rx968_cur."!mark_push"(0, -1, 0, $P10)
+    set_addr $I10, rxcap_971_fail
+    rx966_cur."!mark_push"(0, rx966_pos, $I10)
+  # rx literal  "++"
+    add $I11, rx966_pos, 2
+    gt $I11, rx966_eos, rx966_fail
+    sub $I11, rx966_pos, rx966_off
+    substr $S10, rx966_tgt, $I11, 2
+    ne $S10, "++", rx966_fail
+    add rx966_pos, 2
+    set_addr $I10, rxcap_971_fail
+    ($I12, $I11) = rx966_cur."!mark_peek"($I10)
+    rx966_cur."!cursor_pos"($I11)
+    ($P10) = rx966_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx966_pos, "")
+    rx966_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_973_done
-  rxcap_973_fail:
-    goto rx968_fail
-  rxcap_973_done:
+    goto rxcap_971_done
+  rxcap_971_fail:
+    goto rx966_fail
+  rxcap_971_done:
   # rx subrule "O" subtype=capture negate=
-    rx968_cur."!cursor_pos"(rx968_pos)
-    $P10 = rx968_cur."O"("%autoincrement")
-    unless $P10, rx968_fail
-    rx968_cur."!mark_push"(0, -1, 0, $P10)
+    rx966_cur."!cursor_pos"(rx966_pos)
+    $P10 = rx966_cur."O"("%autoincrement")
+    unless $P10, rx966_fail
+    rx966_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx968_pos = $P10."pos"()
+    rx966_pos = $P10."pos"()
   # rx pass
-    rx968_cur."!cursor_pass"(rx968_pos, "postfix:sym<-->")
-    rx968_cur."!cursor_debug"("PASS  ", "postfix:sym<-->", " at pos=", rx968_pos)
-    .return (rx968_cur)
-  rx968_fail:
-.annotate "line", 421
-    (rx968_rep, rx968_pos, $I10, $P10) = rx968_cur."!mark_fail"(0)
-    lt rx968_pos, -1, rx968_done
-    eq rx968_pos, -1, rx968_fail
-    jump $I10
-  rx968_done:
-    rx968_cur."!cursor_fail"()
-    rx968_cur."!cursor_debug"("FAIL  ", "postfix:sym<-->")
-    .return (rx968_cur)
+    rx966_cur."!cursor_pass"(rx966_pos, "postfix:sym<++>")
+    rx966_cur."!cursor_debug"("PASS  ", "postfix:sym<++>", " at pos=", rx966_pos)
+    .return (rx966_cur)
+  rx966_fail:
+.annotate "line", 422
+    (rx966_rep, rx966_pos, $I10, $P10) = rx966_cur."!mark_fail"(0)
+    lt rx966_pos, -1, rx966_done
+    eq rx966_pos, -1, rx966_fail
+    jump $I10
+  rx966_done:
+    rx966_cur."!cursor_fail"()
+    rx966_cur."!cursor_debug"("FAIL  ", "postfix:sym<++>")
+    .return (rx966_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<-->"  :subid("242_1271336396.90314") :method
-.annotate "line", 421
-    $P970 = self."!PREFIX__!subrule"("O", "--")
-    new $P971, "ResizablePMCArray"
-    push $P971, $P970
-    .return ($P971)
+.sub "!PREFIX__postfix:sym<++>"  :subid("242_1271948667.92136") :method
+.annotate "line", 422
+    $P968 = self."!PREFIX__!subrule"("O", "++")
+    new $P969, "ResizablePMCArray"
+    push $P969, $P968
+    .return ($P969)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<**>"  :subid("243_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx975_tgt
-    .local int rx975_pos
-    .local int rx975_off
-    .local int rx975_eos
-    .local int rx975_rep
-    .local pmc rx975_cur
-    (rx975_cur, rx975_pos, rx975_tgt) = self."!cursor_start"()
-    rx975_cur."!cursor_debug"("START ", "infix:sym<**>")
-    .lex unicode:"$\x{a2}", rx975_cur
-    .local pmc match
-    .lex "$/", match
-    length rx975_eos, rx975_tgt
-    set rx975_off, 0
-    lt rx975_pos, 2, rx975_start
-    sub rx975_off, rx975_pos, 1
-    substr rx975_tgt, rx975_tgt, rx975_off
-  rx975_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan979_done
-    goto rxscan979_scan
-  rxscan979_loop:
-    ($P10) = rx975_cur."from"()
-    inc $P10
-    set rx975_pos, $P10
-    ge rx975_pos, rx975_eos, rxscan979_done
-  rxscan979_scan:
-    set_addr $I10, rxscan979_loop
-    rx975_cur."!mark_push"(0, rx975_pos, $I10)
-  rxscan979_done:
-.annotate "line", 472
+.sub "postfix:sym<-->"  :subid("243_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx973_tgt
+    .local int rx973_pos
+    .local int rx973_off
+    .local int rx973_eos
+    .local int rx973_rep
+    .local pmc rx973_cur
+    (rx973_cur, rx973_pos, rx973_tgt) = self."!cursor_start"()
+    rx973_cur."!cursor_debug"("START ", "postfix:sym<-->")
+    .lex unicode:"$\x{a2}", rx973_cur
+    .local pmc match
+    .lex "$/", match
+    length rx973_eos, rx973_tgt
+    set rx973_off, 0
+    lt rx973_pos, 2, rx973_start
+    sub rx973_off, rx973_pos, 1
+    substr rx973_tgt, rx973_tgt, rx973_off
+  rx973_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan977_done
+    goto rxscan977_scan
+  rxscan977_loop:
+    ($P10) = rx973_cur."from"()
+    inc $P10
+    set rx973_pos, $P10
+    ge rx973_pos, rx973_eos, rxscan977_done
+  rxscan977_scan:
+    set_addr $I10, rxscan977_loop
+    rx973_cur."!mark_push"(0, rx973_pos, $I10)
+  rxscan977_done:
+.annotate "line", 471
   # rx subcapture "sym"
-    set_addr $I10, rxcap_980_fail
-    rx975_cur."!mark_push"(0, rx975_pos, $I10)
-  # rx literal  "**"
-    add $I11, rx975_pos, 2
-    gt $I11, rx975_eos, rx975_fail
-    sub $I11, rx975_pos, rx975_off
-    substr $S10, rx975_tgt, $I11, 2
-    ne $S10, "**", rx975_fail
-    add rx975_pos, 2
-    set_addr $I10, rxcap_980_fail
-    ($I12, $I11) = rx975_cur."!mark_peek"($I10)
-    rx975_cur."!cursor_pos"($I11)
-    ($P10) = rx975_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx975_pos, "")
-    rx975_cur."!mark_push"(0, -1, 0, $P10)
+    set_addr $I10, rxcap_978_fail
+    rx973_cur."!mark_push"(0, rx973_pos, $I10)
+  # rx literal  "--"
+    add $I11, rx973_pos, 2
+    gt $I11, rx973_eos, rx973_fail
+    sub $I11, rx973_pos, rx973_off
+    substr $S10, rx973_tgt, $I11, 2
+    ne $S10, "--", rx973_fail
+    add rx973_pos, 2
+    set_addr $I10, rxcap_978_fail
+    ($I12, $I11) = rx973_cur."!mark_peek"($I10)
+    rx973_cur."!cursor_pos"($I11)
+    ($P10) = rx973_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx973_pos, "")
+    rx973_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_980_done
-  rxcap_980_fail:
-    goto rx975_fail
-  rxcap_980_done:
+    goto rxcap_978_done
+  rxcap_978_fail:
+    goto rx973_fail
+  rxcap_978_done:
   # rx subrule "O" subtype=capture negate=
-    rx975_cur."!cursor_pos"(rx975_pos)
-    $P10 = rx975_cur."O"("%exponentiation, :pirop<pow>")
-    unless $P10, rx975_fail
-    rx975_cur."!mark_push"(0, -1, 0, $P10)
+    rx973_cur."!cursor_pos"(rx973_pos)
+    $P10 = rx973_cur."O"("%autoincrement")
+    unless $P10, rx973_fail
+    rx973_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx975_pos = $P10."pos"()
+    rx973_pos = $P10."pos"()
   # rx pass
-    rx975_cur."!cursor_pass"(rx975_pos, "infix:sym<**>")
-    rx975_cur."!cursor_debug"("PASS  ", "infix:sym<**>", " at pos=", rx975_pos)
-    .return (rx975_cur)
-  rx975_fail:
-.annotate "line", 421
-    (rx975_rep, rx975_pos, $I10, $P10) = rx975_cur."!mark_fail"(0)
-    lt rx975_pos, -1, rx975_done
-    eq rx975_pos, -1, rx975_fail
-    jump $I10
-  rx975_done:
-    rx975_cur."!cursor_fail"()
-    rx975_cur."!cursor_debug"("FAIL  ", "infix:sym<**>")
-    .return (rx975_cur)
+    rx973_cur."!cursor_pass"(rx973_pos, "postfix:sym<-->")
+    rx973_cur."!cursor_debug"("PASS  ", "postfix:sym<-->", " at pos=", rx973_pos)
+    .return (rx973_cur)
+  rx973_fail:
+.annotate "line", 422
+    (rx973_rep, rx973_pos, $I10, $P10) = rx973_cur."!mark_fail"(0)
+    lt rx973_pos, -1, rx973_done
+    eq rx973_pos, -1, rx973_fail
+    jump $I10
+  rx973_done:
+    rx973_cur."!cursor_fail"()
+    rx973_cur."!cursor_debug"("FAIL  ", "postfix:sym<-->")
+    .return (rx973_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<**>"  :subid("244_1271336396.90314") :method
-.annotate "line", 421
-    $P977 = self."!PREFIX__!subrule"("O", "**")
-    new $P978, "ResizablePMCArray"
-    push $P978, $P977
-    .return ($P978)
+.sub "!PREFIX__postfix:sym<-->"  :subid("244_1271948667.92136") :method
+.annotate "line", 422
+    $P975 = self."!PREFIX__!subrule"("O", "--")
+    new $P976, "ResizablePMCArray"
+    push $P976, $P975
+    .return ($P976)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<+>"  :subid("245_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx982_tgt
-    .local int rx982_pos
-    .local int rx982_off
-    .local int rx982_eos
-    .local int rx982_rep
-    .local pmc rx982_cur
-    (rx982_cur, rx982_pos, rx982_tgt) = self."!cursor_start"()
-    rx982_cur."!cursor_debug"("START ", "prefix:sym<+>")
-    .lex unicode:"$\x{a2}", rx982_cur
-    .local pmc match
-    .lex "$/", match
-    length rx982_eos, rx982_tgt
-    set rx982_off, 0
-    lt rx982_pos, 2, rx982_start
-    sub rx982_off, rx982_pos, 1
-    substr rx982_tgt, rx982_tgt, rx982_off
-  rx982_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan986_done
-    goto rxscan986_scan
-  rxscan986_loop:
-    ($P10) = rx982_cur."from"()
-    inc $P10
-    set rx982_pos, $P10
-    ge rx982_pos, rx982_eos, rxscan986_done
-  rxscan986_scan:
-    set_addr $I10, rxscan986_loop
-    rx982_cur."!mark_push"(0, rx982_pos, $I10)
-  rxscan986_done:
-.annotate "line", 474
+.sub "infix:sym<**>"  :subid("245_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx980_tgt
+    .local int rx980_pos
+    .local int rx980_off
+    .local int rx980_eos
+    .local int rx980_rep
+    .local pmc rx980_cur
+    (rx980_cur, rx980_pos, rx980_tgt) = self."!cursor_start"()
+    rx980_cur."!cursor_debug"("START ", "infix:sym<**>")
+    .lex unicode:"$\x{a2}", rx980_cur
+    .local pmc match
+    .lex "$/", match
+    length rx980_eos, rx980_tgt
+    set rx980_off, 0
+    lt rx980_pos, 2, rx980_start
+    sub rx980_off, rx980_pos, 1
+    substr rx980_tgt, rx980_tgt, rx980_off
+  rx980_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan984_done
+    goto rxscan984_scan
+  rxscan984_loop:
+    ($P10) = rx980_cur."from"()
+    inc $P10
+    set rx980_pos, $P10
+    ge rx980_pos, rx980_eos, rxscan984_done
+  rxscan984_scan:
+    set_addr $I10, rxscan984_loop
+    rx980_cur."!mark_push"(0, rx980_pos, $I10)
+  rxscan984_done:
+.annotate "line", 473
   # rx subcapture "sym"
-    set_addr $I10, rxcap_987_fail
-    rx982_cur."!mark_push"(0, rx982_pos, $I10)
-  # rx literal  "+"
-    add $I11, rx982_pos, 1
-    gt $I11, rx982_eos, rx982_fail
-    sub $I11, rx982_pos, rx982_off
-    substr $S10, rx982_tgt, $I11, 1
-    ne $S10, "+", rx982_fail
-    add rx982_pos, 1
-    set_addr $I10, rxcap_987_fail
-    ($I12, $I11) = rx982_cur."!mark_peek"($I10)
-    rx982_cur."!cursor_pos"($I11)
-    ($P10) = rx982_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx982_pos, "")
-    rx982_cur."!mark_push"(0, -1, 0, $P10)
+    set_addr $I10, rxcap_985_fail
+    rx980_cur."!mark_push"(0, rx980_pos, $I10)
+  # rx literal  "**"
+    add $I11, rx980_pos, 2
+    gt $I11, rx980_eos, rx980_fail
+    sub $I11, rx980_pos, rx980_off
+    substr $S10, rx980_tgt, $I11, 2
+    ne $S10, "**", rx980_fail
+    add rx980_pos, 2
+    set_addr $I10, rxcap_985_fail
+    ($I12, $I11) = rx980_cur."!mark_peek"($I10)
+    rx980_cur."!cursor_pos"($I11)
+    ($P10) = rx980_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx980_pos, "")
+    rx980_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_987_done
-  rxcap_987_fail:
-    goto rx982_fail
-  rxcap_987_done:
+    goto rxcap_985_done
+  rxcap_985_fail:
+    goto rx980_fail
+  rxcap_985_done:
   # rx subrule "O" subtype=capture negate=
-    rx982_cur."!cursor_pos"(rx982_pos)
-    $P10 = rx982_cur."O"("%symbolic_unary, :pirop<set N*>")
-    unless $P10, rx982_fail
-    rx982_cur."!mark_push"(0, -1, 0, $P10)
+    rx980_cur."!cursor_pos"(rx980_pos)
+    $P10 = rx980_cur."O"("%exponentiation, :pirop<pow>")
+    unless $P10, rx980_fail
+    rx980_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx982_pos = $P10."pos"()
+    rx980_pos = $P10."pos"()
   # rx pass
-    rx982_cur."!cursor_pass"(rx982_pos, "prefix:sym<+>")
-    rx982_cur."!cursor_debug"("PASS  ", "prefix:sym<+>", " at pos=", rx982_pos)
-    .return (rx982_cur)
-  rx982_fail:
-.annotate "line", 421
-    (rx982_rep, rx982_pos, $I10, $P10) = rx982_cur."!mark_fail"(0)
-    lt rx982_pos, -1, rx982_done
-    eq rx982_pos, -1, rx982_fail
-    jump $I10
-  rx982_done:
-    rx982_cur."!cursor_fail"()
-    rx982_cur."!cursor_debug"("FAIL  ", "prefix:sym<+>")
-    .return (rx982_cur)
+    rx980_cur."!cursor_pass"(rx980_pos, "infix:sym<**>")
+    rx980_cur."!cursor_debug"("PASS  ", "infix:sym<**>", " at pos=", rx980_pos)
+    .return (rx980_cur)
+  rx980_fail:
+.annotate "line", 422
+    (rx980_rep, rx980_pos, $I10, $P10) = rx980_cur."!mark_fail"(0)
+    lt rx980_pos, -1, rx980_done
+    eq rx980_pos, -1, rx980_fail
+    jump $I10
+  rx980_done:
+    rx980_cur."!cursor_fail"()
+    rx980_cur."!cursor_debug"("FAIL  ", "infix:sym<**>")
+    .return (rx980_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<+>"  :subid("246_1271336396.90314") :method
-.annotate "line", 421
-    $P984 = self."!PREFIX__!subrule"("O", "+")
-    new $P985, "ResizablePMCArray"
-    push $P985, $P984
-    .return ($P985)
+.sub "!PREFIX__infix:sym<**>"  :subid("246_1271948667.92136") :method
+.annotate "line", 422
+    $P982 = self."!PREFIX__!subrule"("O", "**")
+    new $P983, "ResizablePMCArray"
+    push $P983, $P982
+    .return ($P983)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<~>"  :subid("247_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx989_tgt
-    .local int rx989_pos
-    .local int rx989_off
-    .local int rx989_eos
-    .local int rx989_rep
-    .local pmc rx989_cur
-    (rx989_cur, rx989_pos, rx989_tgt) = self."!cursor_start"()
-    rx989_cur."!cursor_debug"("START ", "prefix:sym<~>")
-    .lex unicode:"$\x{a2}", rx989_cur
-    .local pmc match
-    .lex "$/", match
-    length rx989_eos, rx989_tgt
-    set rx989_off, 0
-    lt rx989_pos, 2, rx989_start
-    sub rx989_off, rx989_pos, 1
-    substr rx989_tgt, rx989_tgt, rx989_off
-  rx989_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan993_done
-    goto rxscan993_scan
-  rxscan993_loop:
-    ($P10) = rx989_cur."from"()
-    inc $P10
-    set rx989_pos, $P10
-    ge rx989_pos, rx989_eos, rxscan993_done
-  rxscan993_scan:
-    set_addr $I10, rxscan993_loop
-    rx989_cur."!mark_push"(0, rx989_pos, $I10)
-  rxscan993_done:
+.sub "prefix:sym<+>"  :subid("247_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx987_tgt
+    .local int rx987_pos
+    .local int rx987_off
+    .local int rx987_eos
+    .local int rx987_rep
+    .local pmc rx987_cur
+    (rx987_cur, rx987_pos, rx987_tgt) = self."!cursor_start"()
+    rx987_cur."!cursor_debug"("START ", "prefix:sym<+>")
+    .lex unicode:"$\x{a2}", rx987_cur
+    .local pmc match
+    .lex "$/", match
+    length rx987_eos, rx987_tgt
+    set rx987_off, 0
+    lt rx987_pos, 2, rx987_start
+    sub rx987_off, rx987_pos, 1
+    substr rx987_tgt, rx987_tgt, rx987_off
+  rx987_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan991_done
+    goto rxscan991_scan
+  rxscan991_loop:
+    ($P10) = rx987_cur."from"()
+    inc $P10
+    set rx987_pos, $P10
+    ge rx987_pos, rx987_eos, rxscan991_done
+  rxscan991_scan:
+    set_addr $I10, rxscan991_loop
+    rx987_cur."!mark_push"(0, rx987_pos, $I10)
+  rxscan991_done:
 .annotate "line", 475
   # rx subcapture "sym"
-    set_addr $I10, rxcap_994_fail
-    rx989_cur."!mark_push"(0, rx989_pos, $I10)
-  # rx literal  "~"
-    add $I11, rx989_pos, 1
-    gt $I11, rx989_eos, rx989_fail
-    sub $I11, rx989_pos, rx989_off
-    substr $S10, rx989_tgt, $I11, 1
-    ne $S10, "~", rx989_fail
-    add rx989_pos, 1
-    set_addr $I10, rxcap_994_fail
-    ($I12, $I11) = rx989_cur."!mark_peek"($I10)
-    rx989_cur."!cursor_pos"($I11)
-    ($P10) = rx989_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx989_pos, "")
-    rx989_cur."!mark_push"(0, -1, 0, $P10)
+    set_addr $I10, rxcap_992_fail
+    rx987_cur."!mark_push"(0, rx987_pos, $I10)
+  # rx literal  "+"
+    add $I11, rx987_pos, 1
+    gt $I11, rx987_eos, rx987_fail
+    sub $I11, rx987_pos, rx987_off
+    substr $S10, rx987_tgt, $I11, 1
+    ne $S10, "+", rx987_fail
+    add rx987_pos, 1
+    set_addr $I10, rxcap_992_fail
+    ($I12, $I11) = rx987_cur."!mark_peek"($I10)
+    rx987_cur."!cursor_pos"($I11)
+    ($P10) = rx987_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx987_pos, "")
+    rx987_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_994_done
-  rxcap_994_fail:
-    goto rx989_fail
-  rxcap_994_done:
+    goto rxcap_992_done
+  rxcap_992_fail:
+    goto rx987_fail
+  rxcap_992_done:
   # rx subrule "O" subtype=capture negate=
-    rx989_cur."!cursor_pos"(rx989_pos)
-    $P10 = rx989_cur."O"("%symbolic_unary, :pirop<set S*>")
-    unless $P10, rx989_fail
-    rx989_cur."!mark_push"(0, -1, 0, $P10)
+    rx987_cur."!cursor_pos"(rx987_pos)
+    $P10 = rx987_cur."O"("%symbolic_unary, :pirop<set N*>")
+    unless $P10, rx987_fail
+    rx987_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx989_pos = $P10."pos"()
+    rx987_pos = $P10."pos"()
   # rx pass
-    rx989_cur."!cursor_pass"(rx989_pos, "prefix:sym<~>")
-    rx989_cur."!cursor_debug"("PASS  ", "prefix:sym<~>", " at pos=", rx989_pos)
-    .return (rx989_cur)
-  rx989_fail:
-.annotate "line", 421
-    (rx989_rep, rx989_pos, $I10, $P10) = rx989_cur."!mark_fail"(0)
-    lt rx989_pos, -1, rx989_done
-    eq rx989_pos, -1, rx989_fail
-    jump $I10
-  rx989_done:
-    rx989_cur."!cursor_fail"()
-    rx989_cur."!cursor_debug"("FAIL  ", "prefix:sym<~>")
-    .return (rx989_cur)
+    rx987_cur."!cursor_pass"(rx987_pos, "prefix:sym<+>")
+    rx987_cur."!cursor_debug"("PASS  ", "prefix:sym<+>", " at pos=", rx987_pos)
+    .return (rx987_cur)
+  rx987_fail:
+.annotate "line", 422
+    (rx987_rep, rx987_pos, $I10, $P10) = rx987_cur."!mark_fail"(0)
+    lt rx987_pos, -1, rx987_done
+    eq rx987_pos, -1, rx987_fail
+    jump $I10
+  rx987_done:
+    rx987_cur."!cursor_fail"()
+    rx987_cur."!cursor_debug"("FAIL  ", "prefix:sym<+>")
+    .return (rx987_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<~>"  :subid("248_1271336396.90314") :method
-.annotate "line", 421
-    $P991 = self."!PREFIX__!subrule"("O", "~")
-    new $P992, "ResizablePMCArray"
-    push $P992, $P991
-    .return ($P992)
+.sub "!PREFIX__prefix:sym<+>"  :subid("248_1271948667.92136") :method
+.annotate "line", 422
+    $P989 = self."!PREFIX__!subrule"("O", "+")
+    new $P990, "ResizablePMCArray"
+    push $P990, $P989
+    .return ($P990)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<->"  :subid("249_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx996_tgt
-    .local int rx996_pos
-    .local int rx996_off
-    .local int rx996_eos
-    .local int rx996_rep
-    .local pmc rx996_cur
-    (rx996_cur, rx996_pos, rx996_tgt) = self."!cursor_start"()
-    rx996_cur."!cursor_debug"("START ", "prefix:sym<->")
-    .lex unicode:"$\x{a2}", rx996_cur
-    .local pmc match
-    .lex "$/", match
-    length rx996_eos, rx996_tgt
-    set rx996_off, 0
-    lt rx996_pos, 2, rx996_start
-    sub rx996_off, rx996_pos, 1
-    substr rx996_tgt, rx996_tgt, rx996_off
-  rx996_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan999_done
-    goto rxscan999_scan
-  rxscan999_loop:
-    ($P10) = rx996_cur."from"()
-    inc $P10
-    set rx996_pos, $P10
-    ge rx996_pos, rx996_eos, rxscan999_done
-  rxscan999_scan:
-    set_addr $I10, rxscan999_loop
-    rx996_cur."!mark_push"(0, rx996_pos, $I10)
-  rxscan999_done:
+.sub "prefix:sym<~>"  :subid("249_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx994_tgt
+    .local int rx994_pos
+    .local int rx994_off
+    .local int rx994_eos
+    .local int rx994_rep
+    .local pmc rx994_cur
+    (rx994_cur, rx994_pos, rx994_tgt) = self."!cursor_start"()
+    rx994_cur."!cursor_debug"("START ", "prefix:sym<~>")
+    .lex unicode:"$\x{a2}", rx994_cur
+    .local pmc match
+    .lex "$/", match
+    length rx994_eos, rx994_tgt
+    set rx994_off, 0
+    lt rx994_pos, 2, rx994_start
+    sub rx994_off, rx994_pos, 1
+    substr rx994_tgt, rx994_tgt, rx994_off
+  rx994_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan998_done
+    goto rxscan998_scan
+  rxscan998_loop:
+    ($P10) = rx994_cur."from"()
+    inc $P10
+    set rx994_pos, $P10
+    ge rx994_pos, rx994_eos, rxscan998_done
+  rxscan998_scan:
+    set_addr $I10, rxscan998_loop
+    rx994_cur."!mark_push"(0, rx994_pos, $I10)
+  rxscan998_done:
 .annotate "line", 476
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1000_fail
-    rx996_cur."!mark_push"(0, rx996_pos, $I10)
+    set_addr $I10, rxcap_999_fail
+    rx994_cur."!mark_push"(0, rx994_pos, $I10)
+  # rx literal  "~"
+    add $I11, rx994_pos, 1
+    gt $I11, rx994_eos, rx994_fail
+    sub $I11, rx994_pos, rx994_off
+    substr $S10, rx994_tgt, $I11, 1
+    ne $S10, "~", rx994_fail
+    add rx994_pos, 1
+    set_addr $I10, rxcap_999_fail
+    ($I12, $I11) = rx994_cur."!mark_peek"($I10)
+    rx994_cur."!cursor_pos"($I11)
+    ($P10) = rx994_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx994_pos, "")
+    rx994_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_999_done
+  rxcap_999_fail:
+    goto rx994_fail
+  rxcap_999_done:
+  # rx subrule "O" subtype=capture negate=
+    rx994_cur."!cursor_pos"(rx994_pos)
+    $P10 = rx994_cur."O"("%symbolic_unary, :pirop<set S*>")
+    unless $P10, rx994_fail
+    rx994_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx994_pos = $P10."pos"()
+  # rx pass
+    rx994_cur."!cursor_pass"(rx994_pos, "prefix:sym<~>")
+    rx994_cur."!cursor_debug"("PASS  ", "prefix:sym<~>", " at pos=", rx994_pos)
+    .return (rx994_cur)
+  rx994_fail:
+.annotate "line", 422
+    (rx994_rep, rx994_pos, $I10, $P10) = rx994_cur."!mark_fail"(0)
+    lt rx994_pos, -1, rx994_done
+    eq rx994_pos, -1, rx994_fail
+    jump $I10
+  rx994_done:
+    rx994_cur."!cursor_fail"()
+    rx994_cur."!cursor_debug"("FAIL  ", "prefix:sym<~>")
+    .return (rx994_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__prefix:sym<~>"  :subid("250_1271948667.92136") :method
+.annotate "line", 422
+    $P996 = self."!PREFIX__!subrule"("O", "~")
+    new $P997, "ResizablePMCArray"
+    push $P997, $P996
+    .return ($P997)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "prefix:sym<->"  :subid("251_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1001_tgt
+    .local int rx1001_pos
+    .local int rx1001_off
+    .local int rx1001_eos
+    .local int rx1001_rep
+    .local pmc rx1001_cur
+    (rx1001_cur, rx1001_pos, rx1001_tgt) = self."!cursor_start"()
+    rx1001_cur."!cursor_debug"("START ", "prefix:sym<->")
+    .lex unicode:"$\x{a2}", rx1001_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1001_eos, rx1001_tgt
+    set rx1001_off, 0
+    lt rx1001_pos, 2, rx1001_start
+    sub rx1001_off, rx1001_pos, 1
+    substr rx1001_tgt, rx1001_tgt, rx1001_off
+  rx1001_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1004_done
+    goto rxscan1004_scan
+  rxscan1004_loop:
+    ($P10) = rx1001_cur."from"()
+    inc $P10
+    set rx1001_pos, $P10
+    ge rx1001_pos, rx1001_eos, rxscan1004_done
+  rxscan1004_scan:
+    set_addr $I10, rxscan1004_loop
+    rx1001_cur."!mark_push"(0, rx1001_pos, $I10)
+  rxscan1004_done:
+.annotate "line", 477
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_1005_fail
+    rx1001_cur."!mark_push"(0, rx1001_pos, $I10)
   # rx literal  "-"
-    add $I11, rx996_pos, 1
-    gt $I11, rx996_eos, rx996_fail
-    sub $I11, rx996_pos, rx996_off
-    substr $S10, rx996_tgt, $I11, 1
-    ne $S10, "-", rx996_fail
-    add rx996_pos, 1
-    set_addr $I10, rxcap_1000_fail
-    ($I12, $I11) = rx996_cur."!mark_peek"($I10)
-    rx996_cur."!cursor_pos"($I11)
-    ($P10) = rx996_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx996_pos, "")
-    rx996_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1001_pos, 1
+    gt $I11, rx1001_eos, rx1001_fail
+    sub $I11, rx1001_pos, rx1001_off
+    substr $S10, rx1001_tgt, $I11, 1
+    ne $S10, "-", rx1001_fail
+    add rx1001_pos, 1
+    set_addr $I10, rxcap_1005_fail
+    ($I12, $I11) = rx1001_cur."!mark_peek"($I10)
+    rx1001_cur."!cursor_pos"($I11)
+    ($P10) = rx1001_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1001_pos, "")
+    rx1001_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1000_done
-  rxcap_1000_fail:
-    goto rx996_fail
-  rxcap_1000_done:
+    goto rxcap_1005_done
+  rxcap_1005_fail:
+    goto rx1001_fail
+  rxcap_1005_done:
   # rx enumcharlist negate=1 zerowidth
-    ge rx996_pos, rx996_eos, rx996_fail
-    sub $I10, rx996_pos, rx996_off
-    substr $S10, rx996_tgt, $I10, 1
+    ge rx1001_pos, rx1001_eos, rx1001_fail
+    sub $I10, rx1001_pos, rx1001_off
+    substr $S10, rx1001_tgt, $I10, 1
     index $I11, ">", $S10
-    ge $I11, 0, rx996_fail
+    ge $I11, 0, rx1001_fail
   # rx subrule "number" subtype=zerowidth negate=1
-    rx996_cur."!cursor_pos"(rx996_pos)
-    $P10 = rx996_cur."number"()
-    if $P10, rx996_fail
+    rx1001_cur."!cursor_pos"(rx1001_pos)
+    $P10 = rx1001_cur."number"()
+    if $P10, rx1001_fail
   # rx subrule "O" subtype=capture negate=
-    rx996_cur."!cursor_pos"(rx996_pos)
-    $P10 = rx996_cur."O"("%symbolic_unary, :pirop<neg>")
-    unless $P10, rx996_fail
-    rx996_cur."!mark_push"(0, -1, 0, $P10)
+    rx1001_cur."!cursor_pos"(rx1001_pos)
+    $P10 = rx1001_cur."O"("%symbolic_unary, :pirop<neg>")
+    unless $P10, rx1001_fail
+    rx1001_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx996_pos = $P10."pos"()
+    rx1001_pos = $P10."pos"()
   # rx pass
-    rx996_cur."!cursor_pass"(rx996_pos, "prefix:sym<->")
-    rx996_cur."!cursor_debug"("PASS  ", "prefix:sym<->", " at pos=", rx996_pos)
-    .return (rx996_cur)
-  rx996_fail:
-.annotate "line", 421
-    (rx996_rep, rx996_pos, $I10, $P10) = rx996_cur."!mark_fail"(0)
-    lt rx996_pos, -1, rx996_done
-    eq rx996_pos, -1, rx996_fail
-    jump $I10
-  rx996_done:
-    rx996_cur."!cursor_fail"()
-    rx996_cur."!cursor_debug"("FAIL  ", "prefix:sym<->")
-    .return (rx996_cur)
+    rx1001_cur."!cursor_pass"(rx1001_pos, "prefix:sym<->")
+    rx1001_cur."!cursor_debug"("PASS  ", "prefix:sym<->", " at pos=", rx1001_pos)
+    .return (rx1001_cur)
+  rx1001_fail:
+.annotate "line", 422
+    (rx1001_rep, rx1001_pos, $I10, $P10) = rx1001_cur."!mark_fail"(0)
+    lt rx1001_pos, -1, rx1001_done
+    eq rx1001_pos, -1, rx1001_fail
+    jump $I10
+  rx1001_done:
+    rx1001_cur."!cursor_fail"()
+    rx1001_cur."!cursor_debug"("FAIL  ", "prefix:sym<->")
+    .return (rx1001_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<->"  :subid("250_1271336396.90314") :method
-.annotate "line", 421
-    new $P998, "ResizablePMCArray"
-    push $P998, "-"
-    .return ($P998)
+.sub "!PREFIX__prefix:sym<->"  :subid("252_1271948667.92136") :method
+.annotate "line", 422
+    new $P1003, "ResizablePMCArray"
+    push $P1003, "-"
+    .return ($P1003)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<?>"  :subid("251_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1002_tgt
-    .local int rx1002_pos
-    .local int rx1002_off
-    .local int rx1002_eos
-    .local int rx1002_rep
-    .local pmc rx1002_cur
-    (rx1002_cur, rx1002_pos, rx1002_tgt) = self."!cursor_start"()
-    rx1002_cur."!cursor_debug"("START ", "prefix:sym<?>")
-    .lex unicode:"$\x{a2}", rx1002_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1002_eos, rx1002_tgt
-    set rx1002_off, 0
-    lt rx1002_pos, 2, rx1002_start
-    sub rx1002_off, rx1002_pos, 1
-    substr rx1002_tgt, rx1002_tgt, rx1002_off
-  rx1002_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1006_done
-    goto rxscan1006_scan
-  rxscan1006_loop:
-    ($P10) = rx1002_cur."from"()
-    inc $P10
-    set rx1002_pos, $P10
-    ge rx1002_pos, rx1002_eos, rxscan1006_done
-  rxscan1006_scan:
-    set_addr $I10, rxscan1006_loop
-    rx1002_cur."!mark_push"(0, rx1002_pos, $I10)
-  rxscan1006_done:
-.annotate "line", 477
+.sub "prefix:sym<?>"  :subid("253_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1007_tgt
+    .local int rx1007_pos
+    .local int rx1007_off
+    .local int rx1007_eos
+    .local int rx1007_rep
+    .local pmc rx1007_cur
+    (rx1007_cur, rx1007_pos, rx1007_tgt) = self."!cursor_start"()
+    rx1007_cur."!cursor_debug"("START ", "prefix:sym<?>")
+    .lex unicode:"$\x{a2}", rx1007_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1007_eos, rx1007_tgt
+    set rx1007_off, 0
+    lt rx1007_pos, 2, rx1007_start
+    sub rx1007_off, rx1007_pos, 1
+    substr rx1007_tgt, rx1007_tgt, rx1007_off
+  rx1007_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1011_done
+    goto rxscan1011_scan
+  rxscan1011_loop:
+    ($P10) = rx1007_cur."from"()
+    inc $P10
+    set rx1007_pos, $P10
+    ge rx1007_pos, rx1007_eos, rxscan1011_done
+  rxscan1011_scan:
+    set_addr $I10, rxscan1011_loop
+    rx1007_cur."!mark_push"(0, rx1007_pos, $I10)
+  rxscan1011_done:
+.annotate "line", 478
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1007_fail
-    rx1002_cur."!mark_push"(0, rx1002_pos, $I10)
+    set_addr $I10, rxcap_1012_fail
+    rx1007_cur."!mark_push"(0, rx1007_pos, $I10)
   # rx literal  "?"
-    add $I11, rx1002_pos, 1
-    gt $I11, rx1002_eos, rx1002_fail
-    sub $I11, rx1002_pos, rx1002_off
-    substr $S10, rx1002_tgt, $I11, 1
-    ne $S10, "?", rx1002_fail
-    add rx1002_pos, 1
-    set_addr $I10, rxcap_1007_fail
-    ($I12, $I11) = rx1002_cur."!mark_peek"($I10)
-    rx1002_cur."!cursor_pos"($I11)
-    ($P10) = rx1002_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1002_pos, "")
-    rx1002_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1007_pos, 1
+    gt $I11, rx1007_eos, rx1007_fail
+    sub $I11, rx1007_pos, rx1007_off
+    substr $S10, rx1007_tgt, $I11, 1
+    ne $S10, "?", rx1007_fail
+    add rx1007_pos, 1
+    set_addr $I10, rxcap_1012_fail
+    ($I12, $I11) = rx1007_cur."!mark_peek"($I10)
+    rx1007_cur."!cursor_pos"($I11)
+    ($P10) = rx1007_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1007_pos, "")
+    rx1007_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1007_done
-  rxcap_1007_fail:
-    goto rx1002_fail
-  rxcap_1007_done:
+    goto rxcap_1012_done
+  rxcap_1012_fail:
+    goto rx1007_fail
+  rxcap_1012_done:
   # rx subrule "O" subtype=capture negate=
-    rx1002_cur."!cursor_pos"(rx1002_pos)
-    $P10 = rx1002_cur."O"("%symbolic_unary, :pirop<istrue>")
-    unless $P10, rx1002_fail
-    rx1002_cur."!mark_push"(0, -1, 0, $P10)
+    rx1007_cur."!cursor_pos"(rx1007_pos)
+    $P10 = rx1007_cur."O"("%symbolic_unary, :pirop<istrue>")
+    unless $P10, rx1007_fail
+    rx1007_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1002_pos = $P10."pos"()
+    rx1007_pos = $P10."pos"()
   # rx pass
-    rx1002_cur."!cursor_pass"(rx1002_pos, "prefix:sym<?>")
-    rx1002_cur."!cursor_debug"("PASS  ", "prefix:sym<?>", " at pos=", rx1002_pos)
-    .return (rx1002_cur)
-  rx1002_fail:
-.annotate "line", 421
-    (rx1002_rep, rx1002_pos, $I10, $P10) = rx1002_cur."!mark_fail"(0)
-    lt rx1002_pos, -1, rx1002_done
-    eq rx1002_pos, -1, rx1002_fail
+    rx1007_cur."!cursor_pass"(rx1007_pos, "prefix:sym<?>")
+    rx1007_cur."!cursor_debug"("PASS  ", "prefix:sym<?>", " at pos=", rx1007_pos)
+    .return (rx1007_cur)
+  rx1007_fail:
+.annotate "line", 422
+    (rx1007_rep, rx1007_pos, $I10, $P10) = rx1007_cur."!mark_fail"(0)
+    lt rx1007_pos, -1, rx1007_done
+    eq rx1007_pos, -1, rx1007_fail
     jump $I10
-  rx1002_done:
-    rx1002_cur."!cursor_fail"()
-    rx1002_cur."!cursor_debug"("FAIL  ", "prefix:sym<?>")
-    .return (rx1002_cur)
+  rx1007_done:
+    rx1007_cur."!cursor_fail"()
+    rx1007_cur."!cursor_debug"("FAIL  ", "prefix:sym<?>")
+    .return (rx1007_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<?>"  :subid("252_1271336396.90314") :method
-.annotate "line", 421
-    $P1004 = self."!PREFIX__!subrule"("O", "?")
-    new $P1005, "ResizablePMCArray"
-    push $P1005, $P1004
-    .return ($P1005)
+.sub "!PREFIX__prefix:sym<?>"  :subid("254_1271948667.92136") :method
+.annotate "line", 422
+    $P1009 = self."!PREFIX__!subrule"("O", "?")
+    new $P1010, "ResizablePMCArray"
+    push $P1010, $P1009
+    .return ($P1010)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<!>"  :subid("253_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1009_tgt
-    .local int rx1009_pos
-    .local int rx1009_off
-    .local int rx1009_eos
-    .local int rx1009_rep
-    .local pmc rx1009_cur
-    (rx1009_cur, rx1009_pos, rx1009_tgt) = self."!cursor_start"()
-    rx1009_cur."!cursor_debug"("START ", "prefix:sym<!>")
-    .lex unicode:"$\x{a2}", rx1009_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1009_eos, rx1009_tgt
-    set rx1009_off, 0
-    lt rx1009_pos, 2, rx1009_start
-    sub rx1009_off, rx1009_pos, 1
-    substr rx1009_tgt, rx1009_tgt, rx1009_off
-  rx1009_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1013_done
-    goto rxscan1013_scan
-  rxscan1013_loop:
-    ($P10) = rx1009_cur."from"()
-    inc $P10
-    set rx1009_pos, $P10
-    ge rx1009_pos, rx1009_eos, rxscan1013_done
-  rxscan1013_scan:
-    set_addr $I10, rxscan1013_loop
-    rx1009_cur."!mark_push"(0, rx1009_pos, $I10)
-  rxscan1013_done:
-.annotate "line", 478
+.sub "prefix:sym<!>"  :subid("255_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1014_tgt
+    .local int rx1014_pos
+    .local int rx1014_off
+    .local int rx1014_eos
+    .local int rx1014_rep
+    .local pmc rx1014_cur
+    (rx1014_cur, rx1014_pos, rx1014_tgt) = self."!cursor_start"()
+    rx1014_cur."!cursor_debug"("START ", "prefix:sym<!>")
+    .lex unicode:"$\x{a2}", rx1014_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1014_eos, rx1014_tgt
+    set rx1014_off, 0
+    lt rx1014_pos, 2, rx1014_start
+    sub rx1014_off, rx1014_pos, 1
+    substr rx1014_tgt, rx1014_tgt, rx1014_off
+  rx1014_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1018_done
+    goto rxscan1018_scan
+  rxscan1018_loop:
+    ($P10) = rx1014_cur."from"()
+    inc $P10
+    set rx1014_pos, $P10
+    ge rx1014_pos, rx1014_eos, rxscan1018_done
+  rxscan1018_scan:
+    set_addr $I10, rxscan1018_loop
+    rx1014_cur."!mark_push"(0, rx1014_pos, $I10)
+  rxscan1018_done:
+.annotate "line", 479
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1014_fail
-    rx1009_cur."!mark_push"(0, rx1009_pos, $I10)
+    set_addr $I10, rxcap_1019_fail
+    rx1014_cur."!mark_push"(0, rx1014_pos, $I10)
   # rx literal  "!"
-    add $I11, rx1009_pos, 1
-    gt $I11, rx1009_eos, rx1009_fail
-    sub $I11, rx1009_pos, rx1009_off
-    substr $S10, rx1009_tgt, $I11, 1
-    ne $S10, "!", rx1009_fail
-    add rx1009_pos, 1
-    set_addr $I10, rxcap_1014_fail
-    ($I12, $I11) = rx1009_cur."!mark_peek"($I10)
-    rx1009_cur."!cursor_pos"($I11)
-    ($P10) = rx1009_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1009_pos, "")
-    rx1009_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1014_pos, 1
+    gt $I11, rx1014_eos, rx1014_fail
+    sub $I11, rx1014_pos, rx1014_off
+    substr $S10, rx1014_tgt, $I11, 1
+    ne $S10, "!", rx1014_fail
+    add rx1014_pos, 1
+    set_addr $I10, rxcap_1019_fail
+    ($I12, $I11) = rx1014_cur."!mark_peek"($I10)
+    rx1014_cur."!cursor_pos"($I11)
+    ($P10) = rx1014_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1014_pos, "")
+    rx1014_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1014_done
-  rxcap_1014_fail:
-    goto rx1009_fail
-  rxcap_1014_done:
+    goto rxcap_1019_done
+  rxcap_1019_fail:
+    goto rx1014_fail
+  rxcap_1019_done:
   # rx subrule "O" subtype=capture negate=
-    rx1009_cur."!cursor_pos"(rx1009_pos)
-    $P10 = rx1009_cur."O"("%symbolic_unary, :pirop<isfalse>")
-    unless $P10, rx1009_fail
-    rx1009_cur."!mark_push"(0, -1, 0, $P10)
+    rx1014_cur."!cursor_pos"(rx1014_pos)
+    $P10 = rx1014_cur."O"("%symbolic_unary, :pirop<isfalse>")
+    unless $P10, rx1014_fail
+    rx1014_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1009_pos = $P10."pos"()
+    rx1014_pos = $P10."pos"()
   # rx pass
-    rx1009_cur."!cursor_pass"(rx1009_pos, "prefix:sym<!>")
-    rx1009_cur."!cursor_debug"("PASS  ", "prefix:sym<!>", " at pos=", rx1009_pos)
-    .return (rx1009_cur)
-  rx1009_fail:
-.annotate "line", 421
-    (rx1009_rep, rx1009_pos, $I10, $P10) = rx1009_cur."!mark_fail"(0)
-    lt rx1009_pos, -1, rx1009_done
-    eq rx1009_pos, -1, rx1009_fail
-    jump $I10
-  rx1009_done:
-    rx1009_cur."!cursor_fail"()
-    rx1009_cur."!cursor_debug"("FAIL  ", "prefix:sym<!>")
-    .return (rx1009_cur)
+    rx1014_cur."!cursor_pass"(rx1014_pos, "prefix:sym<!>")
+    rx1014_cur."!cursor_debug"("PASS  ", "prefix:sym<!>", " at pos=", rx1014_pos)
+    .return (rx1014_cur)
+  rx1014_fail:
+.annotate "line", 422
+    (rx1014_rep, rx1014_pos, $I10, $P10) = rx1014_cur."!mark_fail"(0)
+    lt rx1014_pos, -1, rx1014_done
+    eq rx1014_pos, -1, rx1014_fail
+    jump $I10
+  rx1014_done:
+    rx1014_cur."!cursor_fail"()
+    rx1014_cur."!cursor_debug"("FAIL  ", "prefix:sym<!>")
+    .return (rx1014_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<!>"  :subid("254_1271336396.90314") :method
-.annotate "line", 421
-    $P1011 = self."!PREFIX__!subrule"("O", "!")
-    new $P1012, "ResizablePMCArray"
-    push $P1012, $P1011
-    .return ($P1012)
+.sub "!PREFIX__prefix:sym<!>"  :subid("256_1271948667.92136") :method
+.annotate "line", 422
+    $P1016 = self."!PREFIX__!subrule"("O", "!")
+    new $P1017, "ResizablePMCArray"
+    push $P1017, $P1016
+    .return ($P1017)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<|>"  :subid("255_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1016_tgt
-    .local int rx1016_pos
-    .local int rx1016_off
-    .local int rx1016_eos
-    .local int rx1016_rep
-    .local pmc rx1016_cur
-    (rx1016_cur, rx1016_pos, rx1016_tgt) = self."!cursor_start"()
-    rx1016_cur."!cursor_debug"("START ", "prefix:sym<|>")
-    .lex unicode:"$\x{a2}", rx1016_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1016_eos, rx1016_tgt
-    set rx1016_off, 0
-    lt rx1016_pos, 2, rx1016_start
-    sub rx1016_off, rx1016_pos, 1
-    substr rx1016_tgt, rx1016_tgt, rx1016_off
-  rx1016_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1020_done
-    goto rxscan1020_scan
-  rxscan1020_loop:
-    ($P10) = rx1016_cur."from"()
-    inc $P10
-    set rx1016_pos, $P10
-    ge rx1016_pos, rx1016_eos, rxscan1020_done
-  rxscan1020_scan:
-    set_addr $I10, rxscan1020_loop
-    rx1016_cur."!mark_push"(0, rx1016_pos, $I10)
-  rxscan1020_done:
-.annotate "line", 479
+.sub "prefix:sym<|>"  :subid("257_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1021_tgt
+    .local int rx1021_pos
+    .local int rx1021_off
+    .local int rx1021_eos
+    .local int rx1021_rep
+    .local pmc rx1021_cur
+    (rx1021_cur, rx1021_pos, rx1021_tgt) = self."!cursor_start"()
+    rx1021_cur."!cursor_debug"("START ", "prefix:sym<|>")
+    .lex unicode:"$\x{a2}", rx1021_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1021_eos, rx1021_tgt
+    set rx1021_off, 0
+    lt rx1021_pos, 2, rx1021_start
+    sub rx1021_off, rx1021_pos, 1
+    substr rx1021_tgt, rx1021_tgt, rx1021_off
+  rx1021_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1025_done
+    goto rxscan1025_scan
+  rxscan1025_loop:
+    ($P10) = rx1021_cur."from"()
+    inc $P10
+    set rx1021_pos, $P10
+    ge rx1021_pos, rx1021_eos, rxscan1025_done
+  rxscan1025_scan:
+    set_addr $I10, rxscan1025_loop
+    rx1021_cur."!mark_push"(0, rx1021_pos, $I10)
+  rxscan1025_done:
+.annotate "line", 480
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1021_fail
-    rx1016_cur."!mark_push"(0, rx1016_pos, $I10)
+    set_addr $I10, rxcap_1026_fail
+    rx1021_cur."!mark_push"(0, rx1021_pos, $I10)
   # rx literal  "|"
-    add $I11, rx1016_pos, 1
-    gt $I11, rx1016_eos, rx1016_fail
-    sub $I11, rx1016_pos, rx1016_off
-    substr $S10, rx1016_tgt, $I11, 1
-    ne $S10, "|", rx1016_fail
-    add rx1016_pos, 1
-    set_addr $I10, rxcap_1021_fail
-    ($I12, $I11) = rx1016_cur."!mark_peek"($I10)
-    rx1016_cur."!cursor_pos"($I11)
-    ($P10) = rx1016_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1016_pos, "")
-    rx1016_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1021_pos, 1
+    gt $I11, rx1021_eos, rx1021_fail
+    sub $I11, rx1021_pos, rx1021_off
+    substr $S10, rx1021_tgt, $I11, 1
+    ne $S10, "|", rx1021_fail
+    add rx1021_pos, 1
+    set_addr $I10, rxcap_1026_fail
+    ($I12, $I11) = rx1021_cur."!mark_peek"($I10)
+    rx1021_cur."!cursor_pos"($I11)
+    ($P10) = rx1021_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1021_pos, "")
+    rx1021_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1021_done
-  rxcap_1021_fail:
-    goto rx1016_fail
-  rxcap_1021_done:
+    goto rxcap_1026_done
+  rxcap_1026_fail:
+    goto rx1021_fail
+  rxcap_1026_done:
   # rx subrule "O" subtype=capture negate=
-    rx1016_cur."!cursor_pos"(rx1016_pos)
-    $P10 = rx1016_cur."O"("%symbolic_unary")
-    unless $P10, rx1016_fail
-    rx1016_cur."!mark_push"(0, -1, 0, $P10)
+    rx1021_cur."!cursor_pos"(rx1021_pos)
+    $P10 = rx1021_cur."O"("%symbolic_unary")
+    unless $P10, rx1021_fail
+    rx1021_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1016_pos = $P10."pos"()
+    rx1021_pos = $P10."pos"()
   # rx pass
-    rx1016_cur."!cursor_pass"(rx1016_pos, "prefix:sym<|>")
-    rx1016_cur."!cursor_debug"("PASS  ", "prefix:sym<|>", " at pos=", rx1016_pos)
-    .return (rx1016_cur)
-  rx1016_fail:
-.annotate "line", 421
-    (rx1016_rep, rx1016_pos, $I10, $P10) = rx1016_cur."!mark_fail"(0)
-    lt rx1016_pos, -1, rx1016_done
-    eq rx1016_pos, -1, rx1016_fail
-    jump $I10
-  rx1016_done:
-    rx1016_cur."!cursor_fail"()
-    rx1016_cur."!cursor_debug"("FAIL  ", "prefix:sym<|>")
-    .return (rx1016_cur)
+    rx1021_cur."!cursor_pass"(rx1021_pos, "prefix:sym<|>")
+    rx1021_cur."!cursor_debug"("PASS  ", "prefix:sym<|>", " at pos=", rx1021_pos)
+    .return (rx1021_cur)
+  rx1021_fail:
+.annotate "line", 422
+    (rx1021_rep, rx1021_pos, $I10, $P10) = rx1021_cur."!mark_fail"(0)
+    lt rx1021_pos, -1, rx1021_done
+    eq rx1021_pos, -1, rx1021_fail
+    jump $I10
+  rx1021_done:
+    rx1021_cur."!cursor_fail"()
+    rx1021_cur."!cursor_debug"("FAIL  ", "prefix:sym<|>")
+    .return (rx1021_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<|>"  :subid("256_1271336396.90314") :method
-.annotate "line", 421
-    $P1018 = self."!PREFIX__!subrule"("O", "|")
-    new $P1019, "ResizablePMCArray"
-    push $P1019, $P1018
-    .return ($P1019)
+.sub "!PREFIX__prefix:sym<|>"  :subid("258_1271948667.92136") :method
+.annotate "line", 422
+    $P1023 = self."!PREFIX__!subrule"("O", "|")
+    new $P1024, "ResizablePMCArray"
+    push $P1024, $P1023
+    .return ($P1024)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<*>"  :subid("257_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1023_tgt
-    .local int rx1023_pos
-    .local int rx1023_off
-    .local int rx1023_eos
-    .local int rx1023_rep
-    .local pmc rx1023_cur
-    (rx1023_cur, rx1023_pos, rx1023_tgt) = self."!cursor_start"()
-    rx1023_cur."!cursor_debug"("START ", "infix:sym<*>")
-    .lex unicode:"$\x{a2}", rx1023_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1023_eos, rx1023_tgt
-    set rx1023_off, 0
-    lt rx1023_pos, 2, rx1023_start
-    sub rx1023_off, rx1023_pos, 1
-    substr rx1023_tgt, rx1023_tgt, rx1023_off
-  rx1023_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1027_done
-    goto rxscan1027_scan
-  rxscan1027_loop:
-    ($P10) = rx1023_cur."from"()
-    inc $P10
-    set rx1023_pos, $P10
-    ge rx1023_pos, rx1023_eos, rxscan1027_done
-  rxscan1027_scan:
-    set_addr $I10, rxscan1027_loop
-    rx1023_cur."!mark_push"(0, rx1023_pos, $I10)
-  rxscan1027_done:
-.annotate "line", 481
+.sub "infix:sym<*>"  :subid("259_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1028_tgt
+    .local int rx1028_pos
+    .local int rx1028_off
+    .local int rx1028_eos
+    .local int rx1028_rep
+    .local pmc rx1028_cur
+    (rx1028_cur, rx1028_pos, rx1028_tgt) = self."!cursor_start"()
+    rx1028_cur."!cursor_debug"("START ", "infix:sym<*>")
+    .lex unicode:"$\x{a2}", rx1028_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1028_eos, rx1028_tgt
+    set rx1028_off, 0
+    lt rx1028_pos, 2, rx1028_start
+    sub rx1028_off, rx1028_pos, 1
+    substr rx1028_tgt, rx1028_tgt, rx1028_off
+  rx1028_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1032_done
+    goto rxscan1032_scan
+  rxscan1032_loop:
+    ($P10) = rx1028_cur."from"()
+    inc $P10
+    set rx1028_pos, $P10
+    ge rx1028_pos, rx1028_eos, rxscan1032_done
+  rxscan1032_scan:
+    set_addr $I10, rxscan1032_loop
+    rx1028_cur."!mark_push"(0, rx1028_pos, $I10)
+  rxscan1032_done:
+.annotate "line", 482
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1028_fail
-    rx1023_cur."!mark_push"(0, rx1023_pos, $I10)
+    set_addr $I10, rxcap_1033_fail
+    rx1028_cur."!mark_push"(0, rx1028_pos, $I10)
   # rx literal  "*"
-    add $I11, rx1023_pos, 1
-    gt $I11, rx1023_eos, rx1023_fail
-    sub $I11, rx1023_pos, rx1023_off
-    substr $S10, rx1023_tgt, $I11, 1
-    ne $S10, "*", rx1023_fail
-    add rx1023_pos, 1
-    set_addr $I10, rxcap_1028_fail
-    ($I12, $I11) = rx1023_cur."!mark_peek"($I10)
-    rx1023_cur."!cursor_pos"($I11)
-    ($P10) = rx1023_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1023_pos, "")
-    rx1023_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1028_pos, 1
+    gt $I11, rx1028_eos, rx1028_fail
+    sub $I11, rx1028_pos, rx1028_off
+    substr $S10, rx1028_tgt, $I11, 1
+    ne $S10, "*", rx1028_fail
+    add rx1028_pos, 1
+    set_addr $I10, rxcap_1033_fail
+    ($I12, $I11) = rx1028_cur."!mark_peek"($I10)
+    rx1028_cur."!cursor_pos"($I11)
+    ($P10) = rx1028_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1028_pos, "")
+    rx1028_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1028_done
-  rxcap_1028_fail:
-    goto rx1023_fail
-  rxcap_1028_done:
+    goto rxcap_1033_done
+  rxcap_1033_fail:
+    goto rx1028_fail
+  rxcap_1033_done:
   # rx subrule "O" subtype=capture negate=
-    rx1023_cur."!cursor_pos"(rx1023_pos)
-    $P10 = rx1023_cur."O"("%multiplicative, :pirop<mul>")
-    unless $P10, rx1023_fail
-    rx1023_cur."!mark_push"(0, -1, 0, $P10)
+    rx1028_cur."!cursor_pos"(rx1028_pos)
+    $P10 = rx1028_cur."O"("%multiplicative, :pirop<mul>")
+    unless $P10, rx1028_fail
+    rx1028_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1023_pos = $P10."pos"()
+    rx1028_pos = $P10."pos"()
   # rx pass
-    rx1023_cur."!cursor_pass"(rx1023_pos, "infix:sym<*>")
-    rx1023_cur."!cursor_debug"("PASS  ", "infix:sym<*>", " at pos=", rx1023_pos)
-    .return (rx1023_cur)
-  rx1023_fail:
-.annotate "line", 421
-    (rx1023_rep, rx1023_pos, $I10, $P10) = rx1023_cur."!mark_fail"(0)
-    lt rx1023_pos, -1, rx1023_done
-    eq rx1023_pos, -1, rx1023_fail
-    jump $I10
-  rx1023_done:
-    rx1023_cur."!cursor_fail"()
-    rx1023_cur."!cursor_debug"("FAIL  ", "infix:sym<*>")
-    .return (rx1023_cur)
+    rx1028_cur."!cursor_pass"(rx1028_pos, "infix:sym<*>")
+    rx1028_cur."!cursor_debug"("PASS  ", "infix:sym<*>", " at pos=", rx1028_pos)
+    .return (rx1028_cur)
+  rx1028_fail:
+.annotate "line", 422
+    (rx1028_rep, rx1028_pos, $I10, $P10) = rx1028_cur."!mark_fail"(0)
+    lt rx1028_pos, -1, rx1028_done
+    eq rx1028_pos, -1, rx1028_fail
+    jump $I10
+  rx1028_done:
+    rx1028_cur."!cursor_fail"()
+    rx1028_cur."!cursor_debug"("FAIL  ", "infix:sym<*>")
+    .return (rx1028_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<*>"  :subid("258_1271336396.90314") :method
-.annotate "line", 421
-    $P1025 = self."!PREFIX__!subrule"("O", "*")
-    new $P1026, "ResizablePMCArray"
-    push $P1026, $P1025
-    .return ($P1026)
+.sub "!PREFIX__infix:sym<*>"  :subid("260_1271948667.92136") :method
+.annotate "line", 422
+    $P1030 = self."!PREFIX__!subrule"("O", "*")
+    new $P1031, "ResizablePMCArray"
+    push $P1031, $P1030
+    .return ($P1031)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym</>"  :subid("259_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1030_tgt
-    .local int rx1030_pos
-    .local int rx1030_off
-    .local int rx1030_eos
-    .local int rx1030_rep
-    .local pmc rx1030_cur
-    (rx1030_cur, rx1030_pos, rx1030_tgt) = self."!cursor_start"()
-    rx1030_cur."!cursor_debug"("START ", "infix:sym</>")
-    .lex unicode:"$\x{a2}", rx1030_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1030_eos, rx1030_tgt
-    set rx1030_off, 0
-    lt rx1030_pos, 2, rx1030_start
-    sub rx1030_off, rx1030_pos, 1
-    substr rx1030_tgt, rx1030_tgt, rx1030_off
-  rx1030_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1034_done
-    goto rxscan1034_scan
-  rxscan1034_loop:
-    ($P10) = rx1030_cur."from"()
-    inc $P10
-    set rx1030_pos, $P10
-    ge rx1030_pos, rx1030_eos, rxscan1034_done
-  rxscan1034_scan:
-    set_addr $I10, rxscan1034_loop
-    rx1030_cur."!mark_push"(0, rx1030_pos, $I10)
-  rxscan1034_done:
-.annotate "line", 482
+.sub "infix:sym</>"  :subid("261_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1035_tgt
+    .local int rx1035_pos
+    .local int rx1035_off
+    .local int rx1035_eos
+    .local int rx1035_rep
+    .local pmc rx1035_cur
+    (rx1035_cur, rx1035_pos, rx1035_tgt) = self."!cursor_start"()
+    rx1035_cur."!cursor_debug"("START ", "infix:sym</>")
+    .lex unicode:"$\x{a2}", rx1035_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1035_eos, rx1035_tgt
+    set rx1035_off, 0
+    lt rx1035_pos, 2, rx1035_start
+    sub rx1035_off, rx1035_pos, 1
+    substr rx1035_tgt, rx1035_tgt, rx1035_off
+  rx1035_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1039_done
+    goto rxscan1039_scan
+  rxscan1039_loop:
+    ($P10) = rx1035_cur."from"()
+    inc $P10
+    set rx1035_pos, $P10
+    ge rx1035_pos, rx1035_eos, rxscan1039_done
+  rxscan1039_scan:
+    set_addr $I10, rxscan1039_loop
+    rx1035_cur."!mark_push"(0, rx1035_pos, $I10)
+  rxscan1039_done:
+.annotate "line", 483
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1035_fail
-    rx1030_cur."!mark_push"(0, rx1030_pos, $I10)
+    set_addr $I10, rxcap_1040_fail
+    rx1035_cur."!mark_push"(0, rx1035_pos, $I10)
   # rx literal  "/"
-    add $I11, rx1030_pos, 1
-    gt $I11, rx1030_eos, rx1030_fail
-    sub $I11, rx1030_pos, rx1030_off
-    substr $S10, rx1030_tgt, $I11, 1
-    ne $S10, "/", rx1030_fail
-    add rx1030_pos, 1
-    set_addr $I10, rxcap_1035_fail
-    ($I12, $I11) = rx1030_cur."!mark_peek"($I10)
-    rx1030_cur."!cursor_pos"($I11)
-    ($P10) = rx1030_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1030_pos, "")
-    rx1030_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1035_pos, 1
+    gt $I11, rx1035_eos, rx1035_fail
+    sub $I11, rx1035_pos, rx1035_off
+    substr $S10, rx1035_tgt, $I11, 1
+    ne $S10, "/", rx1035_fail
+    add rx1035_pos, 1
+    set_addr $I10, rxcap_1040_fail
+    ($I12, $I11) = rx1035_cur."!mark_peek"($I10)
+    rx1035_cur."!cursor_pos"($I11)
+    ($P10) = rx1035_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1035_pos, "")
+    rx1035_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1035_done
-  rxcap_1035_fail:
-    goto rx1030_fail
-  rxcap_1035_done:
+    goto rxcap_1040_done
+  rxcap_1040_fail:
+    goto rx1035_fail
+  rxcap_1040_done:
   # rx subrule "O" subtype=capture negate=
-    rx1030_cur."!cursor_pos"(rx1030_pos)
-    $P10 = rx1030_cur."O"("%multiplicative, :pirop<div>")
-    unless $P10, rx1030_fail
-    rx1030_cur."!mark_push"(0, -1, 0, $P10)
+    rx1035_cur."!cursor_pos"(rx1035_pos)
+    $P10 = rx1035_cur."O"("%multiplicative, :pirop<div>")
+    unless $P10, rx1035_fail
+    rx1035_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1030_pos = $P10."pos"()
+    rx1035_pos = $P10."pos"()
   # rx pass
-    rx1030_cur."!cursor_pass"(rx1030_pos, "infix:sym</>")
-    rx1030_cur."!cursor_debug"("PASS  ", "infix:sym</>", " at pos=", rx1030_pos)
-    .return (rx1030_cur)
-  rx1030_fail:
-.annotate "line", 421
-    (rx1030_rep, rx1030_pos, $I10, $P10) = rx1030_cur."!mark_fail"(0)
-    lt rx1030_pos, -1, rx1030_done
-    eq rx1030_pos, -1, rx1030_fail
-    jump $I10
-  rx1030_done:
-    rx1030_cur."!cursor_fail"()
-    rx1030_cur."!cursor_debug"("FAIL  ", "infix:sym</>")
-    .return (rx1030_cur)
+    rx1035_cur."!cursor_pass"(rx1035_pos, "infix:sym</>")
+    rx1035_cur."!cursor_debug"("PASS  ", "infix:sym</>", " at pos=", rx1035_pos)
+    .return (rx1035_cur)
+  rx1035_fail:
+.annotate "line", 422
+    (rx1035_rep, rx1035_pos, $I10, $P10) = rx1035_cur."!mark_fail"(0)
+    lt rx1035_pos, -1, rx1035_done
+    eq rx1035_pos, -1, rx1035_fail
+    jump $I10
+  rx1035_done:
+    rx1035_cur."!cursor_fail"()
+    rx1035_cur."!cursor_debug"("FAIL  ", "infix:sym</>")
+    .return (rx1035_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym</>"  :subid("260_1271336396.90314") :method
-.annotate "line", 421
-    $P1032 = self."!PREFIX__!subrule"("O", "/")
-    new $P1033, "ResizablePMCArray"
-    push $P1033, $P1032
-    .return ($P1033)
+.sub "!PREFIX__infix:sym</>"  :subid("262_1271948667.92136") :method
+.annotate "line", 422
+    $P1037 = self."!PREFIX__!subrule"("O", "/")
+    new $P1038, "ResizablePMCArray"
+    push $P1038, $P1037
+    .return ($P1038)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<%>"  :subid("261_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1037_tgt
-    .local int rx1037_pos
-    .local int rx1037_off
-    .local int rx1037_eos
-    .local int rx1037_rep
-    .local pmc rx1037_cur
-    (rx1037_cur, rx1037_pos, rx1037_tgt) = self."!cursor_start"()
-    rx1037_cur."!cursor_debug"("START ", "infix:sym<%>")
-    .lex unicode:"$\x{a2}", rx1037_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1037_eos, rx1037_tgt
-    set rx1037_off, 0
-    lt rx1037_pos, 2, rx1037_start
-    sub rx1037_off, rx1037_pos, 1
-    substr rx1037_tgt, rx1037_tgt, rx1037_off
-  rx1037_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1041_done
-    goto rxscan1041_scan
-  rxscan1041_loop:
-    ($P10) = rx1037_cur."from"()
-    inc $P10
-    set rx1037_pos, $P10
-    ge rx1037_pos, rx1037_eos, rxscan1041_done
-  rxscan1041_scan:
-    set_addr $I10, rxscan1041_loop
-    rx1037_cur."!mark_push"(0, rx1037_pos, $I10)
-  rxscan1041_done:
-.annotate "line", 483
+.sub "infix:sym<%>"  :subid("263_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1042_tgt
+    .local int rx1042_pos
+    .local int rx1042_off
+    .local int rx1042_eos
+    .local int rx1042_rep
+    .local pmc rx1042_cur
+    (rx1042_cur, rx1042_pos, rx1042_tgt) = self."!cursor_start"()
+    rx1042_cur."!cursor_debug"("START ", "infix:sym<%>")
+    .lex unicode:"$\x{a2}", rx1042_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1042_eos, rx1042_tgt
+    set rx1042_off, 0
+    lt rx1042_pos, 2, rx1042_start
+    sub rx1042_off, rx1042_pos, 1
+    substr rx1042_tgt, rx1042_tgt, rx1042_off
+  rx1042_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1046_done
+    goto rxscan1046_scan
+  rxscan1046_loop:
+    ($P10) = rx1042_cur."from"()
+    inc $P10
+    set rx1042_pos, $P10
+    ge rx1042_pos, rx1042_eos, rxscan1046_done
+  rxscan1046_scan:
+    set_addr $I10, rxscan1046_loop
+    rx1042_cur."!mark_push"(0, rx1042_pos, $I10)
+  rxscan1046_done:
+.annotate "line", 484
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1042_fail
-    rx1037_cur."!mark_push"(0, rx1037_pos, $I10)
+    set_addr $I10, rxcap_1047_fail
+    rx1042_cur."!mark_push"(0, rx1042_pos, $I10)
   # rx literal  "%"
-    add $I11, rx1037_pos, 1
-    gt $I11, rx1037_eos, rx1037_fail
-    sub $I11, rx1037_pos, rx1037_off
-    substr $S10, rx1037_tgt, $I11, 1
-    ne $S10, "%", rx1037_fail
-    add rx1037_pos, 1
-    set_addr $I10, rxcap_1042_fail
-    ($I12, $I11) = rx1037_cur."!mark_peek"($I10)
-    rx1037_cur."!cursor_pos"($I11)
-    ($P10) = rx1037_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1037_pos, "")
-    rx1037_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1042_pos, 1
+    gt $I11, rx1042_eos, rx1042_fail
+    sub $I11, rx1042_pos, rx1042_off
+    substr $S10, rx1042_tgt, $I11, 1
+    ne $S10, "%", rx1042_fail
+    add rx1042_pos, 1
+    set_addr $I10, rxcap_1047_fail
+    ($I12, $I11) = rx1042_cur."!mark_peek"($I10)
+    rx1042_cur."!cursor_pos"($I11)
+    ($P10) = rx1042_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1042_pos, "")
+    rx1042_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1042_done
-  rxcap_1042_fail:
-    goto rx1037_fail
-  rxcap_1042_done:
+    goto rxcap_1047_done
+  rxcap_1047_fail:
+    goto rx1042_fail
+  rxcap_1047_done:
   # rx subrule "O" subtype=capture negate=
-    rx1037_cur."!cursor_pos"(rx1037_pos)
-    $P10 = rx1037_cur."O"("%multiplicative, :pirop<mod>")
-    unless $P10, rx1037_fail
-    rx1037_cur."!mark_push"(0, -1, 0, $P10)
+    rx1042_cur."!cursor_pos"(rx1042_pos)
+    $P10 = rx1042_cur."O"("%multiplicative, :pirop<mod>")
+    unless $P10, rx1042_fail
+    rx1042_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1037_pos = $P10."pos"()
+    rx1042_pos = $P10."pos"()
   # rx pass
-    rx1037_cur."!cursor_pass"(rx1037_pos, "infix:sym<%>")
-    rx1037_cur."!cursor_debug"("PASS  ", "infix:sym<%>", " at pos=", rx1037_pos)
-    .return (rx1037_cur)
-  rx1037_fail:
-.annotate "line", 421
-    (rx1037_rep, rx1037_pos, $I10, $P10) = rx1037_cur."!mark_fail"(0)
-    lt rx1037_pos, -1, rx1037_done
-    eq rx1037_pos, -1, rx1037_fail
-    jump $I10
-  rx1037_done:
-    rx1037_cur."!cursor_fail"()
-    rx1037_cur."!cursor_debug"("FAIL  ", "infix:sym<%>")
-    .return (rx1037_cur)
+    rx1042_cur."!cursor_pass"(rx1042_pos, "infix:sym<%>")
+    rx1042_cur."!cursor_debug"("PASS  ", "infix:sym<%>", " at pos=", rx1042_pos)
+    .return (rx1042_cur)
+  rx1042_fail:
+.annotate "line", 422
+    (rx1042_rep, rx1042_pos, $I10, $P10) = rx1042_cur."!mark_fail"(0)
+    lt rx1042_pos, -1, rx1042_done
+    eq rx1042_pos, -1, rx1042_fail
+    jump $I10
+  rx1042_done:
+    rx1042_cur."!cursor_fail"()
+    rx1042_cur."!cursor_debug"("FAIL  ", "infix:sym<%>")
+    .return (rx1042_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<%>"  :subid("262_1271336396.90314") :method
-.annotate "line", 421
-    $P1039 = self."!PREFIX__!subrule"("O", "%")
-    new $P1040, "ResizablePMCArray"
-    push $P1040, $P1039
-    .return ($P1040)
+.sub "!PREFIX__infix:sym<%>"  :subid("264_1271948667.92136") :method
+.annotate "line", 422
+    $P1044 = self."!PREFIX__!subrule"("O", "%")
+    new $P1045, "ResizablePMCArray"
+    push $P1045, $P1044
+    .return ($P1045)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<+>"  :subid("263_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1044_tgt
-    .local int rx1044_pos
-    .local int rx1044_off
-    .local int rx1044_eos
-    .local int rx1044_rep
-    .local pmc rx1044_cur
-    (rx1044_cur, rx1044_pos, rx1044_tgt) = self."!cursor_start"()
-    rx1044_cur."!cursor_debug"("START ", "infix:sym<+>")
-    .lex unicode:"$\x{a2}", rx1044_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1044_eos, rx1044_tgt
-    set rx1044_off, 0
-    lt rx1044_pos, 2, rx1044_start
-    sub rx1044_off, rx1044_pos, 1
-    substr rx1044_tgt, rx1044_tgt, rx1044_off
-  rx1044_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1048_done
-    goto rxscan1048_scan
-  rxscan1048_loop:
-    ($P10) = rx1044_cur."from"()
-    inc $P10
-    set rx1044_pos, $P10
-    ge rx1044_pos, rx1044_eos, rxscan1048_done
-  rxscan1048_scan:
-    set_addr $I10, rxscan1048_loop
-    rx1044_cur."!mark_push"(0, rx1044_pos, $I10)
-  rxscan1048_done:
-.annotate "line", 485
+.sub "infix:sym<+>"  :subid("265_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1049_tgt
+    .local int rx1049_pos
+    .local int rx1049_off
+    .local int rx1049_eos
+    .local int rx1049_rep
+    .local pmc rx1049_cur
+    (rx1049_cur, rx1049_pos, rx1049_tgt) = self."!cursor_start"()
+    rx1049_cur."!cursor_debug"("START ", "infix:sym<+>")
+    .lex unicode:"$\x{a2}", rx1049_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1049_eos, rx1049_tgt
+    set rx1049_off, 0
+    lt rx1049_pos, 2, rx1049_start
+    sub rx1049_off, rx1049_pos, 1
+    substr rx1049_tgt, rx1049_tgt, rx1049_off
+  rx1049_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1053_done
+    goto rxscan1053_scan
+  rxscan1053_loop:
+    ($P10) = rx1049_cur."from"()
+    inc $P10
+    set rx1049_pos, $P10
+    ge rx1049_pos, rx1049_eos, rxscan1053_done
+  rxscan1053_scan:
+    set_addr $I10, rxscan1053_loop
+    rx1049_cur."!mark_push"(0, rx1049_pos, $I10)
+  rxscan1053_done:
+.annotate "line", 486
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1049_fail
-    rx1044_cur."!mark_push"(0, rx1044_pos, $I10)
+    set_addr $I10, rxcap_1054_fail
+    rx1049_cur."!mark_push"(0, rx1049_pos, $I10)
   # rx literal  "+"
-    add $I11, rx1044_pos, 1
-    gt $I11, rx1044_eos, rx1044_fail
-    sub $I11, rx1044_pos, rx1044_off
-    substr $S10, rx1044_tgt, $I11, 1
-    ne $S10, "+", rx1044_fail
-    add rx1044_pos, 1
-    set_addr $I10, rxcap_1049_fail
-    ($I12, $I11) = rx1044_cur."!mark_peek"($I10)
-    rx1044_cur."!cursor_pos"($I11)
-    ($P10) = rx1044_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1044_pos, "")
-    rx1044_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1049_pos, 1
+    gt $I11, rx1049_eos, rx1049_fail
+    sub $I11, rx1049_pos, rx1049_off
+    substr $S10, rx1049_tgt, $I11, 1
+    ne $S10, "+", rx1049_fail
+    add rx1049_pos, 1
+    set_addr $I10, rxcap_1054_fail
+    ($I12, $I11) = rx1049_cur."!mark_peek"($I10)
+    rx1049_cur."!cursor_pos"($I11)
+    ($P10) = rx1049_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1049_pos, "")
+    rx1049_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1049_done
-  rxcap_1049_fail:
-    goto rx1044_fail
-  rxcap_1049_done:
+    goto rxcap_1054_done
+  rxcap_1054_fail:
+    goto rx1049_fail
+  rxcap_1054_done:
   # rx subrule "O" subtype=capture negate=
-    rx1044_cur."!cursor_pos"(rx1044_pos)
-    $P10 = rx1044_cur."O"("%additive, :pirop<add>")
-    unless $P10, rx1044_fail
-    rx1044_cur."!mark_push"(0, -1, 0, $P10)
+    rx1049_cur."!cursor_pos"(rx1049_pos)
+    $P10 = rx1049_cur."O"("%additive, :pirop<add>")
+    unless $P10, rx1049_fail
+    rx1049_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1044_pos = $P10."pos"()
+    rx1049_pos = $P10."pos"()
   # rx pass
-    rx1044_cur."!cursor_pass"(rx1044_pos, "infix:sym<+>")
-    rx1044_cur."!cursor_debug"("PASS  ", "infix:sym<+>", " at pos=", rx1044_pos)
-    .return (rx1044_cur)
-  rx1044_fail:
-.annotate "line", 421
-    (rx1044_rep, rx1044_pos, $I10, $P10) = rx1044_cur."!mark_fail"(0)
-    lt rx1044_pos, -1, rx1044_done
-    eq rx1044_pos, -1, rx1044_fail
-    jump $I10
-  rx1044_done:
-    rx1044_cur."!cursor_fail"()
-    rx1044_cur."!cursor_debug"("FAIL  ", "infix:sym<+>")
-    .return (rx1044_cur)
+    rx1049_cur."!cursor_pass"(rx1049_pos, "infix:sym<+>")
+    rx1049_cur."!cursor_debug"("PASS  ", "infix:sym<+>", " at pos=", rx1049_pos)
+    .return (rx1049_cur)
+  rx1049_fail:
+.annotate "line", 422
+    (rx1049_rep, rx1049_pos, $I10, $P10) = rx1049_cur."!mark_fail"(0)
+    lt rx1049_pos, -1, rx1049_done
+    eq rx1049_pos, -1, rx1049_fail
+    jump $I10
+  rx1049_done:
+    rx1049_cur."!cursor_fail"()
+    rx1049_cur."!cursor_debug"("FAIL  ", "infix:sym<+>")
+    .return (rx1049_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<+>"  :subid("264_1271336396.90314") :method
-.annotate "line", 421
-    $P1046 = self."!PREFIX__!subrule"("O", "+")
-    new $P1047, "ResizablePMCArray"
-    push $P1047, $P1046
-    .return ($P1047)
+.sub "!PREFIX__infix:sym<+>"  :subid("266_1271948667.92136") :method
+.annotate "line", 422
+    $P1051 = self."!PREFIX__!subrule"("O", "+")
+    new $P1052, "ResizablePMCArray"
+    push $P1052, $P1051
+    .return ($P1052)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<->"  :subid("265_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1051_tgt
-    .local int rx1051_pos
-    .local int rx1051_off
-    .local int rx1051_eos
-    .local int rx1051_rep
-    .local pmc rx1051_cur
-    (rx1051_cur, rx1051_pos, rx1051_tgt) = self."!cursor_start"()
-    rx1051_cur."!cursor_debug"("START ", "infix:sym<->")
-    .lex unicode:"$\x{a2}", rx1051_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1051_eos, rx1051_tgt
-    set rx1051_off, 0
-    lt rx1051_pos, 2, rx1051_start
-    sub rx1051_off, rx1051_pos, 1
-    substr rx1051_tgt, rx1051_tgt, rx1051_off
-  rx1051_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1055_done
-    goto rxscan1055_scan
-  rxscan1055_loop:
-    ($P10) = rx1051_cur."from"()
-    inc $P10
-    set rx1051_pos, $P10
-    ge rx1051_pos, rx1051_eos, rxscan1055_done
-  rxscan1055_scan:
-    set_addr $I10, rxscan1055_loop
-    rx1051_cur."!mark_push"(0, rx1051_pos, $I10)
-  rxscan1055_done:
-.annotate "line", 486
+.sub "infix:sym<->"  :subid("267_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1056_tgt
+    .local int rx1056_pos
+    .local int rx1056_off
+    .local int rx1056_eos
+    .local int rx1056_rep
+    .local pmc rx1056_cur
+    (rx1056_cur, rx1056_pos, rx1056_tgt) = self."!cursor_start"()
+    rx1056_cur."!cursor_debug"("START ", "infix:sym<->")
+    .lex unicode:"$\x{a2}", rx1056_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1056_eos, rx1056_tgt
+    set rx1056_off, 0
+    lt rx1056_pos, 2, rx1056_start
+    sub rx1056_off, rx1056_pos, 1
+    substr rx1056_tgt, rx1056_tgt, rx1056_off
+  rx1056_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1060_done
+    goto rxscan1060_scan
+  rxscan1060_loop:
+    ($P10) = rx1056_cur."from"()
+    inc $P10
+    set rx1056_pos, $P10
+    ge rx1056_pos, rx1056_eos, rxscan1060_done
+  rxscan1060_scan:
+    set_addr $I10, rxscan1060_loop
+    rx1056_cur."!mark_push"(0, rx1056_pos, $I10)
+  rxscan1060_done:
+.annotate "line", 487
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1056_fail
-    rx1051_cur."!mark_push"(0, rx1051_pos, $I10)
+    set_addr $I10, rxcap_1061_fail
+    rx1056_cur."!mark_push"(0, rx1056_pos, $I10)
   # rx literal  "-"
-    add $I11, rx1051_pos, 1
-    gt $I11, rx1051_eos, rx1051_fail
-    sub $I11, rx1051_pos, rx1051_off
-    substr $S10, rx1051_tgt, $I11, 1
-    ne $S10, "-", rx1051_fail
-    add rx1051_pos, 1
-    set_addr $I10, rxcap_1056_fail
-    ($I12, $I11) = rx1051_cur."!mark_peek"($I10)
-    rx1051_cur."!cursor_pos"($I11)
-    ($P10) = rx1051_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1051_pos, "")
-    rx1051_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1056_pos, 1
+    gt $I11, rx1056_eos, rx1056_fail
+    sub $I11, rx1056_pos, rx1056_off
+    substr $S10, rx1056_tgt, $I11, 1
+    ne $S10, "-", rx1056_fail
+    add rx1056_pos, 1
+    set_addr $I10, rxcap_1061_fail
+    ($I12, $I11) = rx1056_cur."!mark_peek"($I10)
+    rx1056_cur."!cursor_pos"($I11)
+    ($P10) = rx1056_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1056_pos, "")
+    rx1056_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1056_done
-  rxcap_1056_fail:
-    goto rx1051_fail
-  rxcap_1056_done:
+    goto rxcap_1061_done
+  rxcap_1061_fail:
+    goto rx1056_fail
+  rxcap_1061_done:
   # rx subrule "O" subtype=capture negate=
-    rx1051_cur."!cursor_pos"(rx1051_pos)
-    $P10 = rx1051_cur."O"("%additive, :pirop<sub>")
-    unless $P10, rx1051_fail
-    rx1051_cur."!mark_push"(0, -1, 0, $P10)
+    rx1056_cur."!cursor_pos"(rx1056_pos)
+    $P10 = rx1056_cur."O"("%additive, :pirop<sub>")
+    unless $P10, rx1056_fail
+    rx1056_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1051_pos = $P10."pos"()
+    rx1056_pos = $P10."pos"()
   # rx pass
-    rx1051_cur."!cursor_pass"(rx1051_pos, "infix:sym<->")
-    rx1051_cur."!cursor_debug"("PASS  ", "infix:sym<->", " at pos=", rx1051_pos)
-    .return (rx1051_cur)
-  rx1051_fail:
-.annotate "line", 421
-    (rx1051_rep, rx1051_pos, $I10, $P10) = rx1051_cur."!mark_fail"(0)
-    lt rx1051_pos, -1, rx1051_done
-    eq rx1051_pos, -1, rx1051_fail
-    jump $I10
-  rx1051_done:
-    rx1051_cur."!cursor_fail"()
-    rx1051_cur."!cursor_debug"("FAIL  ", "infix:sym<->")
-    .return (rx1051_cur)
+    rx1056_cur."!cursor_pass"(rx1056_pos, "infix:sym<->")
+    rx1056_cur."!cursor_debug"("PASS  ", "infix:sym<->", " at pos=", rx1056_pos)
+    .return (rx1056_cur)
+  rx1056_fail:
+.annotate "line", 422
+    (rx1056_rep, rx1056_pos, $I10, $P10) = rx1056_cur."!mark_fail"(0)
+    lt rx1056_pos, -1, rx1056_done
+    eq rx1056_pos, -1, rx1056_fail
+    jump $I10
+  rx1056_done:
+    rx1056_cur."!cursor_fail"()
+    rx1056_cur."!cursor_debug"("FAIL  ", "infix:sym<->")
+    .return (rx1056_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<->"  :subid("266_1271336396.90314") :method
-.annotate "line", 421
-    $P1053 = self."!PREFIX__!subrule"("O", "-")
-    new $P1054, "ResizablePMCArray"
-    push $P1054, $P1053
-    .return ($P1054)
+.sub "!PREFIX__infix:sym<->"  :subid("268_1271948667.92136") :method
+.annotate "line", 422
+    $P1058 = self."!PREFIX__!subrule"("O", "-")
+    new $P1059, "ResizablePMCArray"
+    push $P1059, $P1058
+    .return ($P1059)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~>"  :subid("267_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1058_tgt
-    .local int rx1058_pos
-    .local int rx1058_off
-    .local int rx1058_eos
-    .local int rx1058_rep
-    .local pmc rx1058_cur
-    (rx1058_cur, rx1058_pos, rx1058_tgt) = self."!cursor_start"()
-    rx1058_cur."!cursor_debug"("START ", "infix:sym<~>")
-    .lex unicode:"$\x{a2}", rx1058_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1058_eos, rx1058_tgt
-    set rx1058_off, 0
-    lt rx1058_pos, 2, rx1058_start
-    sub rx1058_off, rx1058_pos, 1
-    substr rx1058_tgt, rx1058_tgt, rx1058_off
-  rx1058_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1062_done
-    goto rxscan1062_scan
-  rxscan1062_loop:
-    ($P10) = rx1058_cur."from"()
-    inc $P10
-    set rx1058_pos, $P10
-    ge rx1058_pos, rx1058_eos, rxscan1062_done
-  rxscan1062_scan:
-    set_addr $I10, rxscan1062_loop
-    rx1058_cur."!mark_push"(0, rx1058_pos, $I10)
-  rxscan1062_done:
-.annotate "line", 488
+.sub "infix:sym<~>"  :subid("269_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1063_tgt
+    .local int rx1063_pos
+    .local int rx1063_off
+    .local int rx1063_eos
+    .local int rx1063_rep
+    .local pmc rx1063_cur
+    (rx1063_cur, rx1063_pos, rx1063_tgt) = self."!cursor_start"()
+    rx1063_cur."!cursor_debug"("START ", "infix:sym<~>")
+    .lex unicode:"$\x{a2}", rx1063_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1063_eos, rx1063_tgt
+    set rx1063_off, 0
+    lt rx1063_pos, 2, rx1063_start
+    sub rx1063_off, rx1063_pos, 1
+    substr rx1063_tgt, rx1063_tgt, rx1063_off
+  rx1063_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1067_done
+    goto rxscan1067_scan
+  rxscan1067_loop:
+    ($P10) = rx1063_cur."from"()
+    inc $P10
+    set rx1063_pos, $P10
+    ge rx1063_pos, rx1063_eos, rxscan1067_done
+  rxscan1067_scan:
+    set_addr $I10, rxscan1067_loop
+    rx1063_cur."!mark_push"(0, rx1063_pos, $I10)
+  rxscan1067_done:
+.annotate "line", 489
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1063_fail
-    rx1058_cur."!mark_push"(0, rx1058_pos, $I10)
+    set_addr $I10, rxcap_1068_fail
+    rx1063_cur."!mark_push"(0, rx1063_pos, $I10)
   # rx literal  "~"
-    add $I11, rx1058_pos, 1
-    gt $I11, rx1058_eos, rx1058_fail
-    sub $I11, rx1058_pos, rx1058_off
-    substr $S10, rx1058_tgt, $I11, 1
-    ne $S10, "~", rx1058_fail
-    add rx1058_pos, 1
-    set_addr $I10, rxcap_1063_fail
-    ($I12, $I11) = rx1058_cur."!mark_peek"($I10)
-    rx1058_cur."!cursor_pos"($I11)
-    ($P10) = rx1058_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1058_pos, "")
-    rx1058_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1063_pos, 1
+    gt $I11, rx1063_eos, rx1063_fail
+    sub $I11, rx1063_pos, rx1063_off
+    substr $S10, rx1063_tgt, $I11, 1
+    ne $S10, "~", rx1063_fail
+    add rx1063_pos, 1
+    set_addr $I10, rxcap_1068_fail
+    ($I12, $I11) = rx1063_cur."!mark_peek"($I10)
+    rx1063_cur."!cursor_pos"($I11)
+    ($P10) = rx1063_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1063_pos, "")
+    rx1063_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1063_done
-  rxcap_1063_fail:
-    goto rx1058_fail
-  rxcap_1063_done:
+    goto rxcap_1068_done
+  rxcap_1068_fail:
+    goto rx1063_fail
+  rxcap_1068_done:
   # rx subrule "O" subtype=capture negate=
-    rx1058_cur."!cursor_pos"(rx1058_pos)
-    $P10 = rx1058_cur."O"("%concatenation , :pirop<concat>")
-    unless $P10, rx1058_fail
-    rx1058_cur."!mark_push"(0, -1, 0, $P10)
+    rx1063_cur."!cursor_pos"(rx1063_pos)
+    $P10 = rx1063_cur."O"("%concatenation , :pirop<concat>")
+    unless $P10, rx1063_fail
+    rx1063_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1058_pos = $P10."pos"()
+    rx1063_pos = $P10."pos"()
   # rx pass
-    rx1058_cur."!cursor_pass"(rx1058_pos, "infix:sym<~>")
-    rx1058_cur."!cursor_debug"("PASS  ", "infix:sym<~>", " at pos=", rx1058_pos)
-    .return (rx1058_cur)
-  rx1058_fail:
-.annotate "line", 421
-    (rx1058_rep, rx1058_pos, $I10, $P10) = rx1058_cur."!mark_fail"(0)
-    lt rx1058_pos, -1, rx1058_done
-    eq rx1058_pos, -1, rx1058_fail
-    jump $I10
-  rx1058_done:
-    rx1058_cur."!cursor_fail"()
-    rx1058_cur."!cursor_debug"("FAIL  ", "infix:sym<~>")
-    .return (rx1058_cur)
+    rx1063_cur."!cursor_pass"(rx1063_pos, "infix:sym<~>")
+    rx1063_cur."!cursor_debug"("PASS  ", "infix:sym<~>", " at pos=", rx1063_pos)
+    .return (rx1063_cur)
+  rx1063_fail:
+.annotate "line", 422
+    (rx1063_rep, rx1063_pos, $I10, $P10) = rx1063_cur."!mark_fail"(0)
+    lt rx1063_pos, -1, rx1063_done
+    eq rx1063_pos, -1, rx1063_fail
+    jump $I10
+  rx1063_done:
+    rx1063_cur."!cursor_fail"()
+    rx1063_cur."!cursor_debug"("FAIL  ", "infix:sym<~>")
+    .return (rx1063_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~>"  :subid("268_1271336396.90314") :method
-.annotate "line", 421
-    $P1060 = self."!PREFIX__!subrule"("O", "~")
-    new $P1061, "ResizablePMCArray"
-    push $P1061, $P1060
-    .return ($P1061)
+.sub "!PREFIX__infix:sym<~>"  :subid("270_1271948667.92136") :method
+.annotate "line", 422
+    $P1065 = self."!PREFIX__!subrule"("O", "~")
+    new $P1066, "ResizablePMCArray"
+    push $P1066, $P1065
+    .return ($P1066)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<==>"  :subid("269_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1065_tgt
-    .local int rx1065_pos
-    .local int rx1065_off
-    .local int rx1065_eos
-    .local int rx1065_rep
-    .local pmc rx1065_cur
-    (rx1065_cur, rx1065_pos, rx1065_tgt) = self."!cursor_start"()
-    rx1065_cur."!cursor_debug"("START ", "infix:sym<==>")
-    .lex unicode:"$\x{a2}", rx1065_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1065_eos, rx1065_tgt
-    set rx1065_off, 0
-    lt rx1065_pos, 2, rx1065_start
-    sub rx1065_off, rx1065_pos, 1
-    substr rx1065_tgt, rx1065_tgt, rx1065_off
-  rx1065_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1069_done
-    goto rxscan1069_scan
-  rxscan1069_loop:
-    ($P10) = rx1065_cur."from"()
-    inc $P10
-    set rx1065_pos, $P10
-    ge rx1065_pos, rx1065_eos, rxscan1069_done
-  rxscan1069_scan:
-    set_addr $I10, rxscan1069_loop
-    rx1065_cur."!mark_push"(0, rx1065_pos, $I10)
-  rxscan1069_done:
-.annotate "line", 490
+.sub "infix:sym<==>"  :subid("271_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1070_tgt
+    .local int rx1070_pos
+    .local int rx1070_off
+    .local int rx1070_eos
+    .local int rx1070_rep
+    .local pmc rx1070_cur
+    (rx1070_cur, rx1070_pos, rx1070_tgt) = self."!cursor_start"()
+    rx1070_cur."!cursor_debug"("START ", "infix:sym<==>")
+    .lex unicode:"$\x{a2}", rx1070_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1070_eos, rx1070_tgt
+    set rx1070_off, 0
+    lt rx1070_pos, 2, rx1070_start
+    sub rx1070_off, rx1070_pos, 1
+    substr rx1070_tgt, rx1070_tgt, rx1070_off
+  rx1070_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1074_done
+    goto rxscan1074_scan
+  rxscan1074_loop:
+    ($P10) = rx1070_cur."from"()
+    inc $P10
+    set rx1070_pos, $P10
+    ge rx1070_pos, rx1070_eos, rxscan1074_done
+  rxscan1074_scan:
+    set_addr $I10, rxscan1074_loop
+    rx1070_cur."!mark_push"(0, rx1070_pos, $I10)
+  rxscan1074_done:
+.annotate "line", 491
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1070_fail
-    rx1065_cur."!mark_push"(0, rx1065_pos, $I10)
+    set_addr $I10, rxcap_1075_fail
+    rx1070_cur."!mark_push"(0, rx1070_pos, $I10)
   # rx literal  "=="
-    add $I11, rx1065_pos, 2
-    gt $I11, rx1065_eos, rx1065_fail
-    sub $I11, rx1065_pos, rx1065_off
-    substr $S10, rx1065_tgt, $I11, 2
-    ne $S10, "==", rx1065_fail
-    add rx1065_pos, 2
-    set_addr $I10, rxcap_1070_fail
-    ($I12, $I11) = rx1065_cur."!mark_peek"($I10)
-    rx1065_cur."!cursor_pos"($I11)
-    ($P10) = rx1065_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1065_pos, "")
-    rx1065_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1070_pos, 2
+    gt $I11, rx1070_eos, rx1070_fail
+    sub $I11, rx1070_pos, rx1070_off
+    substr $S10, rx1070_tgt, $I11, 2
+    ne $S10, "==", rx1070_fail
+    add rx1070_pos, 2
+    set_addr $I10, rxcap_1075_fail
+    ($I12, $I11) = rx1070_cur."!mark_peek"($I10)
+    rx1070_cur."!cursor_pos"($I11)
+    ($P10) = rx1070_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1070_pos, "")
+    rx1070_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1070_done
-  rxcap_1070_fail:
-    goto rx1065_fail
-  rxcap_1070_done:
+    goto rxcap_1075_done
+  rxcap_1075_fail:
+    goto rx1070_fail
+  rxcap_1075_done:
   # rx subrule "O" subtype=capture negate=
-    rx1065_cur."!cursor_pos"(rx1065_pos)
-    $P10 = rx1065_cur."O"("%relational, :pirop<iseq INn>")
-    unless $P10, rx1065_fail
-    rx1065_cur."!mark_push"(0, -1, 0, $P10)
+    rx1070_cur."!cursor_pos"(rx1070_pos)
+    $P10 = rx1070_cur."O"("%relational, :pirop<iseq INn>")
+    unless $P10, rx1070_fail
+    rx1070_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1065_pos = $P10."pos"()
+    rx1070_pos = $P10."pos"()
   # rx pass
-    rx1065_cur."!cursor_pass"(rx1065_pos, "infix:sym<==>")
-    rx1065_cur."!cursor_debug"("PASS  ", "infix:sym<==>", " at pos=", rx1065_pos)
-    .return (rx1065_cur)
-  rx1065_fail:
-.annotate "line", 421
-    (rx1065_rep, rx1065_pos, $I10, $P10) = rx1065_cur."!mark_fail"(0)
-    lt rx1065_pos, -1, rx1065_done
-    eq rx1065_pos, -1, rx1065_fail
-    jump $I10
-  rx1065_done:
-    rx1065_cur."!cursor_fail"()
-    rx1065_cur."!cursor_debug"("FAIL  ", "infix:sym<==>")
-    .return (rx1065_cur)
+    rx1070_cur."!cursor_pass"(rx1070_pos, "infix:sym<==>")
+    rx1070_cur."!cursor_debug"("PASS  ", "infix:sym<==>", " at pos=", rx1070_pos)
+    .return (rx1070_cur)
+  rx1070_fail:
+.annotate "line", 422
+    (rx1070_rep, rx1070_pos, $I10, $P10) = rx1070_cur."!mark_fail"(0)
+    lt rx1070_pos, -1, rx1070_done
+    eq rx1070_pos, -1, rx1070_fail
+    jump $I10
+  rx1070_done:
+    rx1070_cur."!cursor_fail"()
+    rx1070_cur."!cursor_debug"("FAIL  ", "infix:sym<==>")
+    .return (rx1070_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<==>"  :subid("270_1271336396.90314") :method
-.annotate "line", 421
-    $P1067 = self."!PREFIX__!subrule"("O", "==")
-    new $P1068, "ResizablePMCArray"
-    push $P1068, $P1067
-    .return ($P1068)
+.sub "!PREFIX__infix:sym<==>"  :subid("272_1271948667.92136") :method
+.annotate "line", 422
+    $P1072 = self."!PREFIX__!subrule"("O", "==")
+    new $P1073, "ResizablePMCArray"
+    push $P1073, $P1072
+    .return ($P1073)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<!=>"  :subid("271_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1072_tgt
-    .local int rx1072_pos
-    .local int rx1072_off
-    .local int rx1072_eos
-    .local int rx1072_rep
-    .local pmc rx1072_cur
-    (rx1072_cur, rx1072_pos, rx1072_tgt) = self."!cursor_start"()
-    rx1072_cur."!cursor_debug"("START ", "infix:sym<!=>")
-    .lex unicode:"$\x{a2}", rx1072_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1072_eos, rx1072_tgt
-    set rx1072_off, 0
-    lt rx1072_pos, 2, rx1072_start
-    sub rx1072_off, rx1072_pos, 1
-    substr rx1072_tgt, rx1072_tgt, rx1072_off
-  rx1072_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1076_done
-    goto rxscan1076_scan
-  rxscan1076_loop:
-    ($P10) = rx1072_cur."from"()
-    inc $P10
-    set rx1072_pos, $P10
-    ge rx1072_pos, rx1072_eos, rxscan1076_done
-  rxscan1076_scan:
-    set_addr $I10, rxscan1076_loop
-    rx1072_cur."!mark_push"(0, rx1072_pos, $I10)
-  rxscan1076_done:
-.annotate "line", 491
+.sub "infix:sym<!=>"  :subid("273_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1077_tgt
+    .local int rx1077_pos
+    .local int rx1077_off
+    .local int rx1077_eos
+    .local int rx1077_rep
+    .local pmc rx1077_cur
+    (rx1077_cur, rx1077_pos, rx1077_tgt) = self."!cursor_start"()
+    rx1077_cur."!cursor_debug"("START ", "infix:sym<!=>")
+    .lex unicode:"$\x{a2}", rx1077_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1077_eos, rx1077_tgt
+    set rx1077_off, 0
+    lt rx1077_pos, 2, rx1077_start
+    sub rx1077_off, rx1077_pos, 1
+    substr rx1077_tgt, rx1077_tgt, rx1077_off
+  rx1077_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1081_done
+    goto rxscan1081_scan
+  rxscan1081_loop:
+    ($P10) = rx1077_cur."from"()
+    inc $P10
+    set rx1077_pos, $P10
+    ge rx1077_pos, rx1077_eos, rxscan1081_done
+  rxscan1081_scan:
+    set_addr $I10, rxscan1081_loop
+    rx1077_cur."!mark_push"(0, rx1077_pos, $I10)
+  rxscan1081_done:
+.annotate "line", 492
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1077_fail
-    rx1072_cur."!mark_push"(0, rx1072_pos, $I10)
+    set_addr $I10, rxcap_1082_fail
+    rx1077_cur."!mark_push"(0, rx1077_pos, $I10)
   # rx literal  "!="
-    add $I11, rx1072_pos, 2
-    gt $I11, rx1072_eos, rx1072_fail
-    sub $I11, rx1072_pos, rx1072_off
-    substr $S10, rx1072_tgt, $I11, 2
-    ne $S10, "!=", rx1072_fail
-    add rx1072_pos, 2
-    set_addr $I10, rxcap_1077_fail
-    ($I12, $I11) = rx1072_cur."!mark_peek"($I10)
-    rx1072_cur."!cursor_pos"($I11)
-    ($P10) = rx1072_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1072_pos, "")
-    rx1072_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1077_pos, 2
+    gt $I11, rx1077_eos, rx1077_fail
+    sub $I11, rx1077_pos, rx1077_off
+    substr $S10, rx1077_tgt, $I11, 2
+    ne $S10, "!=", rx1077_fail
+    add rx1077_pos, 2
+    set_addr $I10, rxcap_1082_fail
+    ($I12, $I11) = rx1077_cur."!mark_peek"($I10)
+    rx1077_cur."!cursor_pos"($I11)
+    ($P10) = rx1077_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1077_pos, "")
+    rx1077_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1077_done
-  rxcap_1077_fail:
-    goto rx1072_fail
-  rxcap_1077_done:
+    goto rxcap_1082_done
+  rxcap_1082_fail:
+    goto rx1077_fail
+  rxcap_1082_done:
   # rx subrule "O" subtype=capture negate=
-    rx1072_cur."!cursor_pos"(rx1072_pos)
-    $P10 = rx1072_cur."O"("%relational, :pirop<isne INn>")
-    unless $P10, rx1072_fail
-    rx1072_cur."!mark_push"(0, -1, 0, $P10)
+    rx1077_cur."!cursor_pos"(rx1077_pos)
+    $P10 = rx1077_cur."O"("%relational, :pirop<isne INn>")
+    unless $P10, rx1077_fail
+    rx1077_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1072_pos = $P10."pos"()
+    rx1077_pos = $P10."pos"()
   # rx pass
-    rx1072_cur."!cursor_pass"(rx1072_pos, "infix:sym<!=>")
-    rx1072_cur."!cursor_debug"("PASS  ", "infix:sym<!=>", " at pos=", rx1072_pos)
-    .return (rx1072_cur)
-  rx1072_fail:
-.annotate "line", 421
-    (rx1072_rep, rx1072_pos, $I10, $P10) = rx1072_cur."!mark_fail"(0)
-    lt rx1072_pos, -1, rx1072_done
-    eq rx1072_pos, -1, rx1072_fail
-    jump $I10
-  rx1072_done:
-    rx1072_cur."!cursor_fail"()
-    rx1072_cur."!cursor_debug"("FAIL  ", "infix:sym<!=>")
-    .return (rx1072_cur)
+    rx1077_cur."!cursor_pass"(rx1077_pos, "infix:sym<!=>")
+    rx1077_cur."!cursor_debug"("PASS  ", "infix:sym<!=>", " at pos=", rx1077_pos)
+    .return (rx1077_cur)
+  rx1077_fail:
+.annotate "line", 422
+    (rx1077_rep, rx1077_pos, $I10, $P10) = rx1077_cur."!mark_fail"(0)
+    lt rx1077_pos, -1, rx1077_done
+    eq rx1077_pos, -1, rx1077_fail
+    jump $I10
+  rx1077_done:
+    rx1077_cur."!cursor_fail"()
+    rx1077_cur."!cursor_debug"("FAIL  ", "infix:sym<!=>")
+    .return (rx1077_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<!=>"  :subid("272_1271336396.90314") :method
-.annotate "line", 421
-    $P1074 = self."!PREFIX__!subrule"("O", "!=")
-    new $P1075, "ResizablePMCArray"
-    push $P1075, $P1074
-    .return ($P1075)
+.sub "!PREFIX__infix:sym<!=>"  :subid("274_1271948667.92136") :method
+.annotate "line", 422
+    $P1079 = self."!PREFIX__!subrule"("O", "!=")
+    new $P1080, "ResizablePMCArray"
+    push $P1080, $P1079
+    .return ($P1080)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<=>"  :subid("273_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1079_tgt
-    .local int rx1079_pos
-    .local int rx1079_off
-    .local int rx1079_eos
-    .local int rx1079_rep
-    .local pmc rx1079_cur
-    (rx1079_cur, rx1079_pos, rx1079_tgt) = self."!cursor_start"()
-    rx1079_cur."!cursor_debug"("START ", "infix:sym<<=>")
-    .lex unicode:"$\x{a2}", rx1079_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1079_eos, rx1079_tgt
-    set rx1079_off, 0
-    lt rx1079_pos, 2, rx1079_start
-    sub rx1079_off, rx1079_pos, 1
-    substr rx1079_tgt, rx1079_tgt, rx1079_off
-  rx1079_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1083_done
-    goto rxscan1083_scan
-  rxscan1083_loop:
-    ($P10) = rx1079_cur."from"()
-    inc $P10
-    set rx1079_pos, $P10
-    ge rx1079_pos, rx1079_eos, rxscan1083_done
-  rxscan1083_scan:
-    set_addr $I10, rxscan1083_loop
-    rx1079_cur."!mark_push"(0, rx1079_pos, $I10)
-  rxscan1083_done:
-.annotate "line", 492
+.sub "infix:sym<<=>"  :subid("275_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1084_tgt
+    .local int rx1084_pos
+    .local int rx1084_off
+    .local int rx1084_eos
+    .local int rx1084_rep
+    .local pmc rx1084_cur
+    (rx1084_cur, rx1084_pos, rx1084_tgt) = self."!cursor_start"()
+    rx1084_cur."!cursor_debug"("START ", "infix:sym<<=>")
+    .lex unicode:"$\x{a2}", rx1084_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1084_eos, rx1084_tgt
+    set rx1084_off, 0
+    lt rx1084_pos, 2, rx1084_start
+    sub rx1084_off, rx1084_pos, 1
+    substr rx1084_tgt, rx1084_tgt, rx1084_off
+  rx1084_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1088_done
+    goto rxscan1088_scan
+  rxscan1088_loop:
+    ($P10) = rx1084_cur."from"()
+    inc $P10
+    set rx1084_pos, $P10
+    ge rx1084_pos, rx1084_eos, rxscan1088_done
+  rxscan1088_scan:
+    set_addr $I10, rxscan1088_loop
+    rx1084_cur."!mark_push"(0, rx1084_pos, $I10)
+  rxscan1088_done:
+.annotate "line", 493
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1084_fail
-    rx1079_cur."!mark_push"(0, rx1079_pos, $I10)
+    set_addr $I10, rxcap_1089_fail
+    rx1084_cur."!mark_push"(0, rx1084_pos, $I10)
   # rx literal  "<="
-    add $I11, rx1079_pos, 2
-    gt $I11, rx1079_eos, rx1079_fail
-    sub $I11, rx1079_pos, rx1079_off
-    substr $S10, rx1079_tgt, $I11, 2
-    ne $S10, "<=", rx1079_fail
-    add rx1079_pos, 2
-    set_addr $I10, rxcap_1084_fail
-    ($I12, $I11) = rx1079_cur."!mark_peek"($I10)
-    rx1079_cur."!cursor_pos"($I11)
-    ($P10) = rx1079_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1079_pos, "")
-    rx1079_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1084_pos, 2
+    gt $I11, rx1084_eos, rx1084_fail
+    sub $I11, rx1084_pos, rx1084_off
+    substr $S10, rx1084_tgt, $I11, 2
+    ne $S10, "<=", rx1084_fail
+    add rx1084_pos, 2
+    set_addr $I10, rxcap_1089_fail
+    ($I12, $I11) = rx1084_cur."!mark_peek"($I10)
+    rx1084_cur."!cursor_pos"($I11)
+    ($P10) = rx1084_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1084_pos, "")
+    rx1084_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1084_done
-  rxcap_1084_fail:
-    goto rx1079_fail
-  rxcap_1084_done:
+    goto rxcap_1089_done
+  rxcap_1089_fail:
+    goto rx1084_fail
+  rxcap_1089_done:
   # rx subrule "O" subtype=capture negate=
-    rx1079_cur."!cursor_pos"(rx1079_pos)
-    $P10 = rx1079_cur."O"("%relational, :pirop<isle INn>")
-    unless $P10, rx1079_fail
-    rx1079_cur."!mark_push"(0, -1, 0, $P10)
+    rx1084_cur."!cursor_pos"(rx1084_pos)
+    $P10 = rx1084_cur."O"("%relational, :pirop<isle INn>")
+    unless $P10, rx1084_fail
+    rx1084_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1079_pos = $P10."pos"()
+    rx1084_pos = $P10."pos"()
   # rx pass
-    rx1079_cur."!cursor_pass"(rx1079_pos, "infix:sym<<=>")
-    rx1079_cur."!cursor_debug"("PASS  ", "infix:sym<<=>", " at pos=", rx1079_pos)
-    .return (rx1079_cur)
-  rx1079_fail:
-.annotate "line", 421
-    (rx1079_rep, rx1079_pos, $I10, $P10) = rx1079_cur."!mark_fail"(0)
-    lt rx1079_pos, -1, rx1079_done
-    eq rx1079_pos, -1, rx1079_fail
-    jump $I10
-  rx1079_done:
-    rx1079_cur."!cursor_fail"()
-    rx1079_cur."!cursor_debug"("FAIL  ", "infix:sym<<=>")
-    .return (rx1079_cur)
+    rx1084_cur."!cursor_pass"(rx1084_pos, "infix:sym<<=>")
+    rx1084_cur."!cursor_debug"("PASS  ", "infix:sym<<=>", " at pos=", rx1084_pos)
+    .return (rx1084_cur)
+  rx1084_fail:
+.annotate "line", 422
+    (rx1084_rep, rx1084_pos, $I10, $P10) = rx1084_cur."!mark_fail"(0)
+    lt rx1084_pos, -1, rx1084_done
+    eq rx1084_pos, -1, rx1084_fail
+    jump $I10
+  rx1084_done:
+    rx1084_cur."!cursor_fail"()
+    rx1084_cur."!cursor_debug"("FAIL  ", "infix:sym<<=>")
+    .return (rx1084_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<=>"  :subid("274_1271336396.90314") :method
-.annotate "line", 421
-    $P1081 = self."!PREFIX__!subrule"("O", "<=")
-    new $P1082, "ResizablePMCArray"
-    push $P1082, $P1081
-    .return ($P1082)
+.sub "!PREFIX__infix:sym<<=>"  :subid("276_1271948667.92136") :method
+.annotate "line", 422
+    $P1086 = self."!PREFIX__!subrule"("O", "<=")
+    new $P1087, "ResizablePMCArray"
+    push $P1087, $P1086
+    .return ($P1087)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>=>"  :subid("275_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1086_tgt
-    .local int rx1086_pos
-    .local int rx1086_off
-    .local int rx1086_eos
-    .local int rx1086_rep
-    .local pmc rx1086_cur
-    (rx1086_cur, rx1086_pos, rx1086_tgt) = self."!cursor_start"()
-    rx1086_cur."!cursor_debug"("START ", "infix:sym<>=>")
-    .lex unicode:"$\x{a2}", rx1086_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1086_eos, rx1086_tgt
-    set rx1086_off, 0
-    lt rx1086_pos, 2, rx1086_start
-    sub rx1086_off, rx1086_pos, 1
-    substr rx1086_tgt, rx1086_tgt, rx1086_off
-  rx1086_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1090_done
-    goto rxscan1090_scan
-  rxscan1090_loop:
-    ($P10) = rx1086_cur."from"()
-    inc $P10
-    set rx1086_pos, $P10
-    ge rx1086_pos, rx1086_eos, rxscan1090_done
-  rxscan1090_scan:
-    set_addr $I10, rxscan1090_loop
-    rx1086_cur."!mark_push"(0, rx1086_pos, $I10)
-  rxscan1090_done:
-.annotate "line", 493
+.sub "infix:sym<>=>"  :subid("277_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1091_tgt
+    .local int rx1091_pos
+    .local int rx1091_off
+    .local int rx1091_eos
+    .local int rx1091_rep
+    .local pmc rx1091_cur
+    (rx1091_cur, rx1091_pos, rx1091_tgt) = self."!cursor_start"()
+    rx1091_cur."!cursor_debug"("START ", "infix:sym<>=>")
+    .lex unicode:"$\x{a2}", rx1091_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1091_eos, rx1091_tgt
+    set rx1091_off, 0
+    lt rx1091_pos, 2, rx1091_start
+    sub rx1091_off, rx1091_pos, 1
+    substr rx1091_tgt, rx1091_tgt, rx1091_off
+  rx1091_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1095_done
+    goto rxscan1095_scan
+  rxscan1095_loop:
+    ($P10) = rx1091_cur."from"()
+    inc $P10
+    set rx1091_pos, $P10
+    ge rx1091_pos, rx1091_eos, rxscan1095_done
+  rxscan1095_scan:
+    set_addr $I10, rxscan1095_loop
+    rx1091_cur."!mark_push"(0, rx1091_pos, $I10)
+  rxscan1095_done:
+.annotate "line", 494
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1091_fail
-    rx1086_cur."!mark_push"(0, rx1086_pos, $I10)
+    set_addr $I10, rxcap_1096_fail
+    rx1091_cur."!mark_push"(0, rx1091_pos, $I10)
   # rx literal  ">="
-    add $I11, rx1086_pos, 2
-    gt $I11, rx1086_eos, rx1086_fail
-    sub $I11, rx1086_pos, rx1086_off
-    substr $S10, rx1086_tgt, $I11, 2
-    ne $S10, ">=", rx1086_fail
-    add rx1086_pos, 2
-    set_addr $I10, rxcap_1091_fail
-    ($I12, $I11) = rx1086_cur."!mark_peek"($I10)
-    rx1086_cur."!cursor_pos"($I11)
-    ($P10) = rx1086_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1086_pos, "")
-    rx1086_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1091_pos, 2
+    gt $I11, rx1091_eos, rx1091_fail
+    sub $I11, rx1091_pos, rx1091_off
+    substr $S10, rx1091_tgt, $I11, 2
+    ne $S10, ">=", rx1091_fail
+    add rx1091_pos, 2
+    set_addr $I10, rxcap_1096_fail
+    ($I12, $I11) = rx1091_cur."!mark_peek"($I10)
+    rx1091_cur."!cursor_pos"($I11)
+    ($P10) = rx1091_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1091_pos, "")
+    rx1091_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1091_done
-  rxcap_1091_fail:
-    goto rx1086_fail
-  rxcap_1091_done:
+    goto rxcap_1096_done
+  rxcap_1096_fail:
+    goto rx1091_fail
+  rxcap_1096_done:
   # rx subrule "O" subtype=capture negate=
-    rx1086_cur."!cursor_pos"(rx1086_pos)
-    $P10 = rx1086_cur."O"("%relational, :pirop<isge INn>")
-    unless $P10, rx1086_fail
-    rx1086_cur."!mark_push"(0, -1, 0, $P10)
+    rx1091_cur."!cursor_pos"(rx1091_pos)
+    $P10 = rx1091_cur."O"("%relational, :pirop<isge INn>")
+    unless $P10, rx1091_fail
+    rx1091_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1086_pos = $P10."pos"()
+    rx1091_pos = $P10."pos"()
   # rx pass
-    rx1086_cur."!cursor_pass"(rx1086_pos, "infix:sym<>=>")
-    rx1086_cur."!cursor_debug"("PASS  ", "infix:sym<>=>", " at pos=", rx1086_pos)
-    .return (rx1086_cur)
-  rx1086_fail:
-.annotate "line", 421
-    (rx1086_rep, rx1086_pos, $I10, $P10) = rx1086_cur."!mark_fail"(0)
-    lt rx1086_pos, -1, rx1086_done
-    eq rx1086_pos, -1, rx1086_fail
-    jump $I10
-  rx1086_done:
-    rx1086_cur."!cursor_fail"()
-    rx1086_cur."!cursor_debug"("FAIL  ", "infix:sym<>=>")
-    .return (rx1086_cur)
+    rx1091_cur."!cursor_pass"(rx1091_pos, "infix:sym<>=>")
+    rx1091_cur."!cursor_debug"("PASS  ", "infix:sym<>=>", " at pos=", rx1091_pos)
+    .return (rx1091_cur)
+  rx1091_fail:
+.annotate "line", 422
+    (rx1091_rep, rx1091_pos, $I10, $P10) = rx1091_cur."!mark_fail"(0)
+    lt rx1091_pos, -1, rx1091_done
+    eq rx1091_pos, -1, rx1091_fail
+    jump $I10
+  rx1091_done:
+    rx1091_cur."!cursor_fail"()
+    rx1091_cur."!cursor_debug"("FAIL  ", "infix:sym<>=>")
+    .return (rx1091_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>=>"  :subid("276_1271336396.90314") :method
-.annotate "line", 421
-    $P1088 = self."!PREFIX__!subrule"("O", ">=")
-    new $P1089, "ResizablePMCArray"
-    push $P1089, $P1088
-    .return ($P1089)
+.sub "!PREFIX__infix:sym<>=>"  :subid("278_1271948667.92136") :method
+.annotate "line", 422
+    $P1093 = self."!PREFIX__!subrule"("O", ">=")
+    new $P1094, "ResizablePMCArray"
+    push $P1094, $P1093
+    .return ($P1094)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<>"  :subid("277_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1093_tgt
-    .local int rx1093_pos
-    .local int rx1093_off
-    .local int rx1093_eos
-    .local int rx1093_rep
-    .local pmc rx1093_cur
-    (rx1093_cur, rx1093_pos, rx1093_tgt) = self."!cursor_start"()
-    rx1093_cur."!cursor_debug"("START ", "infix:sym<<>")
-    .lex unicode:"$\x{a2}", rx1093_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1093_eos, rx1093_tgt
-    set rx1093_off, 0
-    lt rx1093_pos, 2, rx1093_start
-    sub rx1093_off, rx1093_pos, 1
-    substr rx1093_tgt, rx1093_tgt, rx1093_off
-  rx1093_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1097_done
-    goto rxscan1097_scan
-  rxscan1097_loop:
-    ($P10) = rx1093_cur."from"()
-    inc $P10
-    set rx1093_pos, $P10
-    ge rx1093_pos, rx1093_eos, rxscan1097_done
-  rxscan1097_scan:
-    set_addr $I10, rxscan1097_loop
-    rx1093_cur."!mark_push"(0, rx1093_pos, $I10)
-  rxscan1097_done:
-.annotate "line", 494
+.sub "infix:sym<<>"  :subid("279_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1098_tgt
+    .local int rx1098_pos
+    .local int rx1098_off
+    .local int rx1098_eos
+    .local int rx1098_rep
+    .local pmc rx1098_cur
+    (rx1098_cur, rx1098_pos, rx1098_tgt) = self."!cursor_start"()
+    rx1098_cur."!cursor_debug"("START ", "infix:sym<<>")
+    .lex unicode:"$\x{a2}", rx1098_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1098_eos, rx1098_tgt
+    set rx1098_off, 0
+    lt rx1098_pos, 2, rx1098_start
+    sub rx1098_off, rx1098_pos, 1
+    substr rx1098_tgt, rx1098_tgt, rx1098_off
+  rx1098_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1102_done
+    goto rxscan1102_scan
+  rxscan1102_loop:
+    ($P10) = rx1098_cur."from"()
+    inc $P10
+    set rx1098_pos, $P10
+    ge rx1098_pos, rx1098_eos, rxscan1102_done
+  rxscan1102_scan:
+    set_addr $I10, rxscan1102_loop
+    rx1098_cur."!mark_push"(0, rx1098_pos, $I10)
+  rxscan1102_done:
+.annotate "line", 495
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1098_fail
-    rx1093_cur."!mark_push"(0, rx1093_pos, $I10)
+    set_addr $I10, rxcap_1103_fail
+    rx1098_cur."!mark_push"(0, rx1098_pos, $I10)
   # rx literal  "<"
-    add $I11, rx1093_pos, 1
-    gt $I11, rx1093_eos, rx1093_fail
-    sub $I11, rx1093_pos, rx1093_off
-    substr $S10, rx1093_tgt, $I11, 1
-    ne $S10, "<", rx1093_fail
-    add rx1093_pos, 1
-    set_addr $I10, rxcap_1098_fail
-    ($I12, $I11) = rx1093_cur."!mark_peek"($I10)
-    rx1093_cur."!cursor_pos"($I11)
-    ($P10) = rx1093_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1093_pos, "")
-    rx1093_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1098_pos, 1
+    gt $I11, rx1098_eos, rx1098_fail
+    sub $I11, rx1098_pos, rx1098_off
+    substr $S10, rx1098_tgt, $I11, 1
+    ne $S10, "<", rx1098_fail
+    add rx1098_pos, 1
+    set_addr $I10, rxcap_1103_fail
+    ($I12, $I11) = rx1098_cur."!mark_peek"($I10)
+    rx1098_cur."!cursor_pos"($I11)
+    ($P10) = rx1098_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1098_pos, "")
+    rx1098_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1098_done
-  rxcap_1098_fail:
-    goto rx1093_fail
-  rxcap_1098_done:
+    goto rxcap_1103_done
+  rxcap_1103_fail:
+    goto rx1098_fail
+  rxcap_1103_done:
   # rx subrule "O" subtype=capture negate=
-    rx1093_cur."!cursor_pos"(rx1093_pos)
-    $P10 = rx1093_cur."O"("%relational, :pirop<islt INn>")
-    unless $P10, rx1093_fail
-    rx1093_cur."!mark_push"(0, -1, 0, $P10)
+    rx1098_cur."!cursor_pos"(rx1098_pos)
+    $P10 = rx1098_cur."O"("%relational, :pirop<islt INn>")
+    unless $P10, rx1098_fail
+    rx1098_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1093_pos = $P10."pos"()
+    rx1098_pos = $P10."pos"()
   # rx pass
-    rx1093_cur."!cursor_pass"(rx1093_pos, "infix:sym<<>")
-    rx1093_cur."!cursor_debug"("PASS  ", "infix:sym<<>", " at pos=", rx1093_pos)
-    .return (rx1093_cur)
-  rx1093_fail:
-.annotate "line", 421
-    (rx1093_rep, rx1093_pos, $I10, $P10) = rx1093_cur."!mark_fail"(0)
-    lt rx1093_pos, -1, rx1093_done
-    eq rx1093_pos, -1, rx1093_fail
-    jump $I10
-  rx1093_done:
-    rx1093_cur."!cursor_fail"()
-    rx1093_cur."!cursor_debug"("FAIL  ", "infix:sym<<>")
-    .return (rx1093_cur)
+    rx1098_cur."!cursor_pass"(rx1098_pos, "infix:sym<<>")
+    rx1098_cur."!cursor_debug"("PASS  ", "infix:sym<<>", " at pos=", rx1098_pos)
+    .return (rx1098_cur)
+  rx1098_fail:
+.annotate "line", 422
+    (rx1098_rep, rx1098_pos, $I10, $P10) = rx1098_cur."!mark_fail"(0)
+    lt rx1098_pos, -1, rx1098_done
+    eq rx1098_pos, -1, rx1098_fail
+    jump $I10
+  rx1098_done:
+    rx1098_cur."!cursor_fail"()
+    rx1098_cur."!cursor_debug"("FAIL  ", "infix:sym<<>")
+    .return (rx1098_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<>"  :subid("278_1271336396.90314") :method
-.annotate "line", 421
-    $P1095 = self."!PREFIX__!subrule"("O", "<")
-    new $P1096, "ResizablePMCArray"
-    push $P1096, $P1095
-    .return ($P1096)
+.sub "!PREFIX__infix:sym<<>"  :subid("280_1271948667.92136") :method
+.annotate "line", 422
+    $P1100 = self."!PREFIX__!subrule"("O", "<")
+    new $P1101, "ResizablePMCArray"
+    push $P1101, $P1100
+    .return ($P1101)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>>"  :subid("279_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1100_tgt
-    .local int rx1100_pos
-    .local int rx1100_off
-    .local int rx1100_eos
-    .local int rx1100_rep
-    .local pmc rx1100_cur
-    (rx1100_cur, rx1100_pos, rx1100_tgt) = self."!cursor_start"()
-    rx1100_cur."!cursor_debug"("START ", "infix:sym<>>")
-    .lex unicode:"$\x{a2}", rx1100_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1100_eos, rx1100_tgt
-    set rx1100_off, 0
-    lt rx1100_pos, 2, rx1100_start
-    sub rx1100_off, rx1100_pos, 1
-    substr rx1100_tgt, rx1100_tgt, rx1100_off
-  rx1100_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1104_done
-    goto rxscan1104_scan
-  rxscan1104_loop:
-    ($P10) = rx1100_cur."from"()
-    inc $P10
-    set rx1100_pos, $P10
-    ge rx1100_pos, rx1100_eos, rxscan1104_done
-  rxscan1104_scan:
-    set_addr $I10, rxscan1104_loop
-    rx1100_cur."!mark_push"(0, rx1100_pos, $I10)
-  rxscan1104_done:
-.annotate "line", 495
+.sub "infix:sym<>>"  :subid("281_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1105_tgt
+    .local int rx1105_pos
+    .local int rx1105_off
+    .local int rx1105_eos
+    .local int rx1105_rep
+    .local pmc rx1105_cur
+    (rx1105_cur, rx1105_pos, rx1105_tgt) = self."!cursor_start"()
+    rx1105_cur."!cursor_debug"("START ", "infix:sym<>>")
+    .lex unicode:"$\x{a2}", rx1105_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1105_eos, rx1105_tgt
+    set rx1105_off, 0
+    lt rx1105_pos, 2, rx1105_start
+    sub rx1105_off, rx1105_pos, 1
+    substr rx1105_tgt, rx1105_tgt, rx1105_off
+  rx1105_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1109_done
+    goto rxscan1109_scan
+  rxscan1109_loop:
+    ($P10) = rx1105_cur."from"()
+    inc $P10
+    set rx1105_pos, $P10
+    ge rx1105_pos, rx1105_eos, rxscan1109_done
+  rxscan1109_scan:
+    set_addr $I10, rxscan1109_loop
+    rx1105_cur."!mark_push"(0, rx1105_pos, $I10)
+  rxscan1109_done:
+.annotate "line", 496
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1105_fail
-    rx1100_cur."!mark_push"(0, rx1100_pos, $I10)
+    set_addr $I10, rxcap_1110_fail
+    rx1105_cur."!mark_push"(0, rx1105_pos, $I10)
   # rx literal  ">"
-    add $I11, rx1100_pos, 1
-    gt $I11, rx1100_eos, rx1100_fail
-    sub $I11, rx1100_pos, rx1100_off
-    substr $S10, rx1100_tgt, $I11, 1
-    ne $S10, ">", rx1100_fail
-    add rx1100_pos, 1
-    set_addr $I10, rxcap_1105_fail
-    ($I12, $I11) = rx1100_cur."!mark_peek"($I10)
-    rx1100_cur."!cursor_pos"($I11)
-    ($P10) = rx1100_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1100_pos, "")
-    rx1100_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1105_pos, 1
+    gt $I11, rx1105_eos, rx1105_fail
+    sub $I11, rx1105_pos, rx1105_off
+    substr $S10, rx1105_tgt, $I11, 1
+    ne $S10, ">", rx1105_fail
+    add rx1105_pos, 1
+    set_addr $I10, rxcap_1110_fail
+    ($I12, $I11) = rx1105_cur."!mark_peek"($I10)
+    rx1105_cur."!cursor_pos"($I11)
+    ($P10) = rx1105_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1105_pos, "")
+    rx1105_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1105_done
-  rxcap_1105_fail:
-    goto rx1100_fail
-  rxcap_1105_done:
+    goto rxcap_1110_done
+  rxcap_1110_fail:
+    goto rx1105_fail
+  rxcap_1110_done:
   # rx subrule "O" subtype=capture negate=
-    rx1100_cur."!cursor_pos"(rx1100_pos)
-    $P10 = rx1100_cur."O"("%relational, :pirop<isgt INn>")
-    unless $P10, rx1100_fail
-    rx1100_cur."!mark_push"(0, -1, 0, $P10)
+    rx1105_cur."!cursor_pos"(rx1105_pos)
+    $P10 = rx1105_cur."O"("%relational, :pirop<isgt INn>")
+    unless $P10, rx1105_fail
+    rx1105_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1100_pos = $P10."pos"()
+    rx1105_pos = $P10."pos"()
   # rx pass
-    rx1100_cur."!cursor_pass"(rx1100_pos, "infix:sym<>>")
-    rx1100_cur."!cursor_debug"("PASS  ", "infix:sym<>>", " at pos=", rx1100_pos)
-    .return (rx1100_cur)
-  rx1100_fail:
-.annotate "line", 421
-    (rx1100_rep, rx1100_pos, $I10, $P10) = rx1100_cur."!mark_fail"(0)
-    lt rx1100_pos, -1, rx1100_done
-    eq rx1100_pos, -1, rx1100_fail
-    jump $I10
-  rx1100_done:
-    rx1100_cur."!cursor_fail"()
-    rx1100_cur."!cursor_debug"("FAIL  ", "infix:sym<>>")
-    .return (rx1100_cur)
+    rx1105_cur."!cursor_pass"(rx1105_pos, "infix:sym<>>")
+    rx1105_cur."!cursor_debug"("PASS  ", "infix:sym<>>", " at pos=", rx1105_pos)
+    .return (rx1105_cur)
+  rx1105_fail:
+.annotate "line", 422
+    (rx1105_rep, rx1105_pos, $I10, $P10) = rx1105_cur."!mark_fail"(0)
+    lt rx1105_pos, -1, rx1105_done
+    eq rx1105_pos, -1, rx1105_fail
+    jump $I10
+  rx1105_done:
+    rx1105_cur."!cursor_fail"()
+    rx1105_cur."!cursor_debug"("FAIL  ", "infix:sym<>>")
+    .return (rx1105_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>>"  :subid("280_1271336396.90314") :method
-.annotate "line", 421
-    $P1102 = self."!PREFIX__!subrule"("O", ">")
-    new $P1103, "ResizablePMCArray"
-    push $P1103, $P1102
-    .return ($P1103)
+.sub "!PREFIX__infix:sym<>>"  :subid("282_1271948667.92136") :method
+.annotate "line", 422
+    $P1107 = self."!PREFIX__!subrule"("O", ">")
+    new $P1108, "ResizablePMCArray"
+    push $P1108, $P1107
+    .return ($P1108)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<eq>"  :subid("281_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1107_tgt
-    .local int rx1107_pos
-    .local int rx1107_off
-    .local int rx1107_eos
-    .local int rx1107_rep
-    .local pmc rx1107_cur
-    (rx1107_cur, rx1107_pos, rx1107_tgt) = self."!cursor_start"()
-    rx1107_cur."!cursor_debug"("START ", "infix:sym<eq>")
-    .lex unicode:"$\x{a2}", rx1107_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1107_eos, rx1107_tgt
-    set rx1107_off, 0
-    lt rx1107_pos, 2, rx1107_start
-    sub rx1107_off, rx1107_pos, 1
-    substr rx1107_tgt, rx1107_tgt, rx1107_off
-  rx1107_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1111_done
-    goto rxscan1111_scan
-  rxscan1111_loop:
-    ($P10) = rx1107_cur."from"()
-    inc $P10
-    set rx1107_pos, $P10
-    ge rx1107_pos, rx1107_eos, rxscan1111_done
-  rxscan1111_scan:
-    set_addr $I10, rxscan1111_loop
-    rx1107_cur."!mark_push"(0, rx1107_pos, $I10)
-  rxscan1111_done:
-.annotate "line", 496
+.sub "infix:sym<eq>"  :subid("283_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1112_tgt
+    .local int rx1112_pos
+    .local int rx1112_off
+    .local int rx1112_eos
+    .local int rx1112_rep
+    .local pmc rx1112_cur
+    (rx1112_cur, rx1112_pos, rx1112_tgt) = self."!cursor_start"()
+    rx1112_cur."!cursor_debug"("START ", "infix:sym<eq>")
+    .lex unicode:"$\x{a2}", rx1112_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1112_eos, rx1112_tgt
+    set rx1112_off, 0
+    lt rx1112_pos, 2, rx1112_start
+    sub rx1112_off, rx1112_pos, 1
+    substr rx1112_tgt, rx1112_tgt, rx1112_off
+  rx1112_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1116_done
+    goto rxscan1116_scan
+  rxscan1116_loop:
+    ($P10) = rx1112_cur."from"()
+    inc $P10
+    set rx1112_pos, $P10
+    ge rx1112_pos, rx1112_eos, rxscan1116_done
+  rxscan1116_scan:
+    set_addr $I10, rxscan1116_loop
+    rx1112_cur."!mark_push"(0, rx1112_pos, $I10)
+  rxscan1116_done:
+.annotate "line", 497
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1112_fail
-    rx1107_cur."!mark_push"(0, rx1107_pos, $I10)
+    set_addr $I10, rxcap_1117_fail
+    rx1112_cur."!mark_push"(0, rx1112_pos, $I10)
   # rx literal  "eq"
-    add $I11, rx1107_pos, 2
-    gt $I11, rx1107_eos, rx1107_fail
-    sub $I11, rx1107_pos, rx1107_off
-    substr $S10, rx1107_tgt, $I11, 2
-    ne $S10, "eq", rx1107_fail
-    add rx1107_pos, 2
-    set_addr $I10, rxcap_1112_fail
-    ($I12, $I11) = rx1107_cur."!mark_peek"($I10)
-    rx1107_cur."!cursor_pos"($I11)
-    ($P10) = rx1107_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1107_pos, "")
-    rx1107_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1112_pos, 2
+    gt $I11, rx1112_eos, rx1112_fail
+    sub $I11, rx1112_pos, rx1112_off
+    substr $S10, rx1112_tgt, $I11, 2
+    ne $S10, "eq", rx1112_fail
+    add rx1112_pos, 2
+    set_addr $I10, rxcap_1117_fail
+    ($I12, $I11) = rx1112_cur."!mark_peek"($I10)
+    rx1112_cur."!cursor_pos"($I11)
+    ($P10) = rx1112_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1112_pos, "")
+    rx1112_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1112_done
-  rxcap_1112_fail:
-    goto rx1107_fail
-  rxcap_1112_done:
+    goto rxcap_1117_done
+  rxcap_1117_fail:
+    goto rx1112_fail
+  rxcap_1117_done:
   # rx subrule "O" subtype=capture negate=
-    rx1107_cur."!cursor_pos"(rx1107_pos)
-    $P10 = rx1107_cur."O"("%relational, :pirop<iseq ISs>")
-    unless $P10, rx1107_fail
-    rx1107_cur."!mark_push"(0, -1, 0, $P10)
+    rx1112_cur."!cursor_pos"(rx1112_pos)
+    $P10 = rx1112_cur."O"("%relational, :pirop<iseq ISs>")
+    unless $P10, rx1112_fail
+    rx1112_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1107_pos = $P10."pos"()
+    rx1112_pos = $P10."pos"()
   # rx pass
-    rx1107_cur."!cursor_pass"(rx1107_pos, "infix:sym<eq>")
-    rx1107_cur."!cursor_debug"("PASS  ", "infix:sym<eq>", " at pos=", rx1107_pos)
-    .return (rx1107_cur)
-  rx1107_fail:
-.annotate "line", 421
-    (rx1107_rep, rx1107_pos, $I10, $P10) = rx1107_cur."!mark_fail"(0)
-    lt rx1107_pos, -1, rx1107_done
-    eq rx1107_pos, -1, rx1107_fail
-    jump $I10
-  rx1107_done:
-    rx1107_cur."!cursor_fail"()
-    rx1107_cur."!cursor_debug"("FAIL  ", "infix:sym<eq>")
-    .return (rx1107_cur)
+    rx1112_cur."!cursor_pass"(rx1112_pos, "infix:sym<eq>")
+    rx1112_cur."!cursor_debug"("PASS  ", "infix:sym<eq>", " at pos=", rx1112_pos)
+    .return (rx1112_cur)
+  rx1112_fail:
+.annotate "line", 422
+    (rx1112_rep, rx1112_pos, $I10, $P10) = rx1112_cur."!mark_fail"(0)
+    lt rx1112_pos, -1, rx1112_done
+    eq rx1112_pos, -1, rx1112_fail
+    jump $I10
+  rx1112_done:
+    rx1112_cur."!cursor_fail"()
+    rx1112_cur."!cursor_debug"("FAIL  ", "infix:sym<eq>")
+    .return (rx1112_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<eq>"  :subid("282_1271336396.90314") :method
-.annotate "line", 421
-    $P1109 = self."!PREFIX__!subrule"("O", "eq")
-    new $P1110, "ResizablePMCArray"
-    push $P1110, $P1109
-    .return ($P1110)
+.sub "!PREFIX__infix:sym<eq>"  :subid("284_1271948667.92136") :method
+.annotate "line", 422
+    $P1114 = self."!PREFIX__!subrule"("O", "eq")
+    new $P1115, "ResizablePMCArray"
+    push $P1115, $P1114
+    .return ($P1115)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ne>"  :subid("283_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1114_tgt
-    .local int rx1114_pos
-    .local int rx1114_off
-    .local int rx1114_eos
-    .local int rx1114_rep
-    .local pmc rx1114_cur
-    (rx1114_cur, rx1114_pos, rx1114_tgt) = self."!cursor_start"()
-    rx1114_cur."!cursor_debug"("START ", "infix:sym<ne>")
-    .lex unicode:"$\x{a2}", rx1114_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1114_eos, rx1114_tgt
-    set rx1114_off, 0
-    lt rx1114_pos, 2, rx1114_start
-    sub rx1114_off, rx1114_pos, 1
-    substr rx1114_tgt, rx1114_tgt, rx1114_off
-  rx1114_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1118_done
-    goto rxscan1118_scan
-  rxscan1118_loop:
-    ($P10) = rx1114_cur."from"()
-    inc $P10
-    set rx1114_pos, $P10
-    ge rx1114_pos, rx1114_eos, rxscan1118_done
-  rxscan1118_scan:
-    set_addr $I10, rxscan1118_loop
-    rx1114_cur."!mark_push"(0, rx1114_pos, $I10)
-  rxscan1118_done:
-.annotate "line", 497
+.sub "infix:sym<ne>"  :subid("285_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1119_tgt
+    .local int rx1119_pos
+    .local int rx1119_off
+    .local int rx1119_eos
+    .local int rx1119_rep
+    .local pmc rx1119_cur
+    (rx1119_cur, rx1119_pos, rx1119_tgt) = self."!cursor_start"()
+    rx1119_cur."!cursor_debug"("START ", "infix:sym<ne>")
+    .lex unicode:"$\x{a2}", rx1119_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1119_eos, rx1119_tgt
+    set rx1119_off, 0
+    lt rx1119_pos, 2, rx1119_start
+    sub rx1119_off, rx1119_pos, 1
+    substr rx1119_tgt, rx1119_tgt, rx1119_off
+  rx1119_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1123_done
+    goto rxscan1123_scan
+  rxscan1123_loop:
+    ($P10) = rx1119_cur."from"()
+    inc $P10
+    set rx1119_pos, $P10
+    ge rx1119_pos, rx1119_eos, rxscan1123_done
+  rxscan1123_scan:
+    set_addr $I10, rxscan1123_loop
+    rx1119_cur."!mark_push"(0, rx1119_pos, $I10)
+  rxscan1123_done:
+.annotate "line", 498
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1119_fail
-    rx1114_cur."!mark_push"(0, rx1114_pos, $I10)
+    set_addr $I10, rxcap_1124_fail
+    rx1119_cur."!mark_push"(0, rx1119_pos, $I10)
   # rx literal  "ne"
-    add $I11, rx1114_pos, 2
-    gt $I11, rx1114_eos, rx1114_fail
-    sub $I11, rx1114_pos, rx1114_off
-    substr $S10, rx1114_tgt, $I11, 2
-    ne $S10, "ne", rx1114_fail
-    add rx1114_pos, 2
-    set_addr $I10, rxcap_1119_fail
-    ($I12, $I11) = rx1114_cur."!mark_peek"($I10)
-    rx1114_cur."!cursor_pos"($I11)
-    ($P10) = rx1114_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1114_pos, "")
-    rx1114_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1119_pos, 2
+    gt $I11, rx1119_eos, rx1119_fail
+    sub $I11, rx1119_pos, rx1119_off
+    substr $S10, rx1119_tgt, $I11, 2
+    ne $S10, "ne", rx1119_fail
+    add rx1119_pos, 2
+    set_addr $I10, rxcap_1124_fail
+    ($I12, $I11) = rx1119_cur."!mark_peek"($I10)
+    rx1119_cur."!cursor_pos"($I11)
+    ($P10) = rx1119_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1119_pos, "")
+    rx1119_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1119_done
-  rxcap_1119_fail:
-    goto rx1114_fail
-  rxcap_1119_done:
+    goto rxcap_1124_done
+  rxcap_1124_fail:
+    goto rx1119_fail
+  rxcap_1124_done:
   # rx subrule "O" subtype=capture negate=
-    rx1114_cur."!cursor_pos"(rx1114_pos)
-    $P10 = rx1114_cur."O"("%relational, :pirop<isne ISs>")
-    unless $P10, rx1114_fail
-    rx1114_cur."!mark_push"(0, -1, 0, $P10)
+    rx1119_cur."!cursor_pos"(rx1119_pos)
+    $P10 = rx1119_cur."O"("%relational, :pirop<isne ISs>")
+    unless $P10, rx1119_fail
+    rx1119_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1114_pos = $P10."pos"()
+    rx1119_pos = $P10."pos"()
   # rx pass
-    rx1114_cur."!cursor_pass"(rx1114_pos, "infix:sym<ne>")
-    rx1114_cur."!cursor_debug"("PASS  ", "infix:sym<ne>", " at pos=", rx1114_pos)
-    .return (rx1114_cur)
-  rx1114_fail:
-.annotate "line", 421
-    (rx1114_rep, rx1114_pos, $I10, $P10) = rx1114_cur."!mark_fail"(0)
-    lt rx1114_pos, -1, rx1114_done
-    eq rx1114_pos, -1, rx1114_fail
-    jump $I10
-  rx1114_done:
-    rx1114_cur."!cursor_fail"()
-    rx1114_cur."!cursor_debug"("FAIL  ", "infix:sym<ne>")
-    .return (rx1114_cur)
+    rx1119_cur."!cursor_pass"(rx1119_pos, "infix:sym<ne>")
+    rx1119_cur."!cursor_debug"("PASS  ", "infix:sym<ne>", " at pos=", rx1119_pos)
+    .return (rx1119_cur)
+  rx1119_fail:
+.annotate "line", 422
+    (rx1119_rep, rx1119_pos, $I10, $P10) = rx1119_cur."!mark_fail"(0)
+    lt rx1119_pos, -1, rx1119_done
+    eq rx1119_pos, -1, rx1119_fail
+    jump $I10
+  rx1119_done:
+    rx1119_cur."!cursor_fail"()
+    rx1119_cur."!cursor_debug"("FAIL  ", "infix:sym<ne>")
+    .return (rx1119_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ne>"  :subid("284_1271336396.90314") :method
-.annotate "line", 421
-    $P1116 = self."!PREFIX__!subrule"("O", "ne")
-    new $P1117, "ResizablePMCArray"
-    push $P1117, $P1116
-    .return ($P1117)
+.sub "!PREFIX__infix:sym<ne>"  :subid("286_1271948667.92136") :method
+.annotate "line", 422
+    $P1121 = self."!PREFIX__!subrule"("O", "ne")
+    new $P1122, "ResizablePMCArray"
+    push $P1122, $P1121
+    .return ($P1122)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<le>"  :subid("285_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1121_tgt
-    .local int rx1121_pos
-    .local int rx1121_off
-    .local int rx1121_eos
-    .local int rx1121_rep
-    .local pmc rx1121_cur
-    (rx1121_cur, rx1121_pos, rx1121_tgt) = self."!cursor_start"()
-    rx1121_cur."!cursor_debug"("START ", "infix:sym<le>")
-    .lex unicode:"$\x{a2}", rx1121_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1121_eos, rx1121_tgt
-    set rx1121_off, 0
-    lt rx1121_pos, 2, rx1121_start
-    sub rx1121_off, rx1121_pos, 1
-    substr rx1121_tgt, rx1121_tgt, rx1121_off
-  rx1121_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1125_done
-    goto rxscan1125_scan
-  rxscan1125_loop:
-    ($P10) = rx1121_cur."from"()
-    inc $P10
-    set rx1121_pos, $P10
-    ge rx1121_pos, rx1121_eos, rxscan1125_done
-  rxscan1125_scan:
-    set_addr $I10, rxscan1125_loop
-    rx1121_cur."!mark_push"(0, rx1121_pos, $I10)
-  rxscan1125_done:
-.annotate "line", 498
+.sub "infix:sym<le>"  :subid("287_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1126_tgt
+    .local int rx1126_pos
+    .local int rx1126_off
+    .local int rx1126_eos
+    .local int rx1126_rep
+    .local pmc rx1126_cur
+    (rx1126_cur, rx1126_pos, rx1126_tgt) = self."!cursor_start"()
+    rx1126_cur."!cursor_debug"("START ", "infix:sym<le>")
+    .lex unicode:"$\x{a2}", rx1126_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1126_eos, rx1126_tgt
+    set rx1126_off, 0
+    lt rx1126_pos, 2, rx1126_start
+    sub rx1126_off, rx1126_pos, 1
+    substr rx1126_tgt, rx1126_tgt, rx1126_off
+  rx1126_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1130_done
+    goto rxscan1130_scan
+  rxscan1130_loop:
+    ($P10) = rx1126_cur."from"()
+    inc $P10
+    set rx1126_pos, $P10
+    ge rx1126_pos, rx1126_eos, rxscan1130_done
+  rxscan1130_scan:
+    set_addr $I10, rxscan1130_loop
+    rx1126_cur."!mark_push"(0, rx1126_pos, $I10)
+  rxscan1130_done:
+.annotate "line", 499
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1126_fail
-    rx1121_cur."!mark_push"(0, rx1121_pos, $I10)
+    set_addr $I10, rxcap_1131_fail
+    rx1126_cur."!mark_push"(0, rx1126_pos, $I10)
   # rx literal  "le"
-    add $I11, rx1121_pos, 2
-    gt $I11, rx1121_eos, rx1121_fail
-    sub $I11, rx1121_pos, rx1121_off
-    substr $S10, rx1121_tgt, $I11, 2
-    ne $S10, "le", rx1121_fail
-    add rx1121_pos, 2
-    set_addr $I10, rxcap_1126_fail
-    ($I12, $I11) = rx1121_cur."!mark_peek"($I10)
-    rx1121_cur."!cursor_pos"($I11)
-    ($P10) = rx1121_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1121_pos, "")
-    rx1121_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1126_pos, 2
+    gt $I11, rx1126_eos, rx1126_fail
+    sub $I11, rx1126_pos, rx1126_off
+    substr $S10, rx1126_tgt, $I11, 2
+    ne $S10, "le", rx1126_fail
+    add rx1126_pos, 2
+    set_addr $I10, rxcap_1131_fail
+    ($I12, $I11) = rx1126_cur."!mark_peek"($I10)
+    rx1126_cur."!cursor_pos"($I11)
+    ($P10) = rx1126_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1126_pos, "")
+    rx1126_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1126_done
-  rxcap_1126_fail:
-    goto rx1121_fail
-  rxcap_1126_done:
+    goto rxcap_1131_done
+  rxcap_1131_fail:
+    goto rx1126_fail
+  rxcap_1131_done:
   # rx subrule "O" subtype=capture negate=
-    rx1121_cur."!cursor_pos"(rx1121_pos)
-    $P10 = rx1121_cur."O"("%relational, :pirop<isle ISs>")
-    unless $P10, rx1121_fail
-    rx1121_cur."!mark_push"(0, -1, 0, $P10)
+    rx1126_cur."!cursor_pos"(rx1126_pos)
+    $P10 = rx1126_cur."O"("%relational, :pirop<isle ISs>")
+    unless $P10, rx1126_fail
+    rx1126_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1121_pos = $P10."pos"()
+    rx1126_pos = $P10."pos"()
   # rx pass
-    rx1121_cur."!cursor_pass"(rx1121_pos, "infix:sym<le>")
-    rx1121_cur."!cursor_debug"("PASS  ", "infix:sym<le>", " at pos=", rx1121_pos)
-    .return (rx1121_cur)
-  rx1121_fail:
-.annotate "line", 421
-    (rx1121_rep, rx1121_pos, $I10, $P10) = rx1121_cur."!mark_fail"(0)
-    lt rx1121_pos, -1, rx1121_done
-    eq rx1121_pos, -1, rx1121_fail
-    jump $I10
-  rx1121_done:
-    rx1121_cur."!cursor_fail"()
-    rx1121_cur."!cursor_debug"("FAIL  ", "infix:sym<le>")
-    .return (rx1121_cur)
+    rx1126_cur."!cursor_pass"(rx1126_pos, "infix:sym<le>")
+    rx1126_cur."!cursor_debug"("PASS  ", "infix:sym<le>", " at pos=", rx1126_pos)
+    .return (rx1126_cur)
+  rx1126_fail:
+.annotate "line", 422
+    (rx1126_rep, rx1126_pos, $I10, $P10) = rx1126_cur."!mark_fail"(0)
+    lt rx1126_pos, -1, rx1126_done
+    eq rx1126_pos, -1, rx1126_fail
+    jump $I10
+  rx1126_done:
+    rx1126_cur."!cursor_fail"()
+    rx1126_cur."!cursor_debug"("FAIL  ", "infix:sym<le>")
+    .return (rx1126_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<le>"  :subid("286_1271336396.90314") :method
-.annotate "line", 421
-    $P1123 = self."!PREFIX__!subrule"("O", "le")
-    new $P1124, "ResizablePMCArray"
-    push $P1124, $P1123
-    .return ($P1124)
+.sub "!PREFIX__infix:sym<le>"  :subid("288_1271948667.92136") :method
+.annotate "line", 422
+    $P1128 = self."!PREFIX__!subrule"("O", "le")
+    new $P1129, "ResizablePMCArray"
+    push $P1129, $P1128
+    .return ($P1129)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ge>"  :subid("287_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1128_tgt
-    .local int rx1128_pos
-    .local int rx1128_off
-    .local int rx1128_eos
-    .local int rx1128_rep
-    .local pmc rx1128_cur
-    (rx1128_cur, rx1128_pos, rx1128_tgt) = self."!cursor_start"()
-    rx1128_cur."!cursor_debug"("START ", "infix:sym<ge>")
-    .lex unicode:"$\x{a2}", rx1128_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1128_eos, rx1128_tgt
-    set rx1128_off, 0
-    lt rx1128_pos, 2, rx1128_start
-    sub rx1128_off, rx1128_pos, 1
-    substr rx1128_tgt, rx1128_tgt, rx1128_off
-  rx1128_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1132_done
-    goto rxscan1132_scan
-  rxscan1132_loop:
-    ($P10) = rx1128_cur."from"()
-    inc $P10
-    set rx1128_pos, $P10
-    ge rx1128_pos, rx1128_eos, rxscan1132_done
-  rxscan1132_scan:
-    set_addr $I10, rxscan1132_loop
-    rx1128_cur."!mark_push"(0, rx1128_pos, $I10)
-  rxscan1132_done:
-.annotate "line", 499
+.sub "infix:sym<ge>"  :subid("289_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1133_tgt
+    .local int rx1133_pos
+    .local int rx1133_off
+    .local int rx1133_eos
+    .local int rx1133_rep
+    .local pmc rx1133_cur
+    (rx1133_cur, rx1133_pos, rx1133_tgt) = self."!cursor_start"()
+    rx1133_cur."!cursor_debug"("START ", "infix:sym<ge>")
+    .lex unicode:"$\x{a2}", rx1133_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1133_eos, rx1133_tgt
+    set rx1133_off, 0
+    lt rx1133_pos, 2, rx1133_start
+    sub rx1133_off, rx1133_pos, 1
+    substr rx1133_tgt, rx1133_tgt, rx1133_off
+  rx1133_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1137_done
+    goto rxscan1137_scan
+  rxscan1137_loop:
+    ($P10) = rx1133_cur."from"()
+    inc $P10
+    set rx1133_pos, $P10
+    ge rx1133_pos, rx1133_eos, rxscan1137_done
+  rxscan1137_scan:
+    set_addr $I10, rxscan1137_loop
+    rx1133_cur."!mark_push"(0, rx1133_pos, $I10)
+  rxscan1137_done:
+.annotate "line", 500
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1133_fail
-    rx1128_cur."!mark_push"(0, rx1128_pos, $I10)
+    set_addr $I10, rxcap_1138_fail
+    rx1133_cur."!mark_push"(0, rx1133_pos, $I10)
   # rx literal  "ge"
-    add $I11, rx1128_pos, 2
-    gt $I11, rx1128_eos, rx1128_fail
-    sub $I11, rx1128_pos, rx1128_off
-    substr $S10, rx1128_tgt, $I11, 2
-    ne $S10, "ge", rx1128_fail
-    add rx1128_pos, 2
-    set_addr $I10, rxcap_1133_fail
-    ($I12, $I11) = rx1128_cur."!mark_peek"($I10)
-    rx1128_cur."!cursor_pos"($I11)
-    ($P10) = rx1128_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1128_pos, "")
-    rx1128_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1133_pos, 2
+    gt $I11, rx1133_eos, rx1133_fail
+    sub $I11, rx1133_pos, rx1133_off
+    substr $S10, rx1133_tgt, $I11, 2
+    ne $S10, "ge", rx1133_fail
+    add rx1133_pos, 2
+    set_addr $I10, rxcap_1138_fail
+    ($I12, $I11) = rx1133_cur."!mark_peek"($I10)
+    rx1133_cur."!cursor_pos"($I11)
+    ($P10) = rx1133_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1133_pos, "")
+    rx1133_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1133_done
-  rxcap_1133_fail:
-    goto rx1128_fail
-  rxcap_1133_done:
+    goto rxcap_1138_done
+  rxcap_1138_fail:
+    goto rx1133_fail
+  rxcap_1138_done:
   # rx subrule "O" subtype=capture negate=
-    rx1128_cur."!cursor_pos"(rx1128_pos)
-    $P10 = rx1128_cur."O"("%relational, :pirop<isge ISs>")
-    unless $P10, rx1128_fail
-    rx1128_cur."!mark_push"(0, -1, 0, $P10)
+    rx1133_cur."!cursor_pos"(rx1133_pos)
+    $P10 = rx1133_cur."O"("%relational, :pirop<isge ISs>")
+    unless $P10, rx1133_fail
+    rx1133_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1128_pos = $P10."pos"()
+    rx1133_pos = $P10."pos"()
   # rx pass
-    rx1128_cur."!cursor_pass"(rx1128_pos, "infix:sym<ge>")
-    rx1128_cur."!cursor_debug"("PASS  ", "infix:sym<ge>", " at pos=", rx1128_pos)
-    .return (rx1128_cur)
-  rx1128_fail:
-.annotate "line", 421
-    (rx1128_rep, rx1128_pos, $I10, $P10) = rx1128_cur."!mark_fail"(0)
-    lt rx1128_pos, -1, rx1128_done
-    eq rx1128_pos, -1, rx1128_fail
-    jump $I10
-  rx1128_done:
-    rx1128_cur."!cursor_fail"()
-    rx1128_cur."!cursor_debug"("FAIL  ", "infix:sym<ge>")
-    .return (rx1128_cur)
+    rx1133_cur."!cursor_pass"(rx1133_pos, "infix:sym<ge>")
+    rx1133_cur."!cursor_debug"("PASS  ", "infix:sym<ge>", " at pos=", rx1133_pos)
+    .return (rx1133_cur)
+  rx1133_fail:
+.annotate "line", 422
+    (rx1133_rep, rx1133_pos, $I10, $P10) = rx1133_cur."!mark_fail"(0)
+    lt rx1133_pos, -1, rx1133_done
+    eq rx1133_pos, -1, rx1133_fail
+    jump $I10
+  rx1133_done:
+    rx1133_cur."!cursor_fail"()
+    rx1133_cur."!cursor_debug"("FAIL  ", "infix:sym<ge>")
+    .return (rx1133_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ge>"  :subid("288_1271336396.90314") :method
-.annotate "line", 421
-    $P1130 = self."!PREFIX__!subrule"("O", "ge")
-    new $P1131, "ResizablePMCArray"
-    push $P1131, $P1130
-    .return ($P1131)
+.sub "!PREFIX__infix:sym<ge>"  :subid("290_1271948667.92136") :method
+.annotate "line", 422
+    $P1135 = self."!PREFIX__!subrule"("O", "ge")
+    new $P1136, "ResizablePMCArray"
+    push $P1136, $P1135
+    .return ($P1136)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<lt>"  :subid("289_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1135_tgt
-    .local int rx1135_pos
-    .local int rx1135_off
-    .local int rx1135_eos
-    .local int rx1135_rep
-    .local pmc rx1135_cur
-    (rx1135_cur, rx1135_pos, rx1135_tgt) = self."!cursor_start"()
-    rx1135_cur."!cursor_debug"("START ", "infix:sym<lt>")
-    .lex unicode:"$\x{a2}", rx1135_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1135_eos, rx1135_tgt
-    set rx1135_off, 0
-    lt rx1135_pos, 2, rx1135_start
-    sub rx1135_off, rx1135_pos, 1
-    substr rx1135_tgt, rx1135_tgt, rx1135_off
-  rx1135_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1139_done
-    goto rxscan1139_scan
-  rxscan1139_loop:
-    ($P10) = rx1135_cur."from"()
-    inc $P10
-    set rx1135_pos, $P10
-    ge rx1135_pos, rx1135_eos, rxscan1139_done
-  rxscan1139_scan:
-    set_addr $I10, rxscan1139_loop
-    rx1135_cur."!mark_push"(0, rx1135_pos, $I10)
-  rxscan1139_done:
-.annotate "line", 500
+.sub "infix:sym<lt>"  :subid("291_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1140_tgt
+    .local int rx1140_pos
+    .local int rx1140_off
+    .local int rx1140_eos
+    .local int rx1140_rep
+    .local pmc rx1140_cur
+    (rx1140_cur, rx1140_pos, rx1140_tgt) = self."!cursor_start"()
+    rx1140_cur."!cursor_debug"("START ", "infix:sym<lt>")
+    .lex unicode:"$\x{a2}", rx1140_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1140_eos, rx1140_tgt
+    set rx1140_off, 0
+    lt rx1140_pos, 2, rx1140_start
+    sub rx1140_off, rx1140_pos, 1
+    substr rx1140_tgt, rx1140_tgt, rx1140_off
+  rx1140_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1144_done
+    goto rxscan1144_scan
+  rxscan1144_loop:
+    ($P10) = rx1140_cur."from"()
+    inc $P10
+    set rx1140_pos, $P10
+    ge rx1140_pos, rx1140_eos, rxscan1144_done
+  rxscan1144_scan:
+    set_addr $I10, rxscan1144_loop
+    rx1140_cur."!mark_push"(0, rx1140_pos, $I10)
+  rxscan1144_done:
+.annotate "line", 501
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1140_fail
-    rx1135_cur."!mark_push"(0, rx1135_pos, $I10)
+    set_addr $I10, rxcap_1145_fail
+    rx1140_cur."!mark_push"(0, rx1140_pos, $I10)
   # rx literal  "lt"
-    add $I11, rx1135_pos, 2
-    gt $I11, rx1135_eos, rx1135_fail
-    sub $I11, rx1135_pos, rx1135_off
-    substr $S10, rx1135_tgt, $I11, 2
-    ne $S10, "lt", rx1135_fail
-    add rx1135_pos, 2
-    set_addr $I10, rxcap_1140_fail
-    ($I12, $I11) = rx1135_cur."!mark_peek"($I10)
-    rx1135_cur."!cursor_pos"($I11)
-    ($P10) = rx1135_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1135_pos, "")
-    rx1135_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1140_pos, 2
+    gt $I11, rx1140_eos, rx1140_fail
+    sub $I11, rx1140_pos, rx1140_off
+    substr $S10, rx1140_tgt, $I11, 2
+    ne $S10, "lt", rx1140_fail
+    add rx1140_pos, 2
+    set_addr $I10, rxcap_1145_fail
+    ($I12, $I11) = rx1140_cur."!mark_peek"($I10)
+    rx1140_cur."!cursor_pos"($I11)
+    ($P10) = rx1140_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1140_pos, "")
+    rx1140_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1140_done
-  rxcap_1140_fail:
-    goto rx1135_fail
-  rxcap_1140_done:
+    goto rxcap_1145_done
+  rxcap_1145_fail:
+    goto rx1140_fail
+  rxcap_1145_done:
   # rx subrule "O" subtype=capture negate=
-    rx1135_cur."!cursor_pos"(rx1135_pos)
-    $P10 = rx1135_cur."O"("%relational, :pirop<islt ISs>")
-    unless $P10, rx1135_fail
-    rx1135_cur."!mark_push"(0, -1, 0, $P10)
+    rx1140_cur."!cursor_pos"(rx1140_pos)
+    $P10 = rx1140_cur."O"("%relational, :pirop<islt ISs>")
+    unless $P10, rx1140_fail
+    rx1140_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1135_pos = $P10."pos"()
+    rx1140_pos = $P10."pos"()
   # rx pass
-    rx1135_cur."!cursor_pass"(rx1135_pos, "infix:sym<lt>")
-    rx1135_cur."!cursor_debug"("PASS  ", "infix:sym<lt>", " at pos=", rx1135_pos)
-    .return (rx1135_cur)
-  rx1135_fail:
-.annotate "line", 421
-    (rx1135_rep, rx1135_pos, $I10, $P10) = rx1135_cur."!mark_fail"(0)
-    lt rx1135_pos, -1, rx1135_done
-    eq rx1135_pos, -1, rx1135_fail
-    jump $I10
-  rx1135_done:
-    rx1135_cur."!cursor_fail"()
-    rx1135_cur."!cursor_debug"("FAIL  ", "infix:sym<lt>")
-    .return (rx1135_cur)
+    rx1140_cur."!cursor_pass"(rx1140_pos, "infix:sym<lt>")
+    rx1140_cur."!cursor_debug"("PASS  ", "infix:sym<lt>", " at pos=", rx1140_pos)
+    .return (rx1140_cur)
+  rx1140_fail:
+.annotate "line", 422
+    (rx1140_rep, rx1140_pos, $I10, $P10) = rx1140_cur."!mark_fail"(0)
+    lt rx1140_pos, -1, rx1140_done
+    eq rx1140_pos, -1, rx1140_fail
+    jump $I10
+  rx1140_done:
+    rx1140_cur."!cursor_fail"()
+    rx1140_cur."!cursor_debug"("FAIL  ", "infix:sym<lt>")
+    .return (rx1140_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<lt>"  :subid("290_1271336396.90314") :method
-.annotate "line", 421
-    $P1137 = self."!PREFIX__!subrule"("O", "lt")
-    new $P1138, "ResizablePMCArray"
-    push $P1138, $P1137
-    .return ($P1138)
+.sub "!PREFIX__infix:sym<lt>"  :subid("292_1271948667.92136") :method
+.annotate "line", 422
+    $P1142 = self."!PREFIX__!subrule"("O", "lt")
+    new $P1143, "ResizablePMCArray"
+    push $P1143, $P1142
+    .return ($P1143)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<gt>"  :subid("291_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1142_tgt
-    .local int rx1142_pos
-    .local int rx1142_off
-    .local int rx1142_eos
-    .local int rx1142_rep
-    .local pmc rx1142_cur
-    (rx1142_cur, rx1142_pos, rx1142_tgt) = self."!cursor_start"()
-    rx1142_cur."!cursor_debug"("START ", "infix:sym<gt>")
-    .lex unicode:"$\x{a2}", rx1142_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1142_eos, rx1142_tgt
-    set rx1142_off, 0
-    lt rx1142_pos, 2, rx1142_start
-    sub rx1142_off, rx1142_pos, 1
-    substr rx1142_tgt, rx1142_tgt, rx1142_off
-  rx1142_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1146_done
-    goto rxscan1146_scan
-  rxscan1146_loop:
-    ($P10) = rx1142_cur."from"()
-    inc $P10
-    set rx1142_pos, $P10
-    ge rx1142_pos, rx1142_eos, rxscan1146_done
-  rxscan1146_scan:
-    set_addr $I10, rxscan1146_loop
-    rx1142_cur."!mark_push"(0, rx1142_pos, $I10)
-  rxscan1146_done:
-.annotate "line", 501
+.sub "infix:sym<gt>"  :subid("293_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1147_tgt
+    .local int rx1147_pos
+    .local int rx1147_off
+    .local int rx1147_eos
+    .local int rx1147_rep
+    .local pmc rx1147_cur
+    (rx1147_cur, rx1147_pos, rx1147_tgt) = self."!cursor_start"()
+    rx1147_cur."!cursor_debug"("START ", "infix:sym<gt>")
+    .lex unicode:"$\x{a2}", rx1147_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1147_eos, rx1147_tgt
+    set rx1147_off, 0
+    lt rx1147_pos, 2, rx1147_start
+    sub rx1147_off, rx1147_pos, 1
+    substr rx1147_tgt, rx1147_tgt, rx1147_off
+  rx1147_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1151_done
+    goto rxscan1151_scan
+  rxscan1151_loop:
+    ($P10) = rx1147_cur."from"()
+    inc $P10
+    set rx1147_pos, $P10
+    ge rx1147_pos, rx1147_eos, rxscan1151_done
+  rxscan1151_scan:
+    set_addr $I10, rxscan1151_loop
+    rx1147_cur."!mark_push"(0, rx1147_pos, $I10)
+  rxscan1151_done:
+.annotate "line", 502
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1147_fail
-    rx1142_cur."!mark_push"(0, rx1142_pos, $I10)
+    set_addr $I10, rxcap_1152_fail
+    rx1147_cur."!mark_push"(0, rx1147_pos, $I10)
   # rx literal  "gt"
-    add $I11, rx1142_pos, 2
-    gt $I11, rx1142_eos, rx1142_fail
-    sub $I11, rx1142_pos, rx1142_off
-    substr $S10, rx1142_tgt, $I11, 2
-    ne $S10, "gt", rx1142_fail
-    add rx1142_pos, 2
-    set_addr $I10, rxcap_1147_fail
-    ($I12, $I11) = rx1142_cur."!mark_peek"($I10)
-    rx1142_cur."!cursor_pos"($I11)
-    ($P10) = rx1142_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1142_pos, "")
-    rx1142_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1147_pos, 2
+    gt $I11, rx1147_eos, rx1147_fail
+    sub $I11, rx1147_pos, rx1147_off
+    substr $S10, rx1147_tgt, $I11, 2
+    ne $S10, "gt", rx1147_fail
+    add rx1147_pos, 2
+    set_addr $I10, rxcap_1152_fail
+    ($I12, $I11) = rx1147_cur."!mark_peek"($I10)
+    rx1147_cur."!cursor_pos"($I11)
+    ($P10) = rx1147_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1147_pos, "")
+    rx1147_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1147_done
-  rxcap_1147_fail:
-    goto rx1142_fail
-  rxcap_1147_done:
+    goto rxcap_1152_done
+  rxcap_1152_fail:
+    goto rx1147_fail
+  rxcap_1152_done:
   # rx subrule "O" subtype=capture negate=
-    rx1142_cur."!cursor_pos"(rx1142_pos)
-    $P10 = rx1142_cur."O"("%relational, :pirop<isgt ISs>")
-    unless $P10, rx1142_fail
-    rx1142_cur."!mark_push"(0, -1, 0, $P10)
+    rx1147_cur."!cursor_pos"(rx1147_pos)
+    $P10 = rx1147_cur."O"("%relational, :pirop<isgt ISs>")
+    unless $P10, rx1147_fail
+    rx1147_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1142_pos = $P10."pos"()
+    rx1147_pos = $P10."pos"()
   # rx pass
-    rx1142_cur."!cursor_pass"(rx1142_pos, "infix:sym<gt>")
-    rx1142_cur."!cursor_debug"("PASS  ", "infix:sym<gt>", " at pos=", rx1142_pos)
-    .return (rx1142_cur)
-  rx1142_fail:
-.annotate "line", 421
-    (rx1142_rep, rx1142_pos, $I10, $P10) = rx1142_cur."!mark_fail"(0)
-    lt rx1142_pos, -1, rx1142_done
-    eq rx1142_pos, -1, rx1142_fail
-    jump $I10
-  rx1142_done:
-    rx1142_cur."!cursor_fail"()
-    rx1142_cur."!cursor_debug"("FAIL  ", "infix:sym<gt>")
-    .return (rx1142_cur)
+    rx1147_cur."!cursor_pass"(rx1147_pos, "infix:sym<gt>")
+    rx1147_cur."!cursor_debug"("PASS  ", "infix:sym<gt>", " at pos=", rx1147_pos)
+    .return (rx1147_cur)
+  rx1147_fail:
+.annotate "line", 422
+    (rx1147_rep, rx1147_pos, $I10, $P10) = rx1147_cur."!mark_fail"(0)
+    lt rx1147_pos, -1, rx1147_done
+    eq rx1147_pos, -1, rx1147_fail
+    jump $I10
+  rx1147_done:
+    rx1147_cur."!cursor_fail"()
+    rx1147_cur."!cursor_debug"("FAIL  ", "infix:sym<gt>")
+    .return (rx1147_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<gt>"  :subid("292_1271336396.90314") :method
-.annotate "line", 421
-    $P1144 = self."!PREFIX__!subrule"("O", "gt")
-    new $P1145, "ResizablePMCArray"
-    push $P1145, $P1144
-    .return ($P1145)
+.sub "!PREFIX__infix:sym<gt>"  :subid("294_1271948667.92136") :method
+.annotate "line", 422
+    $P1149 = self."!PREFIX__!subrule"("O", "gt")
+    new $P1150, "ResizablePMCArray"
+    push $P1150, $P1149
+    .return ($P1150)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=:=>"  :subid("293_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1149_tgt
-    .local int rx1149_pos
-    .local int rx1149_off
-    .local int rx1149_eos
-    .local int rx1149_rep
-    .local pmc rx1149_cur
-    (rx1149_cur, rx1149_pos, rx1149_tgt) = self."!cursor_start"()
-    rx1149_cur."!cursor_debug"("START ", "infix:sym<=:=>")
-    .lex unicode:"$\x{a2}", rx1149_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1149_eos, rx1149_tgt
-    set rx1149_off, 0
-    lt rx1149_pos, 2, rx1149_start
-    sub rx1149_off, rx1149_pos, 1
-    substr rx1149_tgt, rx1149_tgt, rx1149_off
-  rx1149_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1153_done
-    goto rxscan1153_scan
-  rxscan1153_loop:
-    ($P10) = rx1149_cur."from"()
-    inc $P10
-    set rx1149_pos, $P10
-    ge rx1149_pos, rx1149_eos, rxscan1153_done
-  rxscan1153_scan:
-    set_addr $I10, rxscan1153_loop
-    rx1149_cur."!mark_push"(0, rx1149_pos, $I10)
-  rxscan1153_done:
-.annotate "line", 502
+.sub "infix:sym<=:=>"  :subid("295_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1154_tgt
+    .local int rx1154_pos
+    .local int rx1154_off
+    .local int rx1154_eos
+    .local int rx1154_rep
+    .local pmc rx1154_cur
+    (rx1154_cur, rx1154_pos, rx1154_tgt) = self."!cursor_start"()
+    rx1154_cur."!cursor_debug"("START ", "infix:sym<=:=>")
+    .lex unicode:"$\x{a2}", rx1154_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1154_eos, rx1154_tgt
+    set rx1154_off, 0
+    lt rx1154_pos, 2, rx1154_start
+    sub rx1154_off, rx1154_pos, 1
+    substr rx1154_tgt, rx1154_tgt, rx1154_off
+  rx1154_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1158_done
+    goto rxscan1158_scan
+  rxscan1158_loop:
+    ($P10) = rx1154_cur."from"()
+    inc $P10
+    set rx1154_pos, $P10
+    ge rx1154_pos, rx1154_eos, rxscan1158_done
+  rxscan1158_scan:
+    set_addr $I10, rxscan1158_loop
+    rx1154_cur."!mark_push"(0, rx1154_pos, $I10)
+  rxscan1158_done:
+.annotate "line", 503
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1154_fail
-    rx1149_cur."!mark_push"(0, rx1149_pos, $I10)
+    set_addr $I10, rxcap_1159_fail
+    rx1154_cur."!mark_push"(0, rx1154_pos, $I10)
   # rx literal  "=:="
-    add $I11, rx1149_pos, 3
-    gt $I11, rx1149_eos, rx1149_fail
-    sub $I11, rx1149_pos, rx1149_off
-    substr $S10, rx1149_tgt, $I11, 3
-    ne $S10, "=:=", rx1149_fail
-    add rx1149_pos, 3
-    set_addr $I10, rxcap_1154_fail
-    ($I12, $I11) = rx1149_cur."!mark_peek"($I10)
-    rx1149_cur."!cursor_pos"($I11)
-    ($P10) = rx1149_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1149_pos, "")
-    rx1149_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1154_pos, 3
+    gt $I11, rx1154_eos, rx1154_fail
+    sub $I11, rx1154_pos, rx1154_off
+    substr $S10, rx1154_tgt, $I11, 3
+    ne $S10, "=:=", rx1154_fail
+    add rx1154_pos, 3
+    set_addr $I10, rxcap_1159_fail
+    ($I12, $I11) = rx1154_cur."!mark_peek"($I10)
+    rx1154_cur."!cursor_pos"($I11)
+    ($P10) = rx1154_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1154_pos, "")
+    rx1154_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1154_done
-  rxcap_1154_fail:
-    goto rx1149_fail
-  rxcap_1154_done:
+    goto rxcap_1159_done
+  rxcap_1159_fail:
+    goto rx1154_fail
+  rxcap_1159_done:
   # rx subrule "O" subtype=capture negate=
-    rx1149_cur."!cursor_pos"(rx1149_pos)
-    $P10 = rx1149_cur."O"("%relational, :pirop<issame>")
-    unless $P10, rx1149_fail
-    rx1149_cur."!mark_push"(0, -1, 0, $P10)
+    rx1154_cur."!cursor_pos"(rx1154_pos)
+    $P10 = rx1154_cur."O"("%relational, :pirop<issame>")
+    unless $P10, rx1154_fail
+    rx1154_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1149_pos = $P10."pos"()
+    rx1154_pos = $P10."pos"()
   # rx pass
-    rx1149_cur."!cursor_pass"(rx1149_pos, "infix:sym<=:=>")
-    rx1149_cur."!cursor_debug"("PASS  ", "infix:sym<=:=>", " at pos=", rx1149_pos)
-    .return (rx1149_cur)
-  rx1149_fail:
-.annotate "line", 421
-    (rx1149_rep, rx1149_pos, $I10, $P10) = rx1149_cur."!mark_fail"(0)
-    lt rx1149_pos, -1, rx1149_done
-    eq rx1149_pos, -1, rx1149_fail
-    jump $I10
-  rx1149_done:
-    rx1149_cur."!cursor_fail"()
-    rx1149_cur."!cursor_debug"("FAIL  ", "infix:sym<=:=>")
-    .return (rx1149_cur)
+    rx1154_cur."!cursor_pass"(rx1154_pos, "infix:sym<=:=>")
+    rx1154_cur."!cursor_debug"("PASS  ", "infix:sym<=:=>", " at pos=", rx1154_pos)
+    .return (rx1154_cur)
+  rx1154_fail:
+.annotate "line", 422
+    (rx1154_rep, rx1154_pos, $I10, $P10) = rx1154_cur."!mark_fail"(0)
+    lt rx1154_pos, -1, rx1154_done
+    eq rx1154_pos, -1, rx1154_fail
+    jump $I10
+  rx1154_done:
+    rx1154_cur."!cursor_fail"()
+    rx1154_cur."!cursor_debug"("FAIL  ", "infix:sym<=:=>")
+    .return (rx1154_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=:=>"  :subid("294_1271336396.90314") :method
-.annotate "line", 421
-    $P1151 = self."!PREFIX__!subrule"("O", "=:=")
-    new $P1152, "ResizablePMCArray"
-    push $P1152, $P1151
-    .return ($P1152)
+.sub "!PREFIX__infix:sym<=:=>"  :subid("296_1271948667.92136") :method
+.annotate "line", 422
+    $P1156 = self."!PREFIX__!subrule"("O", "=:=")
+    new $P1157, "ResizablePMCArray"
+    push $P1157, $P1156
+    .return ($P1157)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~~>"  :subid("295_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1156_tgt
-    .local int rx1156_pos
-    .local int rx1156_off
-    .local int rx1156_eos
-    .local int rx1156_rep
-    .local pmc rx1156_cur
-    (rx1156_cur, rx1156_pos, rx1156_tgt) = self."!cursor_start"()
-    rx1156_cur."!cursor_debug"("START ", "infix:sym<~~>")
-    .lex unicode:"$\x{a2}", rx1156_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1156_eos, rx1156_tgt
-    set rx1156_off, 0
-    lt rx1156_pos, 2, rx1156_start
-    sub rx1156_off, rx1156_pos, 1
-    substr rx1156_tgt, rx1156_tgt, rx1156_off
-  rx1156_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1160_done
-    goto rxscan1160_scan
-  rxscan1160_loop:
-    ($P10) = rx1156_cur."from"()
-    inc $P10
-    set rx1156_pos, $P10
-    ge rx1156_pos, rx1156_eos, rxscan1160_done
-  rxscan1160_scan:
-    set_addr $I10, rxscan1160_loop
-    rx1156_cur."!mark_push"(0, rx1156_pos, $I10)
-  rxscan1160_done:
-.annotate "line", 503
+.sub "infix:sym<~~>"  :subid("297_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1161_tgt
+    .local int rx1161_pos
+    .local int rx1161_off
+    .local int rx1161_eos
+    .local int rx1161_rep
+    .local pmc rx1161_cur
+    (rx1161_cur, rx1161_pos, rx1161_tgt) = self."!cursor_start"()
+    rx1161_cur."!cursor_debug"("START ", "infix:sym<~~>")
+    .lex unicode:"$\x{a2}", rx1161_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1161_eos, rx1161_tgt
+    set rx1161_off, 0
+    lt rx1161_pos, 2, rx1161_start
+    sub rx1161_off, rx1161_pos, 1
+    substr rx1161_tgt, rx1161_tgt, rx1161_off
+  rx1161_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1165_done
+    goto rxscan1165_scan
+  rxscan1165_loop:
+    ($P10) = rx1161_cur."from"()
+    inc $P10
+    set rx1161_pos, $P10
+    ge rx1161_pos, rx1161_eos, rxscan1165_done
+  rxscan1165_scan:
+    set_addr $I10, rxscan1165_loop
+    rx1161_cur."!mark_push"(0, rx1161_pos, $I10)
+  rxscan1165_done:
+.annotate "line", 504
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1161_fail
-    rx1156_cur."!mark_push"(0, rx1156_pos, $I10)
+    set_addr $I10, rxcap_1166_fail
+    rx1161_cur."!mark_push"(0, rx1161_pos, $I10)
   # rx literal  "~~"
-    add $I11, rx1156_pos, 2
-    gt $I11, rx1156_eos, rx1156_fail
-    sub $I11, rx1156_pos, rx1156_off
-    substr $S10, rx1156_tgt, $I11, 2
-    ne $S10, "~~", rx1156_fail
-    add rx1156_pos, 2
-    set_addr $I10, rxcap_1161_fail
-    ($I12, $I11) = rx1156_cur."!mark_peek"($I10)
-    rx1156_cur."!cursor_pos"($I11)
-    ($P10) = rx1156_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1156_pos, "")
-    rx1156_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1161_pos, 2
+    gt $I11, rx1161_eos, rx1161_fail
+    sub $I11, rx1161_pos, rx1161_off
+    substr $S10, rx1161_tgt, $I11, 2
+    ne $S10, "~~", rx1161_fail
+    add rx1161_pos, 2
+    set_addr $I10, rxcap_1166_fail
+    ($I12, $I11) = rx1161_cur."!mark_peek"($I10)
+    rx1161_cur."!cursor_pos"($I11)
+    ($P10) = rx1161_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1161_pos, "")
+    rx1161_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1161_done
-  rxcap_1161_fail:
-    goto rx1156_fail
-  rxcap_1161_done:
+    goto rxcap_1166_done
+  rxcap_1166_fail:
+    goto rx1161_fail
+  rxcap_1166_done:
   # rx subrule "O" subtype=capture negate=
-    rx1156_cur."!cursor_pos"(rx1156_pos)
-    $P10 = rx1156_cur."O"("%relational, :reducecheck<smartmatch>")
-    unless $P10, rx1156_fail
-    rx1156_cur."!mark_push"(0, -1, 0, $P10)
+    rx1161_cur."!cursor_pos"(rx1161_pos)
+    $P10 = rx1161_cur."O"("%relational, :reducecheck<smartmatch>")
+    unless $P10, rx1161_fail
+    rx1161_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1156_pos = $P10."pos"()
+    rx1161_pos = $P10."pos"()
   # rx pass
-    rx1156_cur."!cursor_pass"(rx1156_pos, "infix:sym<~~>")
-    rx1156_cur."!cursor_debug"("PASS  ", "infix:sym<~~>", " at pos=", rx1156_pos)
-    .return (rx1156_cur)
-  rx1156_fail:
-.annotate "line", 421
-    (rx1156_rep, rx1156_pos, $I10, $P10) = rx1156_cur."!mark_fail"(0)
-    lt rx1156_pos, -1, rx1156_done
-    eq rx1156_pos, -1, rx1156_fail
-    jump $I10
-  rx1156_done:
-    rx1156_cur."!cursor_fail"()
-    rx1156_cur."!cursor_debug"("FAIL  ", "infix:sym<~~>")
-    .return (rx1156_cur)
+    rx1161_cur."!cursor_pass"(rx1161_pos, "infix:sym<~~>")
+    rx1161_cur."!cursor_debug"("PASS  ", "infix:sym<~~>", " at pos=", rx1161_pos)
+    .return (rx1161_cur)
+  rx1161_fail:
+.annotate "line", 422
+    (rx1161_rep, rx1161_pos, $I10, $P10) = rx1161_cur."!mark_fail"(0)
+    lt rx1161_pos, -1, rx1161_done
+    eq rx1161_pos, -1, rx1161_fail
+    jump $I10
+  rx1161_done:
+    rx1161_cur."!cursor_fail"()
+    rx1161_cur."!cursor_debug"("FAIL  ", "infix:sym<~~>")
+    .return (rx1161_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~~>"  :subid("296_1271336396.90314") :method
-.annotate "line", 421
-    $P1158 = self."!PREFIX__!subrule"("O", "~~")
-    new $P1159, "ResizablePMCArray"
-    push $P1159, $P1158
-    .return ($P1159)
+.sub "!PREFIX__infix:sym<~~>"  :subid("298_1271948667.92136") :method
+.annotate "line", 422
+    $P1163 = self."!PREFIX__!subrule"("O", "~~")
+    new $P1164, "ResizablePMCArray"
+    push $P1164, $P1163
+    .return ($P1164)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<&&>"  :subid("297_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1163_tgt
-    .local int rx1163_pos
-    .local int rx1163_off
-    .local int rx1163_eos
-    .local int rx1163_rep
-    .local pmc rx1163_cur
-    (rx1163_cur, rx1163_pos, rx1163_tgt) = self."!cursor_start"()
-    rx1163_cur."!cursor_debug"("START ", "infix:sym<&&>")
-    .lex unicode:"$\x{a2}", rx1163_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1163_eos, rx1163_tgt
-    set rx1163_off, 0
-    lt rx1163_pos, 2, rx1163_start
-    sub rx1163_off, rx1163_pos, 1
-    substr rx1163_tgt, rx1163_tgt, rx1163_off
-  rx1163_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1167_done
-    goto rxscan1167_scan
-  rxscan1167_loop:
-    ($P10) = rx1163_cur."from"()
-    inc $P10
-    set rx1163_pos, $P10
-    ge rx1163_pos, rx1163_eos, rxscan1167_done
-  rxscan1167_scan:
-    set_addr $I10, rxscan1167_loop
-    rx1163_cur."!mark_push"(0, rx1163_pos, $I10)
-  rxscan1167_done:
-.annotate "line", 505
+.sub "infix:sym<&&>"  :subid("299_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1168_tgt
+    .local int rx1168_pos
+    .local int rx1168_off
+    .local int rx1168_eos
+    .local int rx1168_rep
+    .local pmc rx1168_cur
+    (rx1168_cur, rx1168_pos, rx1168_tgt) = self."!cursor_start"()
+    rx1168_cur."!cursor_debug"("START ", "infix:sym<&&>")
+    .lex unicode:"$\x{a2}", rx1168_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1168_eos, rx1168_tgt
+    set rx1168_off, 0
+    lt rx1168_pos, 2, rx1168_start
+    sub rx1168_off, rx1168_pos, 1
+    substr rx1168_tgt, rx1168_tgt, rx1168_off
+  rx1168_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1172_done
+    goto rxscan1172_scan
+  rxscan1172_loop:
+    ($P10) = rx1168_cur."from"()
+    inc $P10
+    set rx1168_pos, $P10
+    ge rx1168_pos, rx1168_eos, rxscan1172_done
+  rxscan1172_scan:
+    set_addr $I10, rxscan1172_loop
+    rx1168_cur."!mark_push"(0, rx1168_pos, $I10)
+  rxscan1172_done:
+.annotate "line", 506
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1168_fail
-    rx1163_cur."!mark_push"(0, rx1163_pos, $I10)
+    set_addr $I10, rxcap_1173_fail
+    rx1168_cur."!mark_push"(0, rx1168_pos, $I10)
   # rx literal  "&&"
-    add $I11, rx1163_pos, 2
-    gt $I11, rx1163_eos, rx1163_fail
-    sub $I11, rx1163_pos, rx1163_off
-    substr $S10, rx1163_tgt, $I11, 2
-    ne $S10, "&&", rx1163_fail
-    add rx1163_pos, 2
-    set_addr $I10, rxcap_1168_fail
-    ($I12, $I11) = rx1163_cur."!mark_peek"($I10)
-    rx1163_cur."!cursor_pos"($I11)
-    ($P10) = rx1163_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1163_pos, "")
-    rx1163_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1168_pos, 2
+    gt $I11, rx1168_eos, rx1168_fail
+    sub $I11, rx1168_pos, rx1168_off
+    substr $S10, rx1168_tgt, $I11, 2
+    ne $S10, "&&", rx1168_fail
+    add rx1168_pos, 2
+    set_addr $I10, rxcap_1173_fail
+    ($I12, $I11) = rx1168_cur."!mark_peek"($I10)
+    rx1168_cur."!cursor_pos"($I11)
+    ($P10) = rx1168_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1168_pos, "")
+    rx1168_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1168_done
-  rxcap_1168_fail:
-    goto rx1163_fail
-  rxcap_1168_done:
+    goto rxcap_1173_done
+  rxcap_1173_fail:
+    goto rx1168_fail
+  rxcap_1173_done:
   # rx subrule "O" subtype=capture negate=
-    rx1163_cur."!cursor_pos"(rx1163_pos)
-    $P10 = rx1163_cur."O"("%tight_and, :pasttype<if>")
-    unless $P10, rx1163_fail
-    rx1163_cur."!mark_push"(0, -1, 0, $P10)
+    rx1168_cur."!cursor_pos"(rx1168_pos)
+    $P10 = rx1168_cur."O"("%tight_and, :pasttype<if>")
+    unless $P10, rx1168_fail
+    rx1168_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1163_pos = $P10."pos"()
+    rx1168_pos = $P10."pos"()
   # rx pass
-    rx1163_cur."!cursor_pass"(rx1163_pos, "infix:sym<&&>")
-    rx1163_cur."!cursor_debug"("PASS  ", "infix:sym<&&>", " at pos=", rx1163_pos)
-    .return (rx1163_cur)
-  rx1163_fail:
-.annotate "line", 421
-    (rx1163_rep, rx1163_pos, $I10, $P10) = rx1163_cur."!mark_fail"(0)
-    lt rx1163_pos, -1, rx1163_done
-    eq rx1163_pos, -1, rx1163_fail
-    jump $I10
-  rx1163_done:
-    rx1163_cur."!cursor_fail"()
-    rx1163_cur."!cursor_debug"("FAIL  ", "infix:sym<&&>")
-    .return (rx1163_cur)
+    rx1168_cur."!cursor_pass"(rx1168_pos, "infix:sym<&&>")
+    rx1168_cur."!cursor_debug"("PASS  ", "infix:sym<&&>", " at pos=", rx1168_pos)
+    .return (rx1168_cur)
+  rx1168_fail:
+.annotate "line", 422
+    (rx1168_rep, rx1168_pos, $I10, $P10) = rx1168_cur."!mark_fail"(0)
+    lt rx1168_pos, -1, rx1168_done
+    eq rx1168_pos, -1, rx1168_fail
+    jump $I10
+  rx1168_done:
+    rx1168_cur."!cursor_fail"()
+    rx1168_cur."!cursor_debug"("FAIL  ", "infix:sym<&&>")
+    .return (rx1168_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<&&>"  :subid("298_1271336396.90314") :method
-.annotate "line", 421
-    $P1165 = self."!PREFIX__!subrule"("O", "&&")
-    new $P1166, "ResizablePMCArray"
-    push $P1166, $P1165
-    .return ($P1166)
+.sub "!PREFIX__infix:sym<&&>"  :subid("300_1271948667.92136") :method
+.annotate "line", 422
+    $P1170 = self."!PREFIX__!subrule"("O", "&&")
+    new $P1171, "ResizablePMCArray"
+    push $P1171, $P1170
+    .return ($P1171)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<||>"  :subid("299_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1170_tgt
-    .local int rx1170_pos
-    .local int rx1170_off
-    .local int rx1170_eos
-    .local int rx1170_rep
-    .local pmc rx1170_cur
-    (rx1170_cur, rx1170_pos, rx1170_tgt) = self."!cursor_start"()
-    rx1170_cur."!cursor_debug"("START ", "infix:sym<||>")
-    .lex unicode:"$\x{a2}", rx1170_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1170_eos, rx1170_tgt
-    set rx1170_off, 0
-    lt rx1170_pos, 2, rx1170_start
-    sub rx1170_off, rx1170_pos, 1
-    substr rx1170_tgt, rx1170_tgt, rx1170_off
-  rx1170_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1174_done
-    goto rxscan1174_scan
-  rxscan1174_loop:
-    ($P10) = rx1170_cur."from"()
-    inc $P10
-    set rx1170_pos, $P10
-    ge rx1170_pos, rx1170_eos, rxscan1174_done
-  rxscan1174_scan:
-    set_addr $I10, rxscan1174_loop
-    rx1170_cur."!mark_push"(0, rx1170_pos, $I10)
-  rxscan1174_done:
-.annotate "line", 507
+.sub "infix:sym<||>"  :subid("301_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1175_tgt
+    .local int rx1175_pos
+    .local int rx1175_off
+    .local int rx1175_eos
+    .local int rx1175_rep
+    .local pmc rx1175_cur
+    (rx1175_cur, rx1175_pos, rx1175_tgt) = self."!cursor_start"()
+    rx1175_cur."!cursor_debug"("START ", "infix:sym<||>")
+    .lex unicode:"$\x{a2}", rx1175_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1175_eos, rx1175_tgt
+    set rx1175_off, 0
+    lt rx1175_pos, 2, rx1175_start
+    sub rx1175_off, rx1175_pos, 1
+    substr rx1175_tgt, rx1175_tgt, rx1175_off
+  rx1175_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1179_done
+    goto rxscan1179_scan
+  rxscan1179_loop:
+    ($P10) = rx1175_cur."from"()
+    inc $P10
+    set rx1175_pos, $P10
+    ge rx1175_pos, rx1175_eos, rxscan1179_done
+  rxscan1179_scan:
+    set_addr $I10, rxscan1179_loop
+    rx1175_cur."!mark_push"(0, rx1175_pos, $I10)
+  rxscan1179_done:
+.annotate "line", 508
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1175_fail
-    rx1170_cur."!mark_push"(0, rx1170_pos, $I10)
+    set_addr $I10, rxcap_1180_fail
+    rx1175_cur."!mark_push"(0, rx1175_pos, $I10)
   # rx literal  "||"
-    add $I11, rx1170_pos, 2
-    gt $I11, rx1170_eos, rx1170_fail
-    sub $I11, rx1170_pos, rx1170_off
-    substr $S10, rx1170_tgt, $I11, 2
-    ne $S10, "||", rx1170_fail
-    add rx1170_pos, 2
-    set_addr $I10, rxcap_1175_fail
-    ($I12, $I11) = rx1170_cur."!mark_peek"($I10)
-    rx1170_cur."!cursor_pos"($I11)
-    ($P10) = rx1170_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1170_pos, "")
-    rx1170_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1175_pos, 2
+    gt $I11, rx1175_eos, rx1175_fail
+    sub $I11, rx1175_pos, rx1175_off
+    substr $S10, rx1175_tgt, $I11, 2
+    ne $S10, "||", rx1175_fail
+    add rx1175_pos, 2
+    set_addr $I10, rxcap_1180_fail
+    ($I12, $I11) = rx1175_cur."!mark_peek"($I10)
+    rx1175_cur."!cursor_pos"($I11)
+    ($P10) = rx1175_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1175_pos, "")
+    rx1175_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1175_done
-  rxcap_1175_fail:
-    goto rx1170_fail
-  rxcap_1175_done:
+    goto rxcap_1180_done
+  rxcap_1180_fail:
+    goto rx1175_fail
+  rxcap_1180_done:
   # rx subrule "O" subtype=capture negate=
-    rx1170_cur."!cursor_pos"(rx1170_pos)
-    $P10 = rx1170_cur."O"("%tight_or, :pasttype<unless>")
-    unless $P10, rx1170_fail
-    rx1170_cur."!mark_push"(0, -1, 0, $P10)
+    rx1175_cur."!cursor_pos"(rx1175_pos)
+    $P10 = rx1175_cur."O"("%tight_or, :pasttype<unless>")
+    unless $P10, rx1175_fail
+    rx1175_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1170_pos = $P10."pos"()
+    rx1175_pos = $P10."pos"()
   # rx pass
-    rx1170_cur."!cursor_pass"(rx1170_pos, "infix:sym<||>")
-    rx1170_cur."!cursor_debug"("PASS  ", "infix:sym<||>", " at pos=", rx1170_pos)
-    .return (rx1170_cur)
-  rx1170_fail:
-.annotate "line", 421
-    (rx1170_rep, rx1170_pos, $I10, $P10) = rx1170_cur."!mark_fail"(0)
-    lt rx1170_pos, -1, rx1170_done
-    eq rx1170_pos, -1, rx1170_fail
-    jump $I10
-  rx1170_done:
-    rx1170_cur."!cursor_fail"()
-    rx1170_cur."!cursor_debug"("FAIL  ", "infix:sym<||>")
-    .return (rx1170_cur)
+    rx1175_cur."!cursor_pass"(rx1175_pos, "infix:sym<||>")
+    rx1175_cur."!cursor_debug"("PASS  ", "infix:sym<||>", " at pos=", rx1175_pos)
+    .return (rx1175_cur)
+  rx1175_fail:
+.annotate "line", 422
+    (rx1175_rep, rx1175_pos, $I10, $P10) = rx1175_cur."!mark_fail"(0)
+    lt rx1175_pos, -1, rx1175_done
+    eq rx1175_pos, -1, rx1175_fail
+    jump $I10
+  rx1175_done:
+    rx1175_cur."!cursor_fail"()
+    rx1175_cur."!cursor_debug"("FAIL  ", "infix:sym<||>")
+    .return (rx1175_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<||>"  :subid("300_1271336396.90314") :method
-.annotate "line", 421
-    $P1172 = self."!PREFIX__!subrule"("O", "||")
-    new $P1173, "ResizablePMCArray"
-    push $P1173, $P1172
-    .return ($P1173)
+.sub "!PREFIX__infix:sym<||>"  :subid("302_1271948667.92136") :method
+.annotate "line", 422
+    $P1177 = self."!PREFIX__!subrule"("O", "||")
+    new $P1178, "ResizablePMCArray"
+    push $P1178, $P1177
+    .return ($P1178)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<//>"  :subid("301_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1177_tgt
-    .local int rx1177_pos
-    .local int rx1177_off
-    .local int rx1177_eos
-    .local int rx1177_rep
-    .local pmc rx1177_cur
-    (rx1177_cur, rx1177_pos, rx1177_tgt) = self."!cursor_start"()
-    rx1177_cur."!cursor_debug"("START ", "infix:sym<//>")
-    .lex unicode:"$\x{a2}", rx1177_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1177_eos, rx1177_tgt
-    set rx1177_off, 0
-    lt rx1177_pos, 2, rx1177_start
-    sub rx1177_off, rx1177_pos, 1
-    substr rx1177_tgt, rx1177_tgt, rx1177_off
-  rx1177_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1181_done
-    goto rxscan1181_scan
-  rxscan1181_loop:
-    ($P10) = rx1177_cur."from"()
-    inc $P10
-    set rx1177_pos, $P10
-    ge rx1177_pos, rx1177_eos, rxscan1181_done
-  rxscan1181_scan:
-    set_addr $I10, rxscan1181_loop
-    rx1177_cur."!mark_push"(0, rx1177_pos, $I10)
-  rxscan1181_done:
-.annotate "line", 508
+.sub "infix:sym<//>"  :subid("303_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1182_tgt
+    .local int rx1182_pos
+    .local int rx1182_off
+    .local int rx1182_eos
+    .local int rx1182_rep
+    .local pmc rx1182_cur
+    (rx1182_cur, rx1182_pos, rx1182_tgt) = self."!cursor_start"()
+    rx1182_cur."!cursor_debug"("START ", "infix:sym<//>")
+    .lex unicode:"$\x{a2}", rx1182_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1182_eos, rx1182_tgt
+    set rx1182_off, 0
+    lt rx1182_pos, 2, rx1182_start
+    sub rx1182_off, rx1182_pos, 1
+    substr rx1182_tgt, rx1182_tgt, rx1182_off
+  rx1182_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1186_done
+    goto rxscan1186_scan
+  rxscan1186_loop:
+    ($P10) = rx1182_cur."from"()
+    inc $P10
+    set rx1182_pos, $P10
+    ge rx1182_pos, rx1182_eos, rxscan1186_done
+  rxscan1186_scan:
+    set_addr $I10, rxscan1186_loop
+    rx1182_cur."!mark_push"(0, rx1182_pos, $I10)
+  rxscan1186_done:
+.annotate "line", 509
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1182_fail
-    rx1177_cur."!mark_push"(0, rx1177_pos, $I10)
+    set_addr $I10, rxcap_1187_fail
+    rx1182_cur."!mark_push"(0, rx1182_pos, $I10)
   # rx literal  "//"
-    add $I11, rx1177_pos, 2
-    gt $I11, rx1177_eos, rx1177_fail
-    sub $I11, rx1177_pos, rx1177_off
-    substr $S10, rx1177_tgt, $I11, 2
-    ne $S10, "//", rx1177_fail
-    add rx1177_pos, 2
-    set_addr $I10, rxcap_1182_fail
-    ($I12, $I11) = rx1177_cur."!mark_peek"($I10)
-    rx1177_cur."!cursor_pos"($I11)
-    ($P10) = rx1177_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1177_pos, "")
-    rx1177_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1182_pos, 2
+    gt $I11, rx1182_eos, rx1182_fail
+    sub $I11, rx1182_pos, rx1182_off
+    substr $S10, rx1182_tgt, $I11, 2
+    ne $S10, "//", rx1182_fail
+    add rx1182_pos, 2
+    set_addr $I10, rxcap_1187_fail
+    ($I12, $I11) = rx1182_cur."!mark_peek"($I10)
+    rx1182_cur."!cursor_pos"($I11)
+    ($P10) = rx1182_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1182_pos, "")
+    rx1182_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1182_done
-  rxcap_1182_fail:
-    goto rx1177_fail
-  rxcap_1182_done:
+    goto rxcap_1187_done
+  rxcap_1187_fail:
+    goto rx1182_fail
+  rxcap_1187_done:
   # rx subrule "O" subtype=capture negate=
-    rx1177_cur."!cursor_pos"(rx1177_pos)
-    $P10 = rx1177_cur."O"("%tight_or, :pasttype<def_or>")
-    unless $P10, rx1177_fail
-    rx1177_cur."!mark_push"(0, -1, 0, $P10)
+    rx1182_cur."!cursor_pos"(rx1182_pos)
+    $P10 = rx1182_cur."O"("%tight_or, :pasttype<def_or>")
+    unless $P10, rx1182_fail
+    rx1182_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1177_pos = $P10."pos"()
+    rx1182_pos = $P10."pos"()
   # rx pass
-    rx1177_cur."!cursor_pass"(rx1177_pos, "infix:sym<//>")
-    rx1177_cur."!cursor_debug"("PASS  ", "infix:sym<//>", " at pos=", rx1177_pos)
-    .return (rx1177_cur)
-  rx1177_fail:
-.annotate "line", 421
-    (rx1177_rep, rx1177_pos, $I10, $P10) = rx1177_cur."!mark_fail"(0)
-    lt rx1177_pos, -1, rx1177_done
-    eq rx1177_pos, -1, rx1177_fail
-    jump $I10
-  rx1177_done:
-    rx1177_cur."!cursor_fail"()
-    rx1177_cur."!cursor_debug"("FAIL  ", "infix:sym<//>")
-    .return (rx1177_cur)
+    rx1182_cur."!cursor_pass"(rx1182_pos, "infix:sym<//>")
+    rx1182_cur."!cursor_debug"("PASS  ", "infix:sym<//>", " at pos=", rx1182_pos)
+    .return (rx1182_cur)
+  rx1182_fail:
+.annotate "line", 422
+    (rx1182_rep, rx1182_pos, $I10, $P10) = rx1182_cur."!mark_fail"(0)
+    lt rx1182_pos, -1, rx1182_done
+    eq rx1182_pos, -1, rx1182_fail
+    jump $I10
+  rx1182_done:
+    rx1182_cur."!cursor_fail"()
+    rx1182_cur."!cursor_debug"("FAIL  ", "infix:sym<//>")
+    .return (rx1182_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<//>"  :subid("302_1271336396.90314") :method
-.annotate "line", 421
-    $P1179 = self."!PREFIX__!subrule"("O", "//")
-    new $P1180, "ResizablePMCArray"
-    push $P1180, $P1179
-    .return ($P1180)
+.sub "!PREFIX__infix:sym<//>"  :subid("304_1271948667.92136") :method
+.annotate "line", 422
+    $P1184 = self."!PREFIX__!subrule"("O", "//")
+    new $P1185, "ResizablePMCArray"
+    push $P1185, $P1184
+    .return ($P1185)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<?? !!>"  :subid("303_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1184_tgt
-    .local int rx1184_pos
-    .local int rx1184_off
-    .local int rx1184_eos
-    .local int rx1184_rep
-    .local pmc rx1184_cur
-    (rx1184_cur, rx1184_pos, rx1184_tgt) = self."!cursor_start"()
-    rx1184_cur."!cursor_debug"("START ", "infix:sym<?? !!>")
-    .lex unicode:"$\x{a2}", rx1184_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1184_eos, rx1184_tgt
-    set rx1184_off, 0
-    lt rx1184_pos, 2, rx1184_start
-    sub rx1184_off, rx1184_pos, 1
-    substr rx1184_tgt, rx1184_tgt, rx1184_off
-  rx1184_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1188_done
-    goto rxscan1188_scan
-  rxscan1188_loop:
-    ($P10) = rx1184_cur."from"()
-    inc $P10
-    set rx1184_pos, $P10
-    ge rx1184_pos, rx1184_eos, rxscan1188_done
-  rxscan1188_scan:
-    set_addr $I10, rxscan1188_loop
-    rx1184_cur."!mark_push"(0, rx1184_pos, $I10)
-  rxscan1188_done:
-.annotate "line", 511
-  # rx literal  "??"
-    add $I11, rx1184_pos, 2
-    gt $I11, rx1184_eos, rx1184_fail
-    sub $I11, rx1184_pos, rx1184_off
-    substr $S10, rx1184_tgt, $I11, 2
-    ne $S10, "??", rx1184_fail
-    add rx1184_pos, 2
+.sub "infix:sym<?? !!>"  :subid("305_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1189_tgt
+    .local int rx1189_pos
+    .local int rx1189_off
+    .local int rx1189_eos
+    .local int rx1189_rep
+    .local pmc rx1189_cur
+    (rx1189_cur, rx1189_pos, rx1189_tgt) = self."!cursor_start"()
+    rx1189_cur."!cursor_debug"("START ", "infix:sym<?? !!>")
+    .lex unicode:"$\x{a2}", rx1189_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1189_eos, rx1189_tgt
+    set rx1189_off, 0
+    lt rx1189_pos, 2, rx1189_start
+    sub rx1189_off, rx1189_pos, 1
+    substr rx1189_tgt, rx1189_tgt, rx1189_off
+  rx1189_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1193_done
+    goto rxscan1193_scan
+  rxscan1193_loop:
+    ($P10) = rx1189_cur."from"()
+    inc $P10
+    set rx1189_pos, $P10
+    ge rx1189_pos, rx1189_eos, rxscan1193_done
+  rxscan1193_scan:
+    set_addr $I10, rxscan1193_loop
+    rx1189_cur."!mark_push"(0, rx1189_pos, $I10)
+  rxscan1193_done:
 .annotate "line", 512
-  # rx subrule "ws" subtype=method negate=
-    rx1184_cur."!cursor_pos"(rx1184_pos)
-    $P10 = rx1184_cur."ws"()
-    unless $P10, rx1184_fail
-    rx1184_pos = $P10."pos"()
+  # rx literal  "??"
+    add $I11, rx1189_pos, 2
+    gt $I11, rx1189_eos, rx1189_fail
+    sub $I11, rx1189_pos, rx1189_off
+    substr $S10, rx1189_tgt, $I11, 2
+    ne $S10, "??", rx1189_fail
+    add rx1189_pos, 2
 .annotate "line", 513
+  # rx subrule "ws" subtype=method negate=
+    rx1189_cur."!cursor_pos"(rx1189_pos)
+    $P10 = rx1189_cur."ws"()
+    unless $P10, rx1189_fail
+    rx1189_pos = $P10."pos"()
+.annotate "line", 514
   # rx subrule "EXPR" subtype=capture negate=
-    rx1184_cur."!cursor_pos"(rx1184_pos)
-    $P10 = rx1184_cur."EXPR"("i=")
-    unless $P10, rx1184_fail
-    rx1184_cur."!mark_push"(0, -1, 0, $P10)
+    rx1189_cur."!cursor_pos"(rx1189_pos)
+    $P10 = rx1189_cur."EXPR"("i=")
+    unless $P10, rx1189_fail
+    rx1189_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("EXPR")
-    rx1184_pos = $P10."pos"()
-.annotate "line", 514
-  # rx literal  "!!"
-    add $I11, rx1184_pos, 2
-    gt $I11, rx1184_eos, rx1184_fail
-    sub $I11, rx1184_pos, rx1184_off
-    substr $S10, rx1184_tgt, $I11, 2
-    ne $S10, "!!", rx1184_fail
-    add rx1184_pos, 2
+    rx1189_pos = $P10."pos"()
 .annotate "line", 515
+  # rx literal  "!!"
+    add $I11, rx1189_pos, 2
+    gt $I11, rx1189_eos, rx1189_fail
+    sub $I11, rx1189_pos, rx1189_off
+    substr $S10, rx1189_tgt, $I11, 2
+    ne $S10, "!!", rx1189_fail
+    add rx1189_pos, 2
+.annotate "line", 516
   # rx subrule "O" subtype=capture negate=
-    rx1184_cur."!cursor_pos"(rx1184_pos)
-    $P10 = rx1184_cur."O"("%conditional, :reducecheck<ternary>, :pasttype<if>")
-    unless $P10, rx1184_fail
-    rx1184_cur."!mark_push"(0, -1, 0, $P10)
+    rx1189_cur."!cursor_pos"(rx1189_pos)
+    $P10 = rx1189_cur."O"("%conditional, :reducecheck<ternary>, :pasttype<if>")
+    unless $P10, rx1189_fail
+    rx1189_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1184_pos = $P10."pos"()
-.annotate "line", 510
+    rx1189_pos = $P10."pos"()
+.annotate "line", 511
   # rx pass
-    rx1184_cur."!cursor_pass"(rx1184_pos, "infix:sym<?? !!>")
-    rx1184_cur."!cursor_debug"("PASS  ", "infix:sym<?? !!>", " at pos=", rx1184_pos)
-    .return (rx1184_cur)
-  rx1184_fail:
-.annotate "line", 421
-    (rx1184_rep, rx1184_pos, $I10, $P10) = rx1184_cur."!mark_fail"(0)
-    lt rx1184_pos, -1, rx1184_done
-    eq rx1184_pos, -1, rx1184_fail
-    jump $I10
-  rx1184_done:
-    rx1184_cur."!cursor_fail"()
-    rx1184_cur."!cursor_debug"("FAIL  ", "infix:sym<?? !!>")
-    .return (rx1184_cur)
+    rx1189_cur."!cursor_pass"(rx1189_pos, "infix:sym<?? !!>")
+    rx1189_cur."!cursor_debug"("PASS  ", "infix:sym<?? !!>", " at pos=", rx1189_pos)
+    .return (rx1189_cur)
+  rx1189_fail:
+.annotate "line", 422
+    (rx1189_rep, rx1189_pos, $I10, $P10) = rx1189_cur."!mark_fail"(0)
+    lt rx1189_pos, -1, rx1189_done
+    eq rx1189_pos, -1, rx1189_fail
+    jump $I10
+  rx1189_done:
+    rx1189_cur."!cursor_fail"()
+    rx1189_cur."!cursor_debug"("FAIL  ", "infix:sym<?? !!>")
+    .return (rx1189_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<?? !!>"  :subid("304_1271336396.90314") :method
-.annotate "line", 421
-    $P1186 = self."!PREFIX__!subrule"("", "??")
-    new $P1187, "ResizablePMCArray"
-    push $P1187, $P1186
-    .return ($P1187)
+.sub "!PREFIX__infix:sym<?? !!>"  :subid("306_1271948667.92136") :method
+.annotate "line", 422
+    $P1191 = self."!PREFIX__!subrule"("", "??")
+    new $P1192, "ResizablePMCArray"
+    push $P1192, $P1191
+    .return ($P1192)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=>"  :subid("305_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1190_tgt
-    .local int rx1190_pos
-    .local int rx1190_off
-    .local int rx1190_eos
-    .local int rx1190_rep
-    .local pmc rx1190_cur
-    (rx1190_cur, rx1190_pos, rx1190_tgt) = self."!cursor_start"()
-    rx1190_cur."!cursor_debug"("START ", "infix:sym<=>")
-    .lex unicode:"$\x{a2}", rx1190_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1190_eos, rx1190_tgt
-    set rx1190_off, 0
-    lt rx1190_pos, 2, rx1190_start
-    sub rx1190_off, rx1190_pos, 1
-    substr rx1190_tgt, rx1190_tgt, rx1190_off
-  rx1190_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1194_done
-    goto rxscan1194_scan
-  rxscan1194_loop:
-    ($P10) = rx1190_cur."from"()
-    inc $P10
-    set rx1190_pos, $P10
-    ge rx1190_pos, rx1190_eos, rxscan1194_done
-  rxscan1194_scan:
-    set_addr $I10, rxscan1194_loop
-    rx1190_cur."!mark_push"(0, rx1190_pos, $I10)
-  rxscan1194_done:
-.annotate "line", 519
+.sub "infix:sym<=>"  :subid("307_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1195_tgt
+    .local int rx1195_pos
+    .local int rx1195_off
+    .local int rx1195_eos
+    .local int rx1195_rep
+    .local pmc rx1195_cur
+    (rx1195_cur, rx1195_pos, rx1195_tgt) = self."!cursor_start"()
+    rx1195_cur."!cursor_debug"("START ", "infix:sym<=>")
+    .lex unicode:"$\x{a2}", rx1195_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1195_eos, rx1195_tgt
+    set rx1195_off, 0
+    lt rx1195_pos, 2, rx1195_start
+    sub rx1195_off, rx1195_pos, 1
+    substr rx1195_tgt, rx1195_tgt, rx1195_off
+  rx1195_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1199_done
+    goto rxscan1199_scan
+  rxscan1199_loop:
+    ($P10) = rx1195_cur."from"()
+    inc $P10
+    set rx1195_pos, $P10
+    ge rx1195_pos, rx1195_eos, rxscan1199_done
+  rxscan1199_scan:
+    set_addr $I10, rxscan1199_loop
+    rx1195_cur."!mark_push"(0, rx1195_pos, $I10)
+  rxscan1199_done:
+.annotate "line", 520
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1195_fail
-    rx1190_cur."!mark_push"(0, rx1190_pos, $I10)
+    set_addr $I10, rxcap_1200_fail
+    rx1195_cur."!mark_push"(0, rx1195_pos, $I10)
   # rx literal  "="
-    add $I11, rx1190_pos, 1
-    gt $I11, rx1190_eos, rx1190_fail
-    sub $I11, rx1190_pos, rx1190_off
-    substr $S10, rx1190_tgt, $I11, 1
-    ne $S10, "=", rx1190_fail
-    add rx1190_pos, 1
-    set_addr $I10, rxcap_1195_fail
-    ($I12, $I11) = rx1190_cur."!mark_peek"($I10)
-    rx1190_cur."!cursor_pos"($I11)
-    ($P10) = rx1190_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1190_pos, "")
-    rx1190_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1195_pos, 1
+    gt $I11, rx1195_eos, rx1195_fail
+    sub $I11, rx1195_pos, rx1195_off
+    substr $S10, rx1195_tgt, $I11, 1
+    ne $S10, "=", rx1195_fail
+    add rx1195_pos, 1
+    set_addr $I10, rxcap_1200_fail
+    ($I12, $I11) = rx1195_cur."!mark_peek"($I10)
+    rx1195_cur."!cursor_pos"($I11)
+    ($P10) = rx1195_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1195_pos, "")
+    rx1195_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1195_done
-  rxcap_1195_fail:
-    goto rx1190_fail
-  rxcap_1195_done:
+    goto rxcap_1200_done
+  rxcap_1200_fail:
+    goto rx1195_fail
+  rxcap_1200_done:
   # rx subrule "panic" subtype=method negate=
-    rx1190_cur."!cursor_pos"(rx1190_pos)
-    $P10 = rx1190_cur."panic"("Assignment (\"=\") not supported in NQP, use \":=\" instead")
-    unless $P10, rx1190_fail
-    rx1190_pos = $P10."pos"()
-.annotate "line", 518
-  # rx pass
-    rx1190_cur."!cursor_pass"(rx1190_pos, "infix:sym<=>")
-    rx1190_cur."!cursor_debug"("PASS  ", "infix:sym<=>", " at pos=", rx1190_pos)
-    .return (rx1190_cur)
-  rx1190_fail:
-.annotate "line", 421
-    (rx1190_rep, rx1190_pos, $I10, $P10) = rx1190_cur."!mark_fail"(0)
-    lt rx1190_pos, -1, rx1190_done
-    eq rx1190_pos, -1, rx1190_fail
-    jump $I10
-  rx1190_done:
-    rx1190_cur."!cursor_fail"()
-    rx1190_cur."!cursor_debug"("FAIL  ", "infix:sym<=>")
-    .return (rx1190_cur)
+    rx1195_cur."!cursor_pos"(rx1195_pos)
+    $P10 = rx1195_cur."panic"("Assignment (\"=\") not supported in NQP, use \":=\" instead")
+    unless $P10, rx1195_fail
+    rx1195_pos = $P10."pos"()
+.annotate "line", 519
+  # rx pass
+    rx1195_cur."!cursor_pass"(rx1195_pos, "infix:sym<=>")
+    rx1195_cur."!cursor_debug"("PASS  ", "infix:sym<=>", " at pos=", rx1195_pos)
+    .return (rx1195_cur)
+  rx1195_fail:
+.annotate "line", 422
+    (rx1195_rep, rx1195_pos, $I10, $P10) = rx1195_cur."!mark_fail"(0)
+    lt rx1195_pos, -1, rx1195_done
+    eq rx1195_pos, -1, rx1195_fail
+    jump $I10
+  rx1195_done:
+    rx1195_cur."!cursor_fail"()
+    rx1195_cur."!cursor_debug"("FAIL  ", "infix:sym<=>")
+    .return (rx1195_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=>"  :subid("306_1271336396.90314") :method
-.annotate "line", 421
-    $P1192 = self."!PREFIX__!subrule"("", "=")
-    new $P1193, "ResizablePMCArray"
-    push $P1193, $P1192
-    .return ($P1193)
+.sub "!PREFIX__infix:sym<=>"  :subid("308_1271948667.92136") :method
+.annotate "line", 422
+    $P1197 = self."!PREFIX__!subrule"("", "=")
+    new $P1198, "ResizablePMCArray"
+    push $P1198, $P1197
+    .return ($P1198)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<:=>"  :subid("307_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1197_tgt
-    .local int rx1197_pos
-    .local int rx1197_off
-    .local int rx1197_eos
-    .local int rx1197_rep
-    .local pmc rx1197_cur
-    (rx1197_cur, rx1197_pos, rx1197_tgt) = self."!cursor_start"()
-    rx1197_cur."!cursor_debug"("START ", "infix:sym<:=>")
-    .lex unicode:"$\x{a2}", rx1197_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1197_eos, rx1197_tgt
-    set rx1197_off, 0
-    lt rx1197_pos, 2, rx1197_start
-    sub rx1197_off, rx1197_pos, 1
-    substr rx1197_tgt, rx1197_tgt, rx1197_off
-  rx1197_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1201_done
-    goto rxscan1201_scan
-  rxscan1201_loop:
-    ($P10) = rx1197_cur."from"()
-    inc $P10
-    set rx1197_pos, $P10
-    ge rx1197_pos, rx1197_eos, rxscan1201_done
-  rxscan1201_scan:
-    set_addr $I10, rxscan1201_loop
-    rx1197_cur."!mark_push"(0, rx1197_pos, $I10)
-  rxscan1201_done:
-.annotate "line", 521
+.sub "infix:sym<:=>"  :subid("309_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1202_tgt
+    .local int rx1202_pos
+    .local int rx1202_off
+    .local int rx1202_eos
+    .local int rx1202_rep
+    .local pmc rx1202_cur
+    (rx1202_cur, rx1202_pos, rx1202_tgt) = self."!cursor_start"()
+    rx1202_cur."!cursor_debug"("START ", "infix:sym<:=>")
+    .lex unicode:"$\x{a2}", rx1202_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1202_eos, rx1202_tgt
+    set rx1202_off, 0
+    lt rx1202_pos, 2, rx1202_start
+    sub rx1202_off, rx1202_pos, 1
+    substr rx1202_tgt, rx1202_tgt, rx1202_off
+  rx1202_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1206_done
+    goto rxscan1206_scan
+  rxscan1206_loop:
+    ($P10) = rx1202_cur."from"()
+    inc $P10
+    set rx1202_pos, $P10
+    ge rx1202_pos, rx1202_eos, rxscan1206_done
+  rxscan1206_scan:
+    set_addr $I10, rxscan1206_loop
+    rx1202_cur."!mark_push"(0, rx1202_pos, $I10)
+  rxscan1206_done:
+.annotate "line", 522
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1202_fail
-    rx1197_cur."!mark_push"(0, rx1197_pos, $I10)
+    set_addr $I10, rxcap_1207_fail
+    rx1202_cur."!mark_push"(0, rx1202_pos, $I10)
   # rx literal  ":="
-    add $I11, rx1197_pos, 2
-    gt $I11, rx1197_eos, rx1197_fail
-    sub $I11, rx1197_pos, rx1197_off
-    substr $S10, rx1197_tgt, $I11, 2
-    ne $S10, ":=", rx1197_fail
-    add rx1197_pos, 2
-    set_addr $I10, rxcap_1202_fail
-    ($I12, $I11) = rx1197_cur."!mark_peek"($I10)
-    rx1197_cur."!cursor_pos"($I11)
-    ($P10) = rx1197_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1197_pos, "")
-    rx1197_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1202_pos, 2
+    gt $I11, rx1202_eos, rx1202_fail
+    sub $I11, rx1202_pos, rx1202_off
+    substr $S10, rx1202_tgt, $I11, 2
+    ne $S10, ":=", rx1202_fail
+    add rx1202_pos, 2
+    set_addr $I10, rxcap_1207_fail
+    ($I12, $I11) = rx1202_cur."!mark_peek"($I10)
+    rx1202_cur."!cursor_pos"($I11)
+    ($P10) = rx1202_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1202_pos, "")
+    rx1202_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1202_done
-  rxcap_1202_fail:
-    goto rx1197_fail
-  rxcap_1202_done:
+    goto rxcap_1207_done
+  rxcap_1207_fail:
+    goto rx1202_fail
+  rxcap_1207_done:
   # rx subrule "O" subtype=capture negate=
-    rx1197_cur."!cursor_pos"(rx1197_pos)
-    $P10 = rx1197_cur."O"("%assignment, :pasttype<bind>")
-    unless $P10, rx1197_fail
-    rx1197_cur."!mark_push"(0, -1, 0, $P10)
+    rx1202_cur."!cursor_pos"(rx1202_pos)
+    $P10 = rx1202_cur."O"("%assignment, :pasttype<bind>")
+    unless $P10, rx1202_fail
+    rx1202_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1197_pos = $P10."pos"()
+    rx1202_pos = $P10."pos"()
   # rx pass
-    rx1197_cur."!cursor_pass"(rx1197_pos, "infix:sym<:=>")
-    rx1197_cur."!cursor_debug"("PASS  ", "infix:sym<:=>", " at pos=", rx1197_pos)
-    .return (rx1197_cur)
-  rx1197_fail:
-.annotate "line", 421
-    (rx1197_rep, rx1197_pos, $I10, $P10) = rx1197_cur."!mark_fail"(0)
-    lt rx1197_pos, -1, rx1197_done
-    eq rx1197_pos, -1, rx1197_fail
-    jump $I10
-  rx1197_done:
-    rx1197_cur."!cursor_fail"()
-    rx1197_cur."!cursor_debug"("FAIL  ", "infix:sym<:=>")
-    .return (rx1197_cur)
+    rx1202_cur."!cursor_pass"(rx1202_pos, "infix:sym<:=>")
+    rx1202_cur."!cursor_debug"("PASS  ", "infix:sym<:=>", " at pos=", rx1202_pos)
+    .return (rx1202_cur)
+  rx1202_fail:
+.annotate "line", 422
+    (rx1202_rep, rx1202_pos, $I10, $P10) = rx1202_cur."!mark_fail"(0)
+    lt rx1202_pos, -1, rx1202_done
+    eq rx1202_pos, -1, rx1202_fail
+    jump $I10
+  rx1202_done:
+    rx1202_cur."!cursor_fail"()
+    rx1202_cur."!cursor_debug"("FAIL  ", "infix:sym<:=>")
+    .return (rx1202_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<:=>"  :subid("308_1271336396.90314") :method
-.annotate "line", 421
-    $P1199 = self."!PREFIX__!subrule"("O", ":=")
-    new $P1200, "ResizablePMCArray"
-    push $P1200, $P1199
-    .return ($P1200)
+.sub "!PREFIX__infix:sym<:=>"  :subid("310_1271948667.92136") :method
+.annotate "line", 422
+    $P1204 = self."!PREFIX__!subrule"("O", ":=")
+    new $P1205, "ResizablePMCArray"
+    push $P1205, $P1204
+    .return ($P1205)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<::=>"  :subid("309_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1204_tgt
-    .local int rx1204_pos
-    .local int rx1204_off
-    .local int rx1204_eos
-    .local int rx1204_rep
-    .local pmc rx1204_cur
-    (rx1204_cur, rx1204_pos, rx1204_tgt) = self."!cursor_start"()
-    rx1204_cur."!cursor_debug"("START ", "infix:sym<::=>")
-    .lex unicode:"$\x{a2}", rx1204_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1204_eos, rx1204_tgt
-    set rx1204_off, 0
-    lt rx1204_pos, 2, rx1204_start
-    sub rx1204_off, rx1204_pos, 1
-    substr rx1204_tgt, rx1204_tgt, rx1204_off
-  rx1204_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1208_done
-    goto rxscan1208_scan
-  rxscan1208_loop:
-    ($P10) = rx1204_cur."from"()
-    inc $P10
-    set rx1204_pos, $P10
-    ge rx1204_pos, rx1204_eos, rxscan1208_done
-  rxscan1208_scan:
-    set_addr $I10, rxscan1208_loop
-    rx1204_cur."!mark_push"(0, rx1204_pos, $I10)
-  rxscan1208_done:
-.annotate "line", 522
+.sub "infix:sym<::=>"  :subid("311_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1209_tgt
+    .local int rx1209_pos
+    .local int rx1209_off
+    .local int rx1209_eos
+    .local int rx1209_rep
+    .local pmc rx1209_cur
+    (rx1209_cur, rx1209_pos, rx1209_tgt) = self."!cursor_start"()
+    rx1209_cur."!cursor_debug"("START ", "infix:sym<::=>")
+    .lex unicode:"$\x{a2}", rx1209_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1209_eos, rx1209_tgt
+    set rx1209_off, 0
+    lt rx1209_pos, 2, rx1209_start
+    sub rx1209_off, rx1209_pos, 1
+    substr rx1209_tgt, rx1209_tgt, rx1209_off
+  rx1209_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1213_done
+    goto rxscan1213_scan
+  rxscan1213_loop:
+    ($P10) = rx1209_cur."from"()
+    inc $P10
+    set rx1209_pos, $P10
+    ge rx1209_pos, rx1209_eos, rxscan1213_done
+  rxscan1213_scan:
+    set_addr $I10, rxscan1213_loop
+    rx1209_cur."!mark_push"(0, rx1209_pos, $I10)
+  rxscan1213_done:
+.annotate "line", 523
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1209_fail
-    rx1204_cur."!mark_push"(0, rx1204_pos, $I10)
+    set_addr $I10, rxcap_1214_fail
+    rx1209_cur."!mark_push"(0, rx1209_pos, $I10)
   # rx literal  "::="
-    add $I11, rx1204_pos, 3
-    gt $I11, rx1204_eos, rx1204_fail
-    sub $I11, rx1204_pos, rx1204_off
-    substr $S10, rx1204_tgt, $I11, 3
-    ne $S10, "::=", rx1204_fail
-    add rx1204_pos, 3
-    set_addr $I10, rxcap_1209_fail
-    ($I12, $I11) = rx1204_cur."!mark_peek"($I10)
-    rx1204_cur."!cursor_pos"($I11)
-    ($P10) = rx1204_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1204_pos, "")
-    rx1204_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1209_pos, 3
+    gt $I11, rx1209_eos, rx1209_fail
+    sub $I11, rx1209_pos, rx1209_off
+    substr $S10, rx1209_tgt, $I11, 3
+    ne $S10, "::=", rx1209_fail
+    add rx1209_pos, 3
+    set_addr $I10, rxcap_1214_fail
+    ($I12, $I11) = rx1209_cur."!mark_peek"($I10)
+    rx1209_cur."!cursor_pos"($I11)
+    ($P10) = rx1209_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1209_pos, "")
+    rx1209_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1209_done
-  rxcap_1209_fail:
-    goto rx1204_fail
-  rxcap_1209_done:
+    goto rxcap_1214_done
+  rxcap_1214_fail:
+    goto rx1209_fail
+  rxcap_1214_done:
   # rx subrule "O" subtype=capture negate=
-    rx1204_cur."!cursor_pos"(rx1204_pos)
-    $P10 = rx1204_cur."O"("%assignment, :pasttype<bind>")
-    unless $P10, rx1204_fail
-    rx1204_cur."!mark_push"(0, -1, 0, $P10)
+    rx1209_cur."!cursor_pos"(rx1209_pos)
+    $P10 = rx1209_cur."O"("%assignment, :pasttype<bind>")
+    unless $P10, rx1209_fail
+    rx1209_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1204_pos = $P10."pos"()
+    rx1209_pos = $P10."pos"()
   # rx pass
-    rx1204_cur."!cursor_pass"(rx1204_pos, "infix:sym<::=>")
-    rx1204_cur."!cursor_debug"("PASS  ", "infix:sym<::=>", " at pos=", rx1204_pos)
-    .return (rx1204_cur)
-  rx1204_fail:
-.annotate "line", 421
-    (rx1204_rep, rx1204_pos, $I10, $P10) = rx1204_cur."!mark_fail"(0)
-    lt rx1204_pos, -1, rx1204_done
-    eq rx1204_pos, -1, rx1204_fail
-    jump $I10
-  rx1204_done:
-    rx1204_cur."!cursor_fail"()
-    rx1204_cur."!cursor_debug"("FAIL  ", "infix:sym<::=>")
-    .return (rx1204_cur)
+    rx1209_cur."!cursor_pass"(rx1209_pos, "infix:sym<::=>")
+    rx1209_cur."!cursor_debug"("PASS  ", "infix:sym<::=>", " at pos=", rx1209_pos)
+    .return (rx1209_cur)
+  rx1209_fail:
+.annotate "line", 422
+    (rx1209_rep, rx1209_pos, $I10, $P10) = rx1209_cur."!mark_fail"(0)
+    lt rx1209_pos, -1, rx1209_done
+    eq rx1209_pos, -1, rx1209_fail
+    jump $I10
+  rx1209_done:
+    rx1209_cur."!cursor_fail"()
+    rx1209_cur."!cursor_debug"("FAIL  ", "infix:sym<::=>")
+    .return (rx1209_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<::=>"  :subid("310_1271336396.90314") :method
-.annotate "line", 421
-    $P1206 = self."!PREFIX__!subrule"("O", "::=")
-    new $P1207, "ResizablePMCArray"
-    push $P1207, $P1206
-    .return ($P1207)
+.sub "!PREFIX__infix:sym<::=>"  :subid("312_1271948667.92136") :method
+.annotate "line", 422
+    $P1211 = self."!PREFIX__!subrule"("O", "::=")
+    new $P1212, "ResizablePMCArray"
+    push $P1212, $P1211
+    .return ($P1212)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<,>"  :subid("311_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1211_tgt
-    .local int rx1211_pos
-    .local int rx1211_off
-    .local int rx1211_eos
-    .local int rx1211_rep
-    .local pmc rx1211_cur
-    (rx1211_cur, rx1211_pos, rx1211_tgt) = self."!cursor_start"()
-    rx1211_cur."!cursor_debug"("START ", "infix:sym<,>")
-    .lex unicode:"$\x{a2}", rx1211_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1211_eos, rx1211_tgt
-    set rx1211_off, 0
-    lt rx1211_pos, 2, rx1211_start
-    sub rx1211_off, rx1211_pos, 1
-    substr rx1211_tgt, rx1211_tgt, rx1211_off
-  rx1211_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1215_done
-    goto rxscan1215_scan
-  rxscan1215_loop:
-    ($P10) = rx1211_cur."from"()
-    inc $P10
-    set rx1211_pos, $P10
-    ge rx1211_pos, rx1211_eos, rxscan1215_done
-  rxscan1215_scan:
-    set_addr $I10, rxscan1215_loop
-    rx1211_cur."!mark_push"(0, rx1211_pos, $I10)
-  rxscan1215_done:
-.annotate "line", 524
+.sub "infix:sym<,>"  :subid("313_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1216_tgt
+    .local int rx1216_pos
+    .local int rx1216_off
+    .local int rx1216_eos
+    .local int rx1216_rep
+    .local pmc rx1216_cur
+    (rx1216_cur, rx1216_pos, rx1216_tgt) = self."!cursor_start"()
+    rx1216_cur."!cursor_debug"("START ", "infix:sym<,>")
+    .lex unicode:"$\x{a2}", rx1216_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1216_eos, rx1216_tgt
+    set rx1216_off, 0
+    lt rx1216_pos, 2, rx1216_start
+    sub rx1216_off, rx1216_pos, 1
+    substr rx1216_tgt, rx1216_tgt, rx1216_off
+  rx1216_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1220_done
+    goto rxscan1220_scan
+  rxscan1220_loop:
+    ($P10) = rx1216_cur."from"()
+    inc $P10
+    set rx1216_pos, $P10
+    ge rx1216_pos, rx1216_eos, rxscan1220_done
+  rxscan1220_scan:
+    set_addr $I10, rxscan1220_loop
+    rx1216_cur."!mark_push"(0, rx1216_pos, $I10)
+  rxscan1220_done:
+.annotate "line", 525
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1216_fail
-    rx1211_cur."!mark_push"(0, rx1211_pos, $I10)
+    set_addr $I10, rxcap_1221_fail
+    rx1216_cur."!mark_push"(0, rx1216_pos, $I10)
   # rx literal  ","
-    add $I11, rx1211_pos, 1
-    gt $I11, rx1211_eos, rx1211_fail
-    sub $I11, rx1211_pos, rx1211_off
-    substr $S10, rx1211_tgt, $I11, 1
-    ne $S10, ",", rx1211_fail
-    add rx1211_pos, 1
-    set_addr $I10, rxcap_1216_fail
-    ($I12, $I11) = rx1211_cur."!mark_peek"($I10)
-    rx1211_cur."!cursor_pos"($I11)
-    ($P10) = rx1211_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1211_pos, "")
-    rx1211_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1216_pos, 1
+    gt $I11, rx1216_eos, rx1216_fail
+    sub $I11, rx1216_pos, rx1216_off
+    substr $S10, rx1216_tgt, $I11, 1
+    ne $S10, ",", rx1216_fail
+    add rx1216_pos, 1
+    set_addr $I10, rxcap_1221_fail
+    ($I12, $I11) = rx1216_cur."!mark_peek"($I10)
+    rx1216_cur."!cursor_pos"($I11)
+    ($P10) = rx1216_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1216_pos, "")
+    rx1216_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1216_done
-  rxcap_1216_fail:
-    goto rx1211_fail
-  rxcap_1216_done:
+    goto rxcap_1221_done
+  rxcap_1221_fail:
+    goto rx1216_fail
+  rxcap_1221_done:
   # rx subrule "O" subtype=capture negate=
-    rx1211_cur."!cursor_pos"(rx1211_pos)
-    $P10 = rx1211_cur."O"("%comma, :pasttype<list>")
-    unless $P10, rx1211_fail
-    rx1211_cur."!mark_push"(0, -1, 0, $P10)
+    rx1216_cur."!cursor_pos"(rx1216_pos)
+    $P10 = rx1216_cur."O"("%comma, :pasttype<list>")
+    unless $P10, rx1216_fail
+    rx1216_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1211_pos = $P10."pos"()
+    rx1216_pos = $P10."pos"()
   # rx pass
-    rx1211_cur."!cursor_pass"(rx1211_pos, "infix:sym<,>")
-    rx1211_cur."!cursor_debug"("PASS  ", "infix:sym<,>", " at pos=", rx1211_pos)
-    .return (rx1211_cur)
-  rx1211_fail:
-.annotate "line", 421
-    (rx1211_rep, rx1211_pos, $I10, $P10) = rx1211_cur."!mark_fail"(0)
-    lt rx1211_pos, -1, rx1211_done
-    eq rx1211_pos, -1, rx1211_fail
-    jump $I10
-  rx1211_done:
-    rx1211_cur."!cursor_fail"()
-    rx1211_cur."!cursor_debug"("FAIL  ", "infix:sym<,>")
-    .return (rx1211_cur)
+    rx1216_cur."!cursor_pass"(rx1216_pos, "infix:sym<,>")
+    rx1216_cur."!cursor_debug"("PASS  ", "infix:sym<,>", " at pos=", rx1216_pos)
+    .return (rx1216_cur)
+  rx1216_fail:
+.annotate "line", 422
+    (rx1216_rep, rx1216_pos, $I10, $P10) = rx1216_cur."!mark_fail"(0)
+    lt rx1216_pos, -1, rx1216_done
+    eq rx1216_pos, -1, rx1216_fail
+    jump $I10
+  rx1216_done:
+    rx1216_cur."!cursor_fail"()
+    rx1216_cur."!cursor_debug"("FAIL  ", "infix:sym<,>")
+    .return (rx1216_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<,>"  :subid("312_1271336396.90314") :method
-.annotate "line", 421
-    $P1213 = self."!PREFIX__!subrule"("O", ",")
-    new $P1214, "ResizablePMCArray"
-    push $P1214, $P1213
-    .return ($P1214)
+.sub "!PREFIX__infix:sym<,>"  :subid("314_1271948667.92136") :method
+.annotate "line", 422
+    $P1218 = self."!PREFIX__!subrule"("O", ",")
+    new $P1219, "ResizablePMCArray"
+    push $P1219, $P1218
+    .return ($P1219)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<return>"  :subid("313_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1218_tgt
-    .local int rx1218_pos
-    .local int rx1218_off
-    .local int rx1218_eos
-    .local int rx1218_rep
-    .local pmc rx1218_cur
-    (rx1218_cur, rx1218_pos, rx1218_tgt) = self."!cursor_start"()
-    rx1218_cur."!cursor_debug"("START ", "prefix:sym<return>")
-    .lex unicode:"$\x{a2}", rx1218_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1218_eos, rx1218_tgt
-    set rx1218_off, 0
-    lt rx1218_pos, 2, rx1218_start
-    sub rx1218_off, rx1218_pos, 1
-    substr rx1218_tgt, rx1218_tgt, rx1218_off
-  rx1218_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1221_done
-    goto rxscan1221_scan
-  rxscan1221_loop:
-    ($P10) = rx1218_cur."from"()
-    inc $P10
-    set rx1218_pos, $P10
-    ge rx1218_pos, rx1218_eos, rxscan1221_done
-  rxscan1221_scan:
-    set_addr $I10, rxscan1221_loop
-    rx1218_cur."!mark_push"(0, rx1218_pos, $I10)
-  rxscan1221_done:
-.annotate "line", 526
+.sub "prefix:sym<return>"  :subid("315_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1223_tgt
+    .local int rx1223_pos
+    .local int rx1223_off
+    .local int rx1223_eos
+    .local int rx1223_rep
+    .local pmc rx1223_cur
+    (rx1223_cur, rx1223_pos, rx1223_tgt) = self."!cursor_start"()
+    rx1223_cur."!cursor_debug"("START ", "prefix:sym<return>")
+    .lex unicode:"$\x{a2}", rx1223_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1223_eos, rx1223_tgt
+    set rx1223_off, 0
+    lt rx1223_pos, 2, rx1223_start
+    sub rx1223_off, rx1223_pos, 1
+    substr rx1223_tgt, rx1223_tgt, rx1223_off
+  rx1223_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1226_done
+    goto rxscan1226_scan
+  rxscan1226_loop:
+    ($P10) = rx1223_cur."from"()
+    inc $P10
+    set rx1223_pos, $P10
+    ge rx1223_pos, rx1223_eos, rxscan1226_done
+  rxscan1226_scan:
+    set_addr $I10, rxscan1226_loop
+    rx1223_cur."!mark_push"(0, rx1223_pos, $I10)
+  rxscan1226_done:
+.annotate "line", 527
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1222_fail
-    rx1218_cur."!mark_push"(0, rx1218_pos, $I10)
+    set_addr $I10, rxcap_1227_fail
+    rx1223_cur."!mark_push"(0, rx1223_pos, $I10)
   # rx literal  "return"
-    add $I11, rx1218_pos, 6
-    gt $I11, rx1218_eos, rx1218_fail
-    sub $I11, rx1218_pos, rx1218_off
-    substr $S10, rx1218_tgt, $I11, 6
-    ne $S10, "return", rx1218_fail
-    add rx1218_pos, 6
-    set_addr $I10, rxcap_1222_fail
-    ($I12, $I11) = rx1218_cur."!mark_peek"($I10)
-    rx1218_cur."!cursor_pos"($I11)
-    ($P10) = rx1218_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1218_pos, "")
-    rx1218_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1223_pos, 6
+    gt $I11, rx1223_eos, rx1223_fail
+    sub $I11, rx1223_pos, rx1223_off
+    substr $S10, rx1223_tgt, $I11, 6
+    ne $S10, "return", rx1223_fail
+    add rx1223_pos, 6
+    set_addr $I10, rxcap_1227_fail
+    ($I12, $I11) = rx1223_cur."!mark_peek"($I10)
+    rx1223_cur."!cursor_pos"($I11)
+    ($P10) = rx1223_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1223_pos, "")
+    rx1223_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1222_done
-  rxcap_1222_fail:
-    goto rx1218_fail
-  rxcap_1222_done:
+    goto rxcap_1227_done
+  rxcap_1227_fail:
+    goto rx1223_fail
+  rxcap_1227_done:
   # rx charclass s
-    ge rx1218_pos, rx1218_eos, rx1218_fail
-    sub $I10, rx1218_pos, rx1218_off
-    is_cclass $I11, 32, rx1218_tgt, $I10
-    unless $I11, rx1218_fail
-    inc rx1218_pos
+    ge rx1223_pos, rx1223_eos, rx1223_fail
+    sub $I10, rx1223_pos, rx1223_off
+    is_cclass $I11, 32, rx1223_tgt, $I10
+    unless $I11, rx1223_fail
+    inc rx1223_pos
   # rx subrule "O" subtype=capture negate=
-    rx1218_cur."!cursor_pos"(rx1218_pos)
-    $P10 = rx1218_cur."O"("%list_prefix, :pasttype<return>")
-    unless $P10, rx1218_fail
-    rx1218_cur."!mark_push"(0, -1, 0, $P10)
+    rx1223_cur."!cursor_pos"(rx1223_pos)
+    $P10 = rx1223_cur."O"("%list_prefix, :pasttype<return>")
+    unless $P10, rx1223_fail
+    rx1223_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1218_pos = $P10."pos"()
+    rx1223_pos = $P10."pos"()
   # rx pass
-    rx1218_cur."!cursor_pass"(rx1218_pos, "prefix:sym<return>")
-    rx1218_cur."!cursor_debug"("PASS  ", "prefix:sym<return>", " at pos=", rx1218_pos)
-    .return (rx1218_cur)
-  rx1218_fail:
-.annotate "line", 421
-    (rx1218_rep, rx1218_pos, $I10, $P10) = rx1218_cur."!mark_fail"(0)
-    lt rx1218_pos, -1, rx1218_done
-    eq rx1218_pos, -1, rx1218_fail
-    jump $I10
-  rx1218_done:
-    rx1218_cur."!cursor_fail"()
-    rx1218_cur."!cursor_debug"("FAIL  ", "prefix:sym<return>")
-    .return (rx1218_cur)
+    rx1223_cur."!cursor_pass"(rx1223_pos, "prefix:sym<return>")
+    rx1223_cur."!cursor_debug"("PASS  ", "prefix:sym<return>", " at pos=", rx1223_pos)
+    .return (rx1223_cur)
+  rx1223_fail:
+.annotate "line", 422
+    (rx1223_rep, rx1223_pos, $I10, $P10) = rx1223_cur."!mark_fail"(0)
+    lt rx1223_pos, -1, rx1223_done
+    eq rx1223_pos, -1, rx1223_fail
+    jump $I10
+  rx1223_done:
+    rx1223_cur."!cursor_fail"()
+    rx1223_cur."!cursor_debug"("FAIL  ", "prefix:sym<return>")
+    .return (rx1223_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<return>"  :subid("314_1271336396.90314") :method
-.annotate "line", 421
-    new $P1220, "ResizablePMCArray"
-    push $P1220, "return"
-    .return ($P1220)
+.sub "!PREFIX__prefix:sym<return>"  :subid("316_1271948667.92136") :method
+.annotate "line", 422
+    new $P1225, "ResizablePMCArray"
+    push $P1225, "return"
+    .return ($P1225)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<make>"  :subid("315_1271336396.90314") :method :outer("11_1271336396.90314")
-.annotate "line", 421
-    .local string rx1224_tgt
-    .local int rx1224_pos
-    .local int rx1224_off
-    .local int rx1224_eos
-    .local int rx1224_rep
-    .local pmc rx1224_cur
-    (rx1224_cur, rx1224_pos, rx1224_tgt) = self."!cursor_start"()
-    rx1224_cur."!cursor_debug"("START ", "prefix:sym<make>")
-    .lex unicode:"$\x{a2}", rx1224_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1224_eos, rx1224_tgt
-    set rx1224_off, 0
-    lt rx1224_pos, 2, rx1224_start
-    sub rx1224_off, rx1224_pos, 1
-    substr rx1224_tgt, rx1224_tgt, rx1224_off
-  rx1224_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1227_done
-    goto rxscan1227_scan
-  rxscan1227_loop:
-    ($P10) = rx1224_cur."from"()
-    inc $P10
-    set rx1224_pos, $P10
-    ge rx1224_pos, rx1224_eos, rxscan1227_done
-  rxscan1227_scan:
-    set_addr $I10, rxscan1227_loop
-    rx1224_cur."!mark_push"(0, rx1224_pos, $I10)
-  rxscan1227_done:
-.annotate "line", 527
+.sub "prefix:sym<make>"  :subid("317_1271948667.92136") :method :outer("11_1271948667.92136")
+.annotate "line", 422
+    .local string rx1229_tgt
+    .local int rx1229_pos
+    .local int rx1229_off
+    .local int rx1229_eos
+    .local int rx1229_rep
+    .local pmc rx1229_cur
+    (rx1229_cur, rx1229_pos, rx1229_tgt) = self."!cursor_start"()
+    rx1229_cur."!cursor_debug"("START ", "prefix:sym<make>")
+    .lex unicode:"$\x{a2}", rx1229_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1229_eos, rx1229_tgt
+    set rx1229_off, 0
+    lt rx1229_pos, 2, rx1229_start
+    sub rx1229_off, rx1229_pos, 1
+    substr rx1229_tgt, rx1229_tgt, rx1229_off
+  rx1229_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1232_done
+    goto rxscan1232_scan
+  rxscan1232_loop:
+    ($P10) = rx1229_cur."from"()
+    inc $P10
+    set rx1229_pos, $P10
+    ge rx1229_pos, rx1229_eos, rxscan1232_done
+  rxscan1232_scan:
+    set_addr $I10, rxscan1232_loop
+    rx1229_cur."!mark_push"(0, rx1229_pos, $I10)
+  rxscan1232_done:
+.annotate "line", 528
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1228_fail
-    rx1224_cur."!mark_push"(0, rx1224_pos, $I10)
+    set_addr $I10, rxcap_1233_fail
+    rx1229_cur."!mark_push"(0, rx1229_pos, $I10)
   # rx literal  "make"
-    add $I11, rx1224_pos, 4
-    gt $I11, rx1224_eos, rx1224_fail
-    sub $I11, rx1224_pos, rx1224_off
-    substr $S10, rx1224_tgt, $I11, 4
-    ne $S10, "make", rx1224_fail
-    add rx1224_pos, 4
-    set_addr $I10, rxcap_1228_fail
-    ($I12, $I11) = rx1224_cur."!mark_peek"($I10)
-    rx1224_cur."!cursor_pos"($I11)
-    ($P10) = rx1224_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1224_pos, "")
-    rx1224_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1229_pos, 4
+    gt $I11, rx1229_eos, rx1229_fail
+    sub $I11, rx1229_pos, rx1229_off
+    substr $S10, rx1229_tgt, $I11, 4
+    ne $S10, "make", rx1229_fail
+    add rx1229_pos, 4
+    set_addr $I10, rxcap_1233_fail
+    ($I12, $I11) = rx1229_cur."!mark_peek"($I10)
+    rx1229_cur."!cursor_pos"($I11)
+    ($P10) = rx1229_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1229_pos, "")
+    rx1229_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1228_done
-  rxcap_1228_fail:
-    goto rx1224_fail
-  rxcap_1228_done:
+    goto rxcap_1233_done
+  rxcap_1233_fail:
+    goto rx1229_fail
+  rxcap_1233_done:
   # rx charclass s
-    ge rx1224_pos, rx1224_eos, rx1224_fail
-    sub $I10, rx1224_pos, rx1224_off
-    is_cclass $I11, 32, rx1224_tgt, $I10
-    unless $I11, rx1224_fail
-    inc rx1224_pos
+    ge rx1229_pos, rx1229_eos, rx1229_fail
+    sub $I10, rx1229_pos, rx1229_off
+    is_cclass $I11, 32, rx1229_tgt, $I10
+    unless $I11, rx1229_fail
+    inc rx1229_pos
   # rx subrule "O" subtype=capture negate=
-    rx1224_cur."!cursor_pos"(rx1224_pos)
-    $P10 = rx1224_cur."O"("%list_prefix")
-    unless $P10, rx1224_fail
-    rx1224_cur."!mark_push"(0, -1, 0, $P10)
+    rx1229_cur."!cursor_pos"(rx1229_pos)
+    $P10 = rx1229_cur."O"("%list_prefix")
+    unless $P10, rx1229_fail
+    rx1229_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1224_pos = $P10."pos"()
+    rx1229_pos = $P10."pos"()
   # rx pass
-    rx1224_cur."!cursor_pass"(rx1224_pos, "prefix:sym<make>")
-    rx1224_cur."!cursor_debug"("PASS  ", "prefix:sym<make>", " at pos=", rx1224_pos)
-    .return (rx1224_cur)
-  rx1224_fail:
-.annotate "line", 421
-    (rx1224_rep, rx1224_pos, $I10, $P10) = rx1224_cur."!mark_fail"(0)
-    lt rx1224_pos, -1, rx1224_done
-    eq rx1224_pos, -1, rx1224_fail
+    rx1229_cur."!cursor_pass"(rx1229_pos, "prefix:sym<make>")
+    rx1229_cur."!cursor_debug"("PASS  ", "prefix:sym<make>", " at pos=", rx1229_pos)
+    .return (rx1229_cur)
+  rx1229_fail:
+.annotate "line", 422
+    (rx1229_rep, rx1229_pos, $I10, $P10) = rx1229_cur."!mark_fail"(0)
+    lt rx1229_pos, -1, rx1229_done
+    eq rx1229_pos, -1, rx1229_fail
     jump $I10
-  rx1224_done:
-    rx1224_cur."!cursor_fail"()
-    rx1224_cur."!cursor_debug"("FAIL  ", "prefix:sym<make>")
-    .return (rx1224_cur)
+  rx1229_done:
+    rx1229_cur."!cursor_fail"()
+    rx1229_cur."!cursor_debug"("FAIL  ", "prefix:sym<make>")
+    .return (rx1229_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<make>"  :subid("316_1271336396.90314") :method
-.annotate "line", 421
-    new $P1226, "ResizablePMCArray"
-    push $P1226, "make"
-    .return ($P1226)
+.sub "!PREFIX__prefix:sym<make>"  :subid("318_1271948667.92136") :method
+.annotate "line", 422
+    new $P1231, "ResizablePMCArray"
+    push $P1231, "make"
+    .return ($P1231)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "smartmatch"  :subid("317_1271336396.90314") :method :outer("11_1271336396.90314")
-    .param pmc param_1232
-.annotate "line", 529
-    new $P1231, 'ExceptionHandler'
-    set_addr $P1231, control_1230
-    $P1231."handle_types"(58)
-    push_eh $P1231
+.sub "smartmatch"  :subid("319_1271948667.92136") :method :outer("11_1271948667.92136")
+    .param pmc param_1237
+.annotate "line", 530
+    new $P1236, 'ExceptionHandler'
+    set_addr $P1236, control_1235
+    $P1236."handle_types"(58)
+    push_eh $P1236
     .lex "self", self
-    .lex "$/", param_1232
-.annotate "line", 531
-    new $P1233, "Undef"
-    .lex "$t", $P1233
-    find_lex $P1234, "$/"
-    unless_null $P1234, vivify_343
-    $P1234 = root_new ['parrot';'ResizablePMCArray']
-  vivify_343:
-    set $P1235, $P1234[0]
-    unless_null $P1235, vivify_344
-    new $P1235, "Undef"
-  vivify_344:
-    store_lex "$t", $P1235
-    find_lex $P1236, "$/"
-    unless_null $P1236, vivify_345
-    $P1236 = root_new ['parrot';'ResizablePMCArray']
+    .lex "$/", param_1237
+.annotate "line", 532
+    new $P1238, "Undef"
+    .lex "$t", $P1238
+    find_lex $P1239, "$/"
+    unless_null $P1239, vivify_345
+    $P1239 = root_new ['parrot';'ResizablePMCArray']
   vivify_345:
-    set $P1237, $P1236[1]
-    unless_null $P1237, vivify_346
-    new $P1237, "Undef"
+    set $P1240, $P1239[0]
+    unless_null $P1240, vivify_346
+    new $P1240, "Undef"
   vivify_346:
-    find_lex $P1238, "$/"
-    unless_null $P1238, vivify_347
-    $P1238 = root_new ['parrot';'ResizablePMCArray']
-    store_lex "$/", $P1238
+    store_lex "$t", $P1240
+    find_lex $P1241, "$/"
+    unless_null $P1241, vivify_347
+    $P1241 = root_new ['parrot';'ResizablePMCArray']
   vivify_347:
-    set $P1238[0], $P1237
-    find_lex $P1239, "$t"
-    find_lex $P1240, "$/"
-    unless_null $P1240, vivify_348
-    $P1240 = root_new ['parrot';'ResizablePMCArray']
-    store_lex "$/", $P1240
+    set $P1242, $P1241[1]
+    unless_null $P1242, vivify_348
+    new $P1242, "Undef"
   vivify_348:
-    set $P1240[1], $P1239
-.annotate "line", 529
-    .return ($P1239)
-  control_1230:
+    find_lex $P1243, "$/"
+    unless_null $P1243, vivify_349
+    $P1243 = root_new ['parrot';'ResizablePMCArray']
+    store_lex "$/", $P1243
+  vivify_349:
+    set $P1243[0], $P1242
+    find_lex $P1244, "$t"
+    find_lex $P1245, "$/"
+    unless_null $P1245, vivify_350
+    $P1245 = root_new ['parrot';'ResizablePMCArray']
+    store_lex "$/", $P1245
+  vivify_350:
+    set $P1245[1], $P1244
+.annotate "line", 530
+    .return ($P1244)
+  control_1235:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1241, exception, "payload"
-    .return ($P1241)
+    getattribute $P1246, exception, "payload"
+    .return ($P1246)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1242"  :subid("318_1271336396.90314") :outer("11_1271336396.90314")
-.annotate "line", 535
-    .const 'Sub' $P1276 = "329_1271336396.90314" 
-    capture_lex $P1276
-    .const 'Sub' $P1263 = "326_1271336396.90314" 
+.sub "_block1247"  :subid("320_1271948667.92136") :outer("11_1271948667.92136")
+.annotate "line", 536
+    .const 'Sub' $P1281 = "331_1271948667.92136" 
+    capture_lex $P1281
+    .const 'Sub' $P1268 = "328_1271948667.92136" 
+    capture_lex $P1268
+    .const 'Sub' $P1263 = "326_1271948667.92136" 
     capture_lex $P1263
-    .const 'Sub' $P1258 = "324_1271336396.90314" 
+    .const 'Sub' $P1258 = "324_1271948667.92136" 
     capture_lex $P1258
-    .const 'Sub' $P1253 = "322_1271336396.90314" 
-    capture_lex $P1253
-    .const 'Sub' $P1244 = "319_1271336396.90314" 
-    capture_lex $P1244
-    .const 'Sub' $P1276 = "329_1271336396.90314" 
-    capture_lex $P1276
-    .return ($P1276)
+    .const 'Sub' $P1249 = "321_1271948667.92136" 
+    capture_lex $P1249
+    .const 'Sub' $P1281 = "331_1271948667.92136" 
+    capture_lex $P1281
+    .return ($P1281)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<:my>"  :subid("319_1271336396.90314") :method :outer("318_1271336396.90314")
-.annotate "line", 535
-    .const 'Sub' $P1250 = "321_1271336396.90314" 
-    capture_lex $P1250
-    .local string rx1245_tgt
-    .local int rx1245_pos
-    .local int rx1245_off
-    .local int rx1245_eos
-    .local int rx1245_rep
-    .local pmc rx1245_cur
-    (rx1245_cur, rx1245_pos, rx1245_tgt) = self."!cursor_start"()
-    rx1245_cur."!cursor_debug"("START ", "metachar:sym<:my>")
-    .lex unicode:"$\x{a2}", rx1245_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1245_eos, rx1245_tgt
-    set rx1245_off, 0
-    lt rx1245_pos, 2, rx1245_start
-    sub rx1245_off, rx1245_pos, 1
-    substr rx1245_tgt, rx1245_tgt, rx1245_off
-  rx1245_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1248_done
-    goto rxscan1248_scan
-  rxscan1248_loop:
-    ($P10) = rx1245_cur."from"()
-    inc $P10
-    set rx1245_pos, $P10
-    ge rx1245_pos, rx1245_eos, rxscan1248_done
-  rxscan1248_scan:
-    set_addr $I10, rxscan1248_loop
-    rx1245_cur."!mark_push"(0, rx1245_pos, $I10)
-  rxscan1248_done:
-.annotate "line", 537
+.sub "metachar:sym<:my>"  :subid("321_1271948667.92136") :method :outer("320_1271948667.92136")
+.annotate "line", 536
+    .const 'Sub' $P1255 = "323_1271948667.92136" 
+    capture_lex $P1255
+    .local string rx1250_tgt
+    .local int rx1250_pos
+    .local int rx1250_off
+    .local int rx1250_eos
+    .local int rx1250_rep
+    .local pmc rx1250_cur
+    (rx1250_cur, rx1250_pos, rx1250_tgt) = self."!cursor_start"()
+    rx1250_cur."!cursor_debug"("START ", "metachar:sym<:my>")
+    .lex unicode:"$\x{a2}", rx1250_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1250_eos, rx1250_tgt
+    set rx1250_off, 0
+    lt rx1250_pos, 2, rx1250_start
+    sub rx1250_off, rx1250_pos, 1
+    substr rx1250_tgt, rx1250_tgt, rx1250_off
+  rx1250_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1253_done
+    goto rxscan1253_scan
+  rxscan1253_loop:
+    ($P10) = rx1250_cur."from"()
+    inc $P10
+    set rx1250_pos, $P10
+    ge rx1250_pos, rx1250_eos, rxscan1253_done
+  rxscan1253_scan:
+    set_addr $I10, rxscan1253_loop
+    rx1250_cur."!mark_push"(0, rx1250_pos, $I10)
+  rxscan1253_done:
+.annotate "line", 538
   # rx literal  ":"
-    add $I11, rx1245_pos, 1
-    gt $I11, rx1245_eos, rx1245_fail
-    sub $I11, rx1245_pos, rx1245_off
-    substr $S10, rx1245_tgt, $I11, 1
-    ne $S10, ":", rx1245_fail
-    add rx1245_pos, 1
+    add $I11, rx1250_pos, 1
+    gt $I11, rx1250_eos, rx1250_fail
+    sub $I11, rx1250_pos, rx1250_off
+    substr $S10, rx1250_tgt, $I11, 1
+    ne $S10, ":", rx1250_fail
+    add rx1250_pos, 1
   # rx subrule "before" subtype=zerowidth negate=
-    rx1245_cur."!cursor_pos"(rx1245_pos)
-    .const 'Sub' $P1250 = "321_1271336396.90314" 
-    capture_lex $P1250
-    $P10 = rx1245_cur."before"($P1250)
-    unless $P10, rx1245_fail
+    rx1250_cur."!cursor_pos"(rx1250_pos)
+    .const 'Sub' $P1255 = "323_1271948667.92136" 
+    capture_lex $P1255
+    $P10 = rx1250_cur."before"($P1255)
+    unless $P10, rx1250_fail
   # rx subrule "LANG" subtype=capture negate=
-    rx1245_cur."!cursor_pos"(rx1245_pos)
-    $P10 = rx1245_cur."LANG"("MAIN", "statement")
-    unless $P10, rx1245_fail
-    rx1245_cur."!mark_push"(0, -1, 0, $P10)
+    rx1250_cur."!cursor_pos"(rx1250_pos)
+    $P10 = rx1250_cur."LANG"("MAIN", "statement")
+    unless $P10, rx1250_fail
+    rx1250_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("statement")
-    rx1245_pos = $P10."pos"()
+    rx1250_pos = $P10."pos"()
   # rx subrule "ws" subtype=method negate=
-    rx1245_cur."!cursor_pos"(rx1245_pos)
-    $P10 = rx1245_cur."ws"()
-    unless $P10, rx1245_fail
-    rx1245_pos = $P10."pos"()
+    rx1250_cur."!cursor_pos"(rx1250_pos)
+    $P10 = rx1250_cur."ws"()
+    unless $P10, rx1250_fail
+    rx1250_pos = $P10."pos"()
   # rx literal  ";"
-    add $I11, rx1245_pos, 1
-    gt $I11, rx1245_eos, rx1245_fail
-    sub $I11, rx1245_pos, rx1245_off
-    substr $S10, rx1245_tgt, $I11, 1
-    ne $S10, ";", rx1245_fail
-    add rx1245_pos, 1
-.annotate "line", 536
+    add $I11, rx1250_pos, 1
+    gt $I11, rx1250_eos, rx1250_fail
+    sub $I11, rx1250_pos, rx1250_off
+    substr $S10, rx1250_tgt, $I11, 1
+    ne $S10, ";", rx1250_fail
+    add rx1250_pos, 1
+.annotate "line", 537
   # rx pass
-    rx1245_cur."!cursor_pass"(rx1245_pos, "metachar:sym<:my>")
-    rx1245_cur."!cursor_debug"("PASS  ", "metachar:sym<:my>", " at pos=", rx1245_pos)
-    .return (rx1245_cur)
-  rx1245_fail:
-.annotate "line", 535
-    (rx1245_rep, rx1245_pos, $I10, $P10) = rx1245_cur."!mark_fail"(0)
-    lt rx1245_pos, -1, rx1245_done
-    eq rx1245_pos, -1, rx1245_fail
-    jump $I10
-  rx1245_done:
-    rx1245_cur."!cursor_fail"()
-    rx1245_cur."!cursor_debug"("FAIL  ", "metachar:sym<:my>")
-    .return (rx1245_cur)
+    rx1250_cur."!cursor_pass"(rx1250_pos, "metachar:sym<:my>")
+    rx1250_cur."!cursor_debug"("PASS  ", "metachar:sym<:my>", " at pos=", rx1250_pos)
+    .return (rx1250_cur)
+  rx1250_fail:
+.annotate "line", 536
+    (rx1250_rep, rx1250_pos, $I10, $P10) = rx1250_cur."!mark_fail"(0)
+    lt rx1250_pos, -1, rx1250_done
+    eq rx1250_pos, -1, rx1250_fail
+    jump $I10
+  rx1250_done:
+    rx1250_cur."!cursor_fail"()
+    rx1250_cur."!cursor_debug"("FAIL  ", "metachar:sym<:my>")
+    .return (rx1250_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<:my>"  :subid("320_1271336396.90314") :method
-.annotate "line", 535
-    new $P1247, "ResizablePMCArray"
-    push $P1247, ":"
-    .return ($P1247)
-.end
-
-
-.namespace ["NQP";"Regex"]
-.sub "_block1249"  :anon :subid("321_1271336396.90314") :method :outer("319_1271336396.90314")
-.annotate "line", 537
-    .local string rx1251_tgt
-    .local int rx1251_pos
-    .local int rx1251_off
-    .local int rx1251_eos
-    .local int rx1251_rep
-    .local pmc rx1251_cur
-    (rx1251_cur, rx1251_pos, rx1251_tgt) = self."!cursor_start"()
-    rx1251_cur."!cursor_debug"("START ", "")
-    .lex unicode:"$\x{a2}", rx1251_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1251_eos, rx1251_tgt
-    set rx1251_off, 0
-    lt rx1251_pos, 2, rx1251_start
-    sub rx1251_off, rx1251_pos, 1
-    substr rx1251_tgt, rx1251_tgt, rx1251_off
-  rx1251_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1252_done
-    goto rxscan1252_scan
-  rxscan1252_loop:
-    ($P10) = rx1251_cur."from"()
-    inc $P10
-    set rx1251_pos, $P10
-    ge rx1251_pos, rx1251_eos, rxscan1252_done
-  rxscan1252_scan:
-    set_addr $I10, rxscan1252_loop
-    rx1251_cur."!mark_push"(0, rx1251_pos, $I10)
-  rxscan1252_done:
-  # rx literal  "my"
-    add $I11, rx1251_pos, 2
-    gt $I11, rx1251_eos, rx1251_fail
-    sub $I11, rx1251_pos, rx1251_off
-    substr $S10, rx1251_tgt, $I11, 2
-    ne $S10, "my", rx1251_fail
-    add rx1251_pos, 2
-  # rx pass
-    rx1251_cur."!cursor_pass"(rx1251_pos, "")
-    rx1251_cur."!cursor_debug"("PASS  ", "", " at pos=", rx1251_pos)
-    .return (rx1251_cur)
-  rx1251_fail:
-    (rx1251_rep, rx1251_pos, $I10, $P10) = rx1251_cur."!mark_fail"(0)
-    lt rx1251_pos, -1, rx1251_done
-    eq rx1251_pos, -1, rx1251_fail
-    jump $I10
-  rx1251_done:
-    rx1251_cur."!cursor_fail"()
-    rx1251_cur."!cursor_debug"("FAIL  ", "")
-    .return (rx1251_cur)
-    .return ()
+.sub "!PREFIX__metachar:sym<:my>"  :subid("322_1271948667.92136") :method
+.annotate "line", 536
+    new $P1252, "ResizablePMCArray"
+    push $P1252, ":"
+    .return ($P1252)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<{ }>"  :subid("322_1271336396.90314") :method :outer("318_1271336396.90314")
-.annotate "line", 535
-    .local string rx1254_tgt
-    .local int rx1254_pos
-    .local int rx1254_off
-    .local int rx1254_eos
-    .local int rx1254_rep
-    .local pmc rx1254_cur
-    (rx1254_cur, rx1254_pos, rx1254_tgt) = self."!cursor_start"()
-    rx1254_cur."!cursor_debug"("START ", "metachar:sym<{ }>")
-    .lex unicode:"$\x{a2}", rx1254_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1254_eos, rx1254_tgt
-    set rx1254_off, 0
-    lt rx1254_pos, 2, rx1254_start
-    sub rx1254_off, rx1254_pos, 1
-    substr rx1254_tgt, rx1254_tgt, rx1254_off
-  rx1254_start:
+.sub "_block1254"  :anon :subid("323_1271948667.92136") :method :outer("321_1271948667.92136")
+.annotate "line", 538
+    .local string rx1256_tgt
+    .local int rx1256_pos
+    .local int rx1256_off
+    .local int rx1256_eos
+    .local int rx1256_rep
+    .local pmc rx1256_cur
+    (rx1256_cur, rx1256_pos, rx1256_tgt) = self."!cursor_start"()
+    rx1256_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx1256_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1256_eos, rx1256_tgt
+    set rx1256_off, 0
+    lt rx1256_pos, 2, rx1256_start
+    sub rx1256_off, rx1256_pos, 1
+    substr rx1256_tgt, rx1256_tgt, rx1256_off
+  rx1256_start:
     $I10 = self.'from'()
     ne $I10, -1, rxscan1257_done
     goto rxscan1257_scan
   rxscan1257_loop:
-    ($P10) = rx1254_cur."from"()
+    ($P10) = rx1256_cur."from"()
     inc $P10
-    set rx1254_pos, $P10
-    ge rx1254_pos, rx1254_eos, rxscan1257_done
+    set rx1256_pos, $P10
+    ge rx1256_pos, rx1256_eos, rxscan1257_done
   rxscan1257_scan:
     set_addr $I10, rxscan1257_loop
-    rx1254_cur."!mark_push"(0, rx1254_pos, $I10)
+    rx1256_cur."!mark_push"(0, rx1256_pos, $I10)
   rxscan1257_done:
-.annotate "line", 541
-  # rx enumcharlist negate=0 zerowidth
-    ge rx1254_pos, rx1254_eos, rx1254_fail
-    sub $I10, rx1254_pos, rx1254_off
-    substr $S10, rx1254_tgt, $I10, 1
-    index $I11, "{", $S10
-    lt $I11, 0, rx1254_fail
-  # rx subrule "codeblock" subtype=capture negate=
-    rx1254_cur."!cursor_pos"(rx1254_pos)
-    $P10 = rx1254_cur."codeblock"()
-    unless $P10, rx1254_fail
-    rx1254_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("codeblock")
-    rx1254_pos = $P10."pos"()
-.annotate "line", 540
-  # rx pass
-    rx1254_cur."!cursor_pass"(rx1254_pos, "metachar:sym<{ }>")
-    rx1254_cur."!cursor_debug"("PASS  ", "metachar:sym<{ }>", " at pos=", rx1254_pos)
-    .return (rx1254_cur)
-  rx1254_fail:
-.annotate "line", 535
-    (rx1254_rep, rx1254_pos, $I10, $P10) = rx1254_cur."!mark_fail"(0)
-    lt rx1254_pos, -1, rx1254_done
-    eq rx1254_pos, -1, rx1254_fail
-    jump $I10
-  rx1254_done:
-    rx1254_cur."!cursor_fail"()
-    rx1254_cur."!cursor_debug"("FAIL  ", "metachar:sym<{ }>")
-    .return (rx1254_cur)
+  # rx literal  "my"
+    add $I11, rx1256_pos, 2
+    gt $I11, rx1256_eos, rx1256_fail
+    sub $I11, rx1256_pos, rx1256_off
+    substr $S10, rx1256_tgt, $I11, 2
+    ne $S10, "my", rx1256_fail
+    add rx1256_pos, 2
+  # rx pass
+    rx1256_cur."!cursor_pass"(rx1256_pos, "")
+    rx1256_cur."!cursor_debug"("PASS  ", "", " at pos=", rx1256_pos)
+    .return (rx1256_cur)
+  rx1256_fail:
+    (rx1256_rep, rx1256_pos, $I10, $P10) = rx1256_cur."!mark_fail"(0)
+    lt rx1256_pos, -1, rx1256_done
+    eq rx1256_pos, -1, rx1256_fail
+    jump $I10
+  rx1256_done:
+    rx1256_cur."!cursor_fail"()
+    rx1256_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx1256_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<{ }>"  :subid("323_1271336396.90314") :method
-.annotate "line", 535
-    new $P1256, "ResizablePMCArray"
-    push $P1256, "{"
-    .return ($P1256)
-.end
-
-
-.namespace ["NQP";"Regex"]
-.sub "assertion:sym<{ }>"  :subid("324_1271336396.90314") :method :outer("318_1271336396.90314")
-.annotate "line", 535
+.sub "metachar:sym<{ }>"  :subid("324_1271948667.92136") :method :outer("320_1271948667.92136")
+.annotate "line", 536
     .local string rx1259_tgt
     .local int rx1259_pos
     .local int rx1259_off
@@ -15431,7 +15430,7 @@
     .local int rx1259_rep
     .local pmc rx1259_cur
     (rx1259_cur, rx1259_pos, rx1259_tgt) = self."!cursor_start"()
-    rx1259_cur."!cursor_debug"("START ", "assertion:sym<{ }>")
+    rx1259_cur."!cursor_debug"("START ", "metachar:sym<{ }>")
     .lex unicode:"$\x{a2}", rx1259_cur
     .local pmc match
     .lex "$/", match
@@ -15453,7 +15452,7 @@
     set_addr $I10, rxscan1262_loop
     rx1259_cur."!mark_push"(0, rx1259_pos, $I10)
   rxscan1262_done:
-.annotate "line", 545
+.annotate "line", 542
   # rx enumcharlist negate=0 zerowidth
     ge rx1259_pos, rx1259_eos, rx1259_fail
     sub $I10, rx1259_pos, rx1259_off
@@ -15467,28 +15466,28 @@
     rx1259_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("codeblock")
     rx1259_pos = $P10."pos"()
-.annotate "line", 544
+.annotate "line", 541
   # rx pass
-    rx1259_cur."!cursor_pass"(rx1259_pos, "assertion:sym<{ }>")
-    rx1259_cur."!cursor_debug"("PASS  ", "assertion:sym<{ }>", " at pos=", rx1259_pos)
+    rx1259_cur."!cursor_pass"(rx1259_pos, "metachar:sym<{ }>")
+    rx1259_cur."!cursor_debug"("PASS  ", "metachar:sym<{ }>", " at pos=", rx1259_pos)
     .return (rx1259_cur)
   rx1259_fail:
-.annotate "line", 535
+.annotate "line", 536
     (rx1259_rep, rx1259_pos, $I10, $P10) = rx1259_cur."!mark_fail"(0)
     lt rx1259_pos, -1, rx1259_done
     eq rx1259_pos, -1, rx1259_fail
     jump $I10
   rx1259_done:
     rx1259_cur."!cursor_fail"()
-    rx1259_cur."!cursor_debug"("FAIL  ", "assertion:sym<{ }>")
+    rx1259_cur."!cursor_debug"("FAIL  ", "metachar:sym<{ }>")
     .return (rx1259_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<{ }>"  :subid("325_1271336396.90314") :method
-.annotate "line", 535
+.sub "!PREFIX__metachar:sym<{ }>"  :subid("325_1271948667.92136") :method
+.annotate "line", 536
     new $P1261, "ResizablePMCArray"
     push $P1261, "{"
     .return ($P1261)
@@ -15496,10 +15495,8 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<name>"  :subid("326_1271336396.90314") :method :outer("318_1271336396.90314")
-.annotate "line", 535
-    .const 'Sub' $P1272 = "328_1271336396.90314" 
-    capture_lex $P1272
+.sub "assertion:sym<{ }>"  :subid("326_1271948667.92136") :method :outer("320_1271948667.92136")
+.annotate "line", 536
     .local string rx1264_tgt
     .local int rx1264_pos
     .local int rx1264_off
@@ -15507,8 +15504,7 @@
     .local int rx1264_rep
     .local pmc rx1264_cur
     (rx1264_cur, rx1264_pos, rx1264_tgt) = self."!cursor_start"()
-    rx1264_cur."!cursor_debug"("START ", "assertion:sym<name>")
-    rx1264_cur."!cursor_caparray"("nibbler", "arglist", "assertion")
+    rx1264_cur."!cursor_debug"("START ", "assertion:sym<{ }>")
     .lex unicode:"$\x{a2}", rx1264_cur
     .local pmc match
     .lex "$/", match
@@ -15530,523 +15526,602 @@
     set_addr $I10, rxscan1267_loop
     rx1264_cur."!mark_push"(0, rx1264_pos, $I10)
   rxscan1267_done:
-.annotate "line", 549
+.annotate "line", 546
+  # rx enumcharlist negate=0 zerowidth
+    ge rx1264_pos, rx1264_eos, rx1264_fail
+    sub $I10, rx1264_pos, rx1264_off
+    substr $S10, rx1264_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx1264_fail
+  # rx subrule "codeblock" subtype=capture negate=
+    rx1264_cur."!cursor_pos"(rx1264_pos)
+    $P10 = rx1264_cur."codeblock"()
+    unless $P10, rx1264_fail
+    rx1264_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("codeblock")
+    rx1264_pos = $P10."pos"()
+.annotate "line", 545
+  # rx pass
+    rx1264_cur."!cursor_pass"(rx1264_pos, "assertion:sym<{ }>")
+    rx1264_cur."!cursor_debug"("PASS  ", "assertion:sym<{ }>", " at pos=", rx1264_pos)
+    .return (rx1264_cur)
+  rx1264_fail:
+.annotate "line", 536
+    (rx1264_rep, rx1264_pos, $I10, $P10) = rx1264_cur."!mark_fail"(0)
+    lt rx1264_pos, -1, rx1264_done
+    eq rx1264_pos, -1, rx1264_fail
+    jump $I10
+  rx1264_done:
+    rx1264_cur."!cursor_fail"()
+    rx1264_cur."!cursor_debug"("FAIL  ", "assertion:sym<{ }>")
+    .return (rx1264_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "!PREFIX__assertion:sym<{ }>"  :subid("327_1271948667.92136") :method
+.annotate "line", 536
+    new $P1266, "ResizablePMCArray"
+    push $P1266, "{"
+    .return ($P1266)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "assertion:sym<name>"  :subid("328_1271948667.92136") :method :outer("320_1271948667.92136")
+.annotate "line", 536
+    .const 'Sub' $P1277 = "330_1271948667.92136" 
+    capture_lex $P1277
+    .local string rx1269_tgt
+    .local int rx1269_pos
+    .local int rx1269_off
+    .local int rx1269_eos
+    .local int rx1269_rep
+    .local pmc rx1269_cur
+    (rx1269_cur, rx1269_pos, rx1269_tgt) = self."!cursor_start"()
+    rx1269_cur."!cursor_debug"("START ", "assertion:sym<name>")
+    rx1269_cur."!cursor_caparray"("nibbler", "arglist", "assertion")
+    .lex unicode:"$\x{a2}", rx1269_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1269_eos, rx1269_tgt
+    set rx1269_off, 0
+    lt rx1269_pos, 2, rx1269_start
+    sub rx1269_off, rx1269_pos, 1
+    substr rx1269_tgt, rx1269_tgt, rx1269_off
+  rx1269_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1272_done
+    goto rxscan1272_scan
+  rxscan1272_loop:
+    ($P10) = rx1269_cur."from"()
+    inc $P10
+    set rx1269_pos, $P10
+    ge rx1269_pos, rx1269_eos, rxscan1272_done
+  rxscan1272_scan:
+    set_addr $I10, rxscan1272_loop
+    rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
+  rxscan1272_done:
+.annotate "line", 550
   # rx subcapture "longname"
-    set_addr $I10, rxcap_1268_fail
-    rx1264_cur."!mark_push"(0, rx1264_pos, $I10)
+    set_addr $I10, rxcap_1273_fail
+    rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
   # rx charclass_q w r 1..-1
-    sub $I10, rx1264_pos, rx1264_off
-    find_not_cclass $I11, 8192, rx1264_tgt, $I10, rx1264_eos
+    sub $I10, rx1269_pos, rx1269_off
+    find_not_cclass $I11, 8192, rx1269_tgt, $I10, rx1269_eos
     add $I12, $I10, 1
-    lt $I11, $I12, rx1264_fail
-    add rx1264_pos, rx1264_off, $I11
-    set_addr $I10, rxcap_1268_fail
-    ($I12, $I11) = rx1264_cur."!mark_peek"($I10)
-    rx1264_cur."!cursor_pos"($I11)
-    ($P10) = rx1264_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1264_pos, "")
-    rx1264_cur."!mark_push"(0, -1, 0, $P10)
+    lt $I11, $I12, rx1269_fail
+    add rx1269_pos, rx1269_off, $I11
+    set_addr $I10, rxcap_1273_fail
+    ($I12, $I11) = rx1269_cur."!mark_peek"($I10)
+    rx1269_cur."!cursor_pos"($I11)
+    ($P10) = rx1269_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1269_pos, "")
+    rx1269_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("longname")
-    goto rxcap_1268_done
-  rxcap_1268_fail:
-    goto rx1264_fail
-  rxcap_1268_done:
-.annotate "line", 556
-  # rx rxquantr1269 ** 0..1
-    set_addr $I1275, rxquantr1269_done
-    rx1264_cur."!mark_push"(0, rx1264_pos, $I1275)
-  rxquantr1269_loop:
-  alt1270_0:
-.annotate "line", 550
-    set_addr $I10, alt1270_1
-    rx1264_cur."!mark_push"(0, rx1264_pos, $I10)
+    goto rxcap_1273_done
+  rxcap_1273_fail:
+    goto rx1269_fail
+  rxcap_1273_done:
+.annotate "line", 557
+  # rx rxquantr1274 ** 0..1
+    set_addr $I1280, rxquantr1274_done
+    rx1269_cur."!mark_push"(0, rx1269_pos, $I1280)
+  rxquantr1274_loop:
+  alt1275_0:
 .annotate "line", 551
-  # rx subrule "before" subtype=zerowidth negate=
-    rx1264_cur."!cursor_pos"(rx1264_pos)
-    .const 'Sub' $P1272 = "328_1271336396.90314" 
-    capture_lex $P1272
-    $P10 = rx1264_cur."before"($P1272)
-    unless $P10, rx1264_fail
-    goto alt1270_end
-  alt1270_1:
-    set_addr $I10, alt1270_2
-    rx1264_cur."!mark_push"(0, rx1264_pos, $I10)
+    set_addr $I10, alt1275_1
+    rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
 .annotate "line", 552
+  # rx subrule "before" subtype=zerowidth negate=
+    rx1269_cur."!cursor_pos"(rx1269_pos)
+    .const 'Sub' $P1277 = "330_1271948667.92136" 
+    capture_lex $P1277
+    $P10 = rx1269_cur."before"($P1277)
+    unless $P10, rx1269_fail
+    goto alt1275_end
+  alt1275_1:
+    set_addr $I10, alt1275_2
+    rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
+.annotate "line", 553
   # rx literal  "="
-    add $I11, rx1264_pos, 1
-    gt $I11, rx1264_eos, rx1264_fail
-    sub $I11, rx1264_pos, rx1264_off
-    substr $S10, rx1264_tgt, $I11, 1
-    ne $S10, "=", rx1264_fail
-    add rx1264_pos, 1
+    add $I11, rx1269_pos, 1
+    gt $I11, rx1269_eos, rx1269_fail
+    sub $I11, rx1269_pos, rx1269_off
+    substr $S10, rx1269_tgt, $I11, 1
+    ne $S10, "=", rx1269_fail
+    add rx1269_pos, 1
   # rx subrule "assertion" subtype=capture negate=
-    rx1264_cur."!cursor_pos"(rx1264_pos)
-    $P10 = rx1264_cur."assertion"()
-    unless $P10, rx1264_fail
-    rx1264_cur."!mark_push"(0, -1, 0, $P10)
+    rx1269_cur."!cursor_pos"(rx1269_pos)
+    $P10 = rx1269_cur."assertion"()
+    unless $P10, rx1269_fail
+    rx1269_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("assertion")
-    rx1264_pos = $P10."pos"()
-    goto alt1270_end
-  alt1270_2:
-    set_addr $I10, alt1270_3
-    rx1264_cur."!mark_push"(0, rx1264_pos, $I10)
-.annotate "line", 553
+    rx1269_pos = $P10."pos"()
+    goto alt1275_end
+  alt1275_2:
+    set_addr $I10, alt1275_3
+    rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
+.annotate "line", 554
   # rx literal  ":"
-    add $I11, rx1264_pos, 1
-    gt $I11, rx1264_eos, rx1264_fail
-    sub $I11, rx1264_pos, rx1264_off
-    substr $S10, rx1264_tgt, $I11, 1
-    ne $S10, ":", rx1264_fail
-    add rx1264_pos, 1
+    add $I11, rx1269_pos, 1
+    gt $I11, rx1269_eos, rx1269_fail
+    sub $I11, rx1269_pos, rx1269_off
+    substr $S10, rx1269_tgt, $I11, 1
+    ne $S10, ":", rx1269_fail
+    add rx1269_pos, 1
   # rx subrule "arglist" subtype=capture negate=
-    rx1264_cur."!cursor_pos"(rx1264_pos)
-    $P10 = rx1264_cur."arglist"()
-    unless $P10, rx1264_fail
-    rx1264_cur."!mark_push"(0, -1, 0, $P10)
+    rx1269_cur."!cursor_pos"(rx1269_pos)
+    $P10 = rx1269_cur."arglist"()
+    unless $P10, rx1269_fail
+    rx1269_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("arglist")
-    rx1264_pos = $P10."pos"()
-    goto alt1270_end
-  alt1270_3:
-    set_addr $I10, alt1270_4
-    rx1264_cur."!mark_push"(0, rx1264_pos, $I10)
-.annotate "line", 554
+    rx1269_pos = $P10."pos"()
+    goto alt1275_end
+  alt1275_3:
+    set_addr $I10, alt1275_4
+    rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
+.annotate "line", 555
   # rx literal  "("
-    add $I11, rx1264_pos, 1
-    gt $I11, rx1264_eos, rx1264_fail
-    sub $I11, rx1264_pos, rx1264_off
-    substr $S10, rx1264_tgt, $I11, 1
-    ne $S10, "(", rx1264_fail
-    add rx1264_pos, 1
+    add $I11, rx1269_pos, 1
+    gt $I11, rx1269_eos, rx1269_fail
+    sub $I11, rx1269_pos, rx1269_off
+    substr $S10, rx1269_tgt, $I11, 1
+    ne $S10, "(", rx1269_fail
+    add rx1269_pos, 1
   # rx subrule "LANG" subtype=capture negate=
-    rx1264_cur."!cursor_pos"(rx1264_pos)
-    $P10 = rx1264_cur."LANG"("MAIN", "arglist")
-    unless $P10, rx1264_fail
-    rx1264_cur."!mark_push"(0, -1, 0, $P10)
+    rx1269_cur."!cursor_pos"(rx1269_pos)
+    $P10 = rx1269_cur."LANG"("MAIN", "arglist")
+    unless $P10, rx1269_fail
+    rx1269_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("arglist")
-    rx1264_pos = $P10."pos"()
+    rx1269_pos = $P10."pos"()
   # rx literal  ")"
-    add $I11, rx1264_pos, 1
-    gt $I11, rx1264_eos, rx1264_fail
-    sub $I11, rx1264_pos, rx1264_off
-    substr $S10, rx1264_tgt, $I11, 1
-    ne $S10, ")", rx1264_fail
-    add rx1264_pos, 1
-    goto alt1270_end
-  alt1270_4:
-.annotate "line", 555
+    add $I11, rx1269_pos, 1
+    gt $I11, rx1269_eos, rx1269_fail
+    sub $I11, rx1269_pos, rx1269_off
+    substr $S10, rx1269_tgt, $I11, 1
+    ne $S10, ")", rx1269_fail
+    add rx1269_pos, 1
+    goto alt1275_end
+  alt1275_4:
+.annotate "line", 556
   # rx subrule "normspace" subtype=method negate=
-    rx1264_cur."!cursor_pos"(rx1264_pos)
-    $P10 = rx1264_cur."normspace"()
-    unless $P10, rx1264_fail
-    rx1264_pos = $P10."pos"()
+    rx1269_cur."!cursor_pos"(rx1269_pos)
+    $P10 = rx1269_cur."normspace"()
+    unless $P10, rx1269_fail
+    rx1269_pos = $P10."pos"()
   # rx subrule "nibbler" subtype=capture negate=
-    rx1264_cur."!cursor_pos"(rx1264_pos)
-    $P10 = rx1264_cur."nibbler"()
-    unless $P10, rx1264_fail
-    rx1264_cur."!mark_push"(0, -1, 0, $P10)
+    rx1269_cur."!cursor_pos"(rx1269_pos)
+    $P10 = rx1269_cur."nibbler"()
+    unless $P10, rx1269_fail
+    rx1269_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("nibbler")
-    rx1264_pos = $P10."pos"()
-  alt1270_end:
-.annotate "line", 556
-    (rx1264_rep) = rx1264_cur."!mark_commit"($I1275)
-  rxquantr1269_done:
-.annotate "line", 548
+    rx1269_pos = $P10."pos"()
+  alt1275_end:
+.annotate "line", 557
+    (rx1269_rep) = rx1269_cur."!mark_commit"($I1280)
+  rxquantr1274_done:
+.annotate "line", 549
   # rx pass
-    rx1264_cur."!cursor_pass"(rx1264_pos, "assertion:sym<name>")
-    rx1264_cur."!cursor_debug"("PASS  ", "assertion:sym<name>", " at pos=", rx1264_pos)
-    .return (rx1264_cur)
-  rx1264_fail:
-.annotate "line", 535
-    (rx1264_rep, rx1264_pos, $I10, $P10) = rx1264_cur."!mark_fail"(0)
-    lt rx1264_pos, -1, rx1264_done
-    eq rx1264_pos, -1, rx1264_fail
-    jump $I10
-  rx1264_done:
-    rx1264_cur."!cursor_fail"()
-    rx1264_cur."!cursor_debug"("FAIL  ", "assertion:sym<name>")
-    .return (rx1264_cur)
+    rx1269_cur."!cursor_pass"(rx1269_pos, "assertion:sym<name>")
+    rx1269_cur."!cursor_debug"("PASS  ", "assertion:sym<name>", " at pos=", rx1269_pos)
+    .return (rx1269_cur)
+  rx1269_fail:
+.annotate "line", 536
+    (rx1269_rep, rx1269_pos, $I10, $P10) = rx1269_cur."!mark_fail"(0)
+    lt rx1269_pos, -1, rx1269_done
+    eq rx1269_pos, -1, rx1269_fail
+    jump $I10
+  rx1269_done:
+    rx1269_cur."!cursor_fail"()
+    rx1269_cur."!cursor_debug"("FAIL  ", "assertion:sym<name>")
+    .return (rx1269_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<name>"  :subid("327_1271336396.90314") :method
-.annotate "line", 535
-    new $P1266, "ResizablePMCArray"
-    push $P1266, ""
-    .return ($P1266)
+.sub "!PREFIX__assertion:sym<name>"  :subid("329_1271948667.92136") :method
+.annotate "line", 536
+    new $P1271, "ResizablePMCArray"
+    push $P1271, ""
+    .return ($P1271)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1271"  :anon :subid("328_1271336396.90314") :method :outer("326_1271336396.90314")
-.annotate "line", 551
-    .local string rx1273_tgt
-    .local int rx1273_pos
-    .local int rx1273_off
-    .local int rx1273_eos
-    .local int rx1273_rep
-    .local pmc rx1273_cur
-    (rx1273_cur, rx1273_pos, rx1273_tgt) = self."!cursor_start"()
-    rx1273_cur."!cursor_debug"("START ", "")
-    .lex unicode:"$\x{a2}", rx1273_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1273_eos, rx1273_tgt
-    set rx1273_off, 0
-    lt rx1273_pos, 2, rx1273_start
-    sub rx1273_off, rx1273_pos, 1
-    substr rx1273_tgt, rx1273_tgt, rx1273_off
-  rx1273_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1274_done
-    goto rxscan1274_scan
-  rxscan1274_loop:
-    ($P10) = rx1273_cur."from"()
-    inc $P10
-    set rx1273_pos, $P10
-    ge rx1273_pos, rx1273_eos, rxscan1274_done
-  rxscan1274_scan:
-    set_addr $I10, rxscan1274_loop
-    rx1273_cur."!mark_push"(0, rx1273_pos, $I10)
-  rxscan1274_done:
+.sub "_block1276"  :anon :subid("330_1271948667.92136") :method :outer("328_1271948667.92136")
+.annotate "line", 552
+    .local string rx1278_tgt
+    .local int rx1278_pos
+    .local int rx1278_off
+    .local int rx1278_eos
+    .local int rx1278_rep
+    .local pmc rx1278_cur
+    (rx1278_cur, rx1278_pos, rx1278_tgt) = self."!cursor_start"()
+    rx1278_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx1278_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1278_eos, rx1278_tgt
+    set rx1278_off, 0
+    lt rx1278_pos, 2, rx1278_start
+    sub rx1278_off, rx1278_pos, 1
+    substr rx1278_tgt, rx1278_tgt, rx1278_off
+  rx1278_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1279_done
+    goto rxscan1279_scan
+  rxscan1279_loop:
+    ($P10) = rx1278_cur."from"()
+    inc $P10
+    set rx1278_pos, $P10
+    ge rx1278_pos, rx1278_eos, rxscan1279_done
+  rxscan1279_scan:
+    set_addr $I10, rxscan1279_loop
+    rx1278_cur."!mark_push"(0, rx1278_pos, $I10)
+  rxscan1279_done:
   # rx literal  ">"
-    add $I11, rx1273_pos, 1
-    gt $I11, rx1273_eos, rx1273_fail
-    sub $I11, rx1273_pos, rx1273_off
-    substr $S10, rx1273_tgt, $I11, 1
-    ne $S10, ">", rx1273_fail
-    add rx1273_pos, 1
-  # rx pass
-    rx1273_cur."!cursor_pass"(rx1273_pos, "")
-    rx1273_cur."!cursor_debug"("PASS  ", "", " at pos=", rx1273_pos)
-    .return (rx1273_cur)
-  rx1273_fail:
-    (rx1273_rep, rx1273_pos, $I10, $P10) = rx1273_cur."!mark_fail"(0)
-    lt rx1273_pos, -1, rx1273_done
-    eq rx1273_pos, -1, rx1273_fail
-    jump $I10
-  rx1273_done:
-    rx1273_cur."!cursor_fail"()
-    rx1273_cur."!cursor_debug"("FAIL  ", "")
-    .return (rx1273_cur)
+    add $I11, rx1278_pos, 1
+    gt $I11, rx1278_eos, rx1278_fail
+    sub $I11, rx1278_pos, rx1278_off
+    substr $S10, rx1278_tgt, $I11, 1
+    ne $S10, ">", rx1278_fail
+    add rx1278_pos, 1
+  # rx pass
+    rx1278_cur."!cursor_pass"(rx1278_pos, "")
+    rx1278_cur."!cursor_debug"("PASS  ", "", " at pos=", rx1278_pos)
+    .return (rx1278_cur)
+  rx1278_fail:
+    (rx1278_rep, rx1278_pos, $I10, $P10) = rx1278_cur."!mark_fail"(0)
+    lt rx1278_pos, -1, rx1278_done
+    eq rx1278_pos, -1, rx1278_fail
+    jump $I10
+  rx1278_done:
+    rx1278_cur."!cursor_fail"()
+    rx1278_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx1278_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "codeblock"  :subid("329_1271336396.90314") :method :outer("318_1271336396.90314")
-.annotate "line", 535
-    .local string rx1277_tgt
-    .local int rx1277_pos
-    .local int rx1277_off
-    .local int rx1277_eos
-    .local int rx1277_rep
-    .local pmc rx1277_cur
-    (rx1277_cur, rx1277_pos, rx1277_tgt) = self."!cursor_start"()
-    rx1277_cur."!cursor_debug"("START ", "codeblock")
-    .lex unicode:"$\x{a2}", rx1277_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1277_eos, rx1277_tgt
-    set rx1277_off, 0
-    lt rx1277_pos, 2, rx1277_start
-    sub rx1277_off, rx1277_pos, 1
-    substr rx1277_tgt, rx1277_tgt, rx1277_off
-  rx1277_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1281_done
-    goto rxscan1281_scan
-  rxscan1281_loop:
-    ($P10) = rx1277_cur."from"()
-    inc $P10
-    set rx1277_pos, $P10
-    ge rx1277_pos, rx1277_eos, rxscan1281_done
-  rxscan1281_scan:
-    set_addr $I10, rxscan1281_loop
-    rx1277_cur."!mark_push"(0, rx1277_pos, $I10)
-  rxscan1281_done:
-.annotate "line", 561
+.sub "codeblock"  :subid("331_1271948667.92136") :method :outer("320_1271948667.92136")
+.annotate "line", 536
+    .local string rx1282_tgt
+    .local int rx1282_pos
+    .local int rx1282_off
+    .local int rx1282_eos
+    .local int rx1282_rep
+    .local pmc rx1282_cur
+    (rx1282_cur, rx1282_pos, rx1282_tgt) = self."!cursor_start"()
+    rx1282_cur."!cursor_debug"("START ", "codeblock")
+    .lex unicode:"$\x{a2}", rx1282_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1282_eos, rx1282_tgt
+    set rx1282_off, 0
+    lt rx1282_pos, 2, rx1282_start
+    sub rx1282_off, rx1282_pos, 1
+    substr rx1282_tgt, rx1282_tgt, rx1282_off
+  rx1282_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1286_done
+    goto rxscan1286_scan
+  rxscan1286_loop:
+    ($P10) = rx1282_cur."from"()
+    inc $P10
+    set rx1282_pos, $P10
+    ge rx1282_pos, rx1282_eos, rxscan1286_done
+  rxscan1286_scan:
+    set_addr $I10, rxscan1286_loop
+    rx1282_cur."!mark_push"(0, rx1282_pos, $I10)
+  rxscan1286_done:
+.annotate "line", 562
   # rx subrule "LANG" subtype=capture negate=
-    rx1277_cur."!cursor_pos"(rx1277_pos)
-    $P10 = rx1277_cur."LANG"("MAIN", "pblock")
-    unless $P10, rx1277_fail
-    rx1277_cur."!mark_push"(0, -1, 0, $P10)
+    rx1282_cur."!cursor_pos"(rx1282_pos)
+    $P10 = rx1282_cur."LANG"("MAIN", "pblock")
+    unless $P10, rx1282_fail
+    rx1282_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("block")
-    rx1277_pos = $P10."pos"()
-.annotate "line", 560
+    rx1282_pos = $P10."pos"()
+.annotate "line", 561
   # rx pass
-    rx1277_cur."!cursor_pass"(rx1277_pos, "codeblock")
-    rx1277_cur."!cursor_debug"("PASS  ", "codeblock", " at pos=", rx1277_pos)
-    .return (rx1277_cur)
-  rx1277_fail:
-.annotate "line", 535
-    (rx1277_rep, rx1277_pos, $I10, $P10) = rx1277_cur."!mark_fail"(0)
-    lt rx1277_pos, -1, rx1277_done
-    eq rx1277_pos, -1, rx1277_fail
-    jump $I10
-  rx1277_done:
-    rx1277_cur."!cursor_fail"()
-    rx1277_cur."!cursor_debug"("FAIL  ", "codeblock")
-    .return (rx1277_cur)
+    rx1282_cur."!cursor_pass"(rx1282_pos, "codeblock")
+    rx1282_cur."!cursor_debug"("PASS  ", "codeblock", " at pos=", rx1282_pos)
+    .return (rx1282_cur)
+  rx1282_fail:
+.annotate "line", 536
+    (rx1282_rep, rx1282_pos, $I10, $P10) = rx1282_cur."!mark_fail"(0)
+    lt rx1282_pos, -1, rx1282_done
+    eq rx1282_pos, -1, rx1282_fail
+    jump $I10
+  rx1282_done:
+    rx1282_cur."!cursor_fail"()
+    rx1282_cur."!cursor_debug"("FAIL  ", "codeblock")
+    .return (rx1282_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__codeblock"  :subid("330_1271336396.90314") :method
-.annotate "line", 535
-    $P1279 = self."!PREFIX__!subrule"("block", "")
-    new $P1280, "ResizablePMCArray"
-    push $P1280, $P1279
-    .return ($P1280)
+.sub "!PREFIX__codeblock"  :subid("332_1271948667.92136") :method
+.annotate "line", 536
+    $P1284 = self."!PREFIX__!subrule"("block", "")
+    new $P1285, "ResizablePMCArray"
+    push $P1285, $P1284
+    .return ($P1285)
 .end
 
 ### .include 'gen/nqp-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271336409.53729")
+.sub "_block11"  :anon :subid("10_1271948680.36754")
 .annotate "line", 0
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     capture_lex $P14
 .annotate "line", 3
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     capture_lex $P14
-    $P2168 = $P14()
+    $P2175 = $P14()
 .annotate "line", 1
-    .return ($P2168)
+    .return ($P2175)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post126") :outer("10_1271336409.53729")
+.sub "" :load :init :subid("post127") :outer("10_1271948680.36754")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271336409.53729" 
+    .const 'Sub' $P12 = "10_1271948680.36754" 
     .local pmc block
     set block, $P12
-    $P2169 = get_root_global ["parrot"], "P6metaclass"
-    $P2169."new_class"("NQP::Actions", "HLL::Actions" :named("parent"))
+    $P2176 = get_root_global ["parrot"], "P6metaclass"
+    $P2176."new_class"("NQP::Actions", "HLL::Actions" :named("parent"))
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block13"  :subid("11_1271336409.53729") :outer("10_1271336409.53729")
+.sub "_block13"  :subid("11_1271948680.36754") :outer("10_1271948680.36754")
 .annotate "line", 3
-    .const 'Sub' $P2164 = "125_1271336409.53729" 
-    capture_lex $P2164
-    get_hll_global $P2100, ["NQP";"RegexActions"], "_block2099" 
-    capture_lex $P2100
-    .const 'Sub' $P2089 = "119_1271336409.53729" 
-    capture_lex $P2089
-    .const 'Sub' $P2077 = "118_1271336409.53729" 
-    capture_lex $P2077
-    .const 'Sub' $P2067 = "117_1271336409.53729" 
-    capture_lex $P2067
-    .const 'Sub' $P2057 = "116_1271336409.53729" 
-    capture_lex $P2057
-    .const 'Sub' $P2047 = "115_1271336409.53729" 
+    .const 'Sub' $P2171 = "126_1271948680.36754" 
+    capture_lex $P2171
+    get_hll_global $P2107, ["NQP";"RegexActions"], "_block2106" 
+    capture_lex $P2107
+    .const 'Sub' $P2096 = "120_1271948680.36754" 
+    capture_lex $P2096
+    .const 'Sub' $P2084 = "119_1271948680.36754" 
+    capture_lex $P2084
+    .const 'Sub' $P2074 = "118_1271948680.36754" 
+    capture_lex $P2074
+    .const 'Sub' $P2064 = "117_1271948680.36754" 
+    capture_lex $P2064
+    .const 'Sub' $P2054 = "116_1271948680.36754" 
+    capture_lex $P2054
+    .const 'Sub' $P2047 = "115_1271948680.36754" 
     capture_lex $P2047
-    .const 'Sub' $P2033 = "114_1271336409.53729" 
+    .const 'Sub' $P2033 = "114_1271948680.36754" 
     capture_lex $P2033
-    .const 'Sub' $P2023 = "113_1271336409.53729" 
+    .const 'Sub' $P2023 = "113_1271948680.36754" 
     capture_lex $P2023
-    .const 'Sub' $P1986 = "112_1271336409.53729" 
+    .const 'Sub' $P1986 = "112_1271948680.36754" 
     capture_lex $P1986
-    .const 'Sub' $P1972 = "111_1271336409.53729" 
+    .const 'Sub' $P1972 = "111_1271948680.36754" 
     capture_lex $P1972
-    .const 'Sub' $P1962 = "110_1271336409.53729" 
+    .const 'Sub' $P1962 = "110_1271948680.36754" 
     capture_lex $P1962
-    .const 'Sub' $P1952 = "109_1271336409.53729" 
+    .const 'Sub' $P1952 = "109_1271948680.36754" 
     capture_lex $P1952
-    .const 'Sub' $P1942 = "108_1271336409.53729" 
+    .const 'Sub' $P1942 = "108_1271948680.36754" 
     capture_lex $P1942
-    .const 'Sub' $P1932 = "107_1271336409.53729" 
+    .const 'Sub' $P1932 = "107_1271948680.36754" 
     capture_lex $P1932
-    .const 'Sub' $P1922 = "106_1271336409.53729" 
+    .const 'Sub' $P1922 = "106_1271948680.36754" 
     capture_lex $P1922
-    .const 'Sub' $P1894 = "105_1271336409.53729" 
+    .const 'Sub' $P1894 = "105_1271948680.36754" 
     capture_lex $P1894
-    .const 'Sub' $P1877 = "104_1271336409.53729" 
+    .const 'Sub' $P1877 = "104_1271948680.36754" 
     capture_lex $P1877
-    .const 'Sub' $P1867 = "103_1271336409.53729" 
+    .const 'Sub' $P1867 = "103_1271948680.36754" 
     capture_lex $P1867
-    .const 'Sub' $P1854 = "102_1271336409.53729" 
+    .const 'Sub' $P1854 = "102_1271948680.36754" 
     capture_lex $P1854
-    .const 'Sub' $P1841 = "101_1271336409.53729" 
+    .const 'Sub' $P1841 = "101_1271948680.36754" 
     capture_lex $P1841
-    .const 'Sub' $P1828 = "100_1271336409.53729" 
+    .const 'Sub' $P1828 = "100_1271948680.36754" 
     capture_lex $P1828
-    .const 'Sub' $P1818 = "99_1271336409.53729" 
+    .const 'Sub' $P1818 = "99_1271948680.36754" 
     capture_lex $P1818
-    .const 'Sub' $P1789 = "98_1271336409.53729" 
+    .const 'Sub' $P1789 = "98_1271948680.36754" 
     capture_lex $P1789
-    .const 'Sub' $P1769 = "97_1271336409.53729" 
+    .const 'Sub' $P1769 = "97_1271948680.36754" 
     capture_lex $P1769
-    .const 'Sub' $P1759 = "96_1271336409.53729" 
+    .const 'Sub' $P1759 = "96_1271948680.36754" 
     capture_lex $P1759
-    .const 'Sub' $P1749 = "95_1271336409.53729" 
+    .const 'Sub' $P1749 = "95_1271948680.36754" 
     capture_lex $P1749
-    .const 'Sub' $P1722 = "94_1271336409.53729" 
+    .const 'Sub' $P1722 = "94_1271948680.36754" 
     capture_lex $P1722
-    .const 'Sub' $P1704 = "93_1271336409.53729" 
+    .const 'Sub' $P1704 = "93_1271948680.36754" 
     capture_lex $P1704
-    .const 'Sub' $P1694 = "92_1271336409.53729" 
+    .const 'Sub' $P1694 = "92_1271948680.36754" 
     capture_lex $P1694
-    .const 'Sub' $P1610 = "89_1271336409.53729" 
+    .const 'Sub' $P1610 = "89_1271948680.36754" 
     capture_lex $P1610
-    .const 'Sub' $P1600 = "88_1271336409.53729" 
+    .const 'Sub' $P1600 = "88_1271948680.36754" 
     capture_lex $P1600
-    .const 'Sub' $P1571 = "87_1271336409.53729" 
+    .const 'Sub' $P1571 = "87_1271948680.36754" 
     capture_lex $P1571
-    .const 'Sub' $P1529 = "86_1271336409.53729" 
+    .const 'Sub' $P1529 = "86_1271948680.36754" 
     capture_lex $P1529
-    .const 'Sub' $P1513 = "85_1271336409.53729" 
+    .const 'Sub' $P1513 = "85_1271948680.36754" 
     capture_lex $P1513
-    .const 'Sub' $P1504 = "84_1271336409.53729" 
+    .const 'Sub' $P1504 = "84_1271948680.36754" 
     capture_lex $P1504
-    .const 'Sub' $P1472 = "83_1271336409.53729" 
+    .const 'Sub' $P1472 = "83_1271948680.36754" 
     capture_lex $P1472
-    .const 'Sub' $P1373 = "80_1271336409.53729" 
+    .const 'Sub' $P1373 = "80_1271948680.36754" 
     capture_lex $P1373
-    .const 'Sub' $P1356 = "79_1271336409.53729" 
+    .const 'Sub' $P1356 = "79_1271948680.36754" 
     capture_lex $P1356
-    .const 'Sub' $P1336 = "78_1271336409.53729" 
+    .const 'Sub' $P1336 = "78_1271948680.36754" 
     capture_lex $P1336
-    .const 'Sub' $P1252 = "77_1271336409.53729" 
+    .const 'Sub' $P1252 = "77_1271948680.36754" 
     capture_lex $P1252
-    .const 'Sub' $P1228 = "75_1271336409.53729" 
+    .const 'Sub' $P1228 = "75_1271948680.36754" 
     capture_lex $P1228
-    .const 'Sub' $P1194 = "73_1271336409.53729" 
+    .const 'Sub' $P1194 = "73_1271948680.36754" 
     capture_lex $P1194
-    .const 'Sub' $P1144 = "71_1271336409.53729" 
+    .const 'Sub' $P1144 = "71_1271948680.36754" 
     capture_lex $P1144
-    .const 'Sub' $P1134 = "70_1271336409.53729" 
+    .const 'Sub' $P1134 = "70_1271948680.36754" 
     capture_lex $P1134
-    .const 'Sub' $P1124 = "69_1271336409.53729" 
+    .const 'Sub' $P1124 = "69_1271948680.36754" 
     capture_lex $P1124
-    .const 'Sub' $P1053 = "67_1271336409.53729" 
+    .const 'Sub' $P1053 = "67_1271948680.36754" 
     capture_lex $P1053
-    .const 'Sub' $P1036 = "66_1271336409.53729" 
+    .const 'Sub' $P1036 = "66_1271948680.36754" 
     capture_lex $P1036
-    .const 'Sub' $P1026 = "65_1271336409.53729" 
+    .const 'Sub' $P1026 = "65_1271948680.36754" 
     capture_lex $P1026
-    .const 'Sub' $P1016 = "64_1271336409.53729" 
+    .const 'Sub' $P1016 = "64_1271948680.36754" 
     capture_lex $P1016
-    .const 'Sub' $P1006 = "63_1271336409.53729" 
+    .const 'Sub' $P1006 = "63_1271948680.36754" 
     capture_lex $P1006
-    .const 'Sub' $P982 = "62_1271336409.53729" 
+    .const 'Sub' $P982 = "62_1271948680.36754" 
     capture_lex $P982
-    .const 'Sub' $P929 = "61_1271336409.53729" 
+    .const 'Sub' $P929 = "61_1271948680.36754" 
     capture_lex $P929
-    .const 'Sub' $P919 = "60_1271336409.53729" 
+    .const 'Sub' $P919 = "60_1271948680.36754" 
     capture_lex $P919
-    .const 'Sub' $P830 = "58_1271336409.53729" 
+    .const 'Sub' $P830 = "58_1271948680.36754" 
     capture_lex $P830
-    .const 'Sub' $P804 = "57_1271336409.53729" 
+    .const 'Sub' $P804 = "57_1271948680.36754" 
     capture_lex $P804
-    .const 'Sub' $P788 = "56_1271336409.53729" 
+    .const 'Sub' $P788 = "56_1271948680.36754" 
     capture_lex $P788
-    .const 'Sub' $P778 = "55_1271336409.53729" 
+    .const 'Sub' $P778 = "55_1271948680.36754" 
     capture_lex $P778
-    .const 'Sub' $P768 = "54_1271336409.53729" 
+    .const 'Sub' $P768 = "54_1271948680.36754" 
     capture_lex $P768
-    .const 'Sub' $P758 = "53_1271336409.53729" 
+    .const 'Sub' $P758 = "53_1271948680.36754" 
     capture_lex $P758
-    .const 'Sub' $P748 = "52_1271336409.53729" 
+    .const 'Sub' $P748 = "52_1271948680.36754" 
     capture_lex $P748
-    .const 'Sub' $P738 = "51_1271336409.53729" 
+    .const 'Sub' $P738 = "51_1271948680.36754" 
     capture_lex $P738
-    .const 'Sub' $P728 = "50_1271336409.53729" 
+    .const 'Sub' $P728 = "50_1271948680.36754" 
     capture_lex $P728
-    .const 'Sub' $P718 = "49_1271336409.53729" 
+    .const 'Sub' $P718 = "49_1271948680.36754" 
     capture_lex $P718
-    .const 'Sub' $P708 = "48_1271336409.53729" 
+    .const 'Sub' $P708 = "48_1271948680.36754" 
     capture_lex $P708
-    .const 'Sub' $P698 = "47_1271336409.53729" 
+    .const 'Sub' $P698 = "47_1271948680.36754" 
     capture_lex $P698
-    .const 'Sub' $P688 = "46_1271336409.53729" 
+    .const 'Sub' $P688 = "46_1271948680.36754" 
     capture_lex $P688
-    .const 'Sub' $P678 = "45_1271336409.53729" 
+    .const 'Sub' $P678 = "45_1271948680.36754" 
     capture_lex $P678
-    .const 'Sub' $P668 = "44_1271336409.53729" 
+    .const 'Sub' $P668 = "44_1271948680.36754" 
     capture_lex $P668
-    .const 'Sub' $P658 = "43_1271336409.53729" 
+    .const 'Sub' $P658 = "43_1271948680.36754" 
     capture_lex $P658
-    .const 'Sub' $P640 = "42_1271336409.53729" 
+    .const 'Sub' $P640 = "42_1271948680.36754" 
     capture_lex $P640
-    .const 'Sub' $P605 = "41_1271336409.53729" 
+    .const 'Sub' $P605 = "41_1271948680.36754" 
     capture_lex $P605
-    .const 'Sub' $P589 = "40_1271336409.53729" 
+    .const 'Sub' $P589 = "40_1271948680.36754" 
     capture_lex $P589
-    .const 'Sub' $P568 = "39_1271336409.53729" 
+    .const 'Sub' $P568 = "39_1271948680.36754" 
     capture_lex $P568
-    .const 'Sub' $P548 = "38_1271336409.53729" 
+    .const 'Sub' $P548 = "38_1271948680.36754" 
     capture_lex $P548
-    .const 'Sub' $P535 = "37_1271336409.53729" 
+    .const 'Sub' $P535 = "37_1271948680.36754" 
     capture_lex $P535
-    .const 'Sub' $P509 = "36_1271336409.53729" 
+    .const 'Sub' $P509 = "36_1271948680.36754" 
     capture_lex $P509
-    .const 'Sub' $P473 = "35_1271336409.53729" 
+    .const 'Sub' $P473 = "35_1271948680.36754" 
     capture_lex $P473
-    .const 'Sub' $P456 = "34_1271336409.53729" 
+    .const 'Sub' $P456 = "34_1271948680.36754" 
     capture_lex $P456
-    .const 'Sub' $P442 = "33_1271336409.53729" 
+    .const 'Sub' $P442 = "33_1271948680.36754" 
     capture_lex $P442
-    .const 'Sub' $P389 = "31_1271336409.53729" 
+    .const 'Sub' $P389 = "31_1271948680.36754" 
     capture_lex $P389
-    .const 'Sub' $P376 = "30_1271336409.53729" 
+    .const 'Sub' $P376 = "30_1271948680.36754" 
     capture_lex $P376
-    .const 'Sub' $P357 = "29_1271336409.53729" 
+    .const 'Sub' $P357 = "29_1271948680.36754" 
     capture_lex $P357
-    .const 'Sub' $P347 = "28_1271336409.53729" 
+    .const 'Sub' $P347 = "28_1271948680.36754" 
     capture_lex $P347
-    .const 'Sub' $P337 = "27_1271336409.53729" 
+    .const 'Sub' $P337 = "27_1271948680.36754" 
     capture_lex $P337
-    .const 'Sub' $P321 = "26_1271336409.53729" 
+    .const 'Sub' $P321 = "26_1271948680.36754" 
     capture_lex $P321
-    .const 'Sub' $P261 = "24_1271336409.53729" 
+    .const 'Sub' $P261 = "24_1271948680.36754" 
     capture_lex $P261
-    .const 'Sub' $P212 = "22_1271336409.53729" 
+    .const 'Sub' $P212 = "22_1271948680.36754" 
     capture_lex $P212
-    .const 'Sub' $P193 = "21_1271336409.53729" 
+    .const 'Sub' $P193 = "21_1271948680.36754" 
     capture_lex $P193
-    .const 'Sub' $P160 = "20_1271336409.53729" 
+    .const 'Sub' $P160 = "20_1271948680.36754" 
     capture_lex $P160
-    .const 'Sub' $P150 = "19_1271336409.53729" 
+    .const 'Sub' $P150 = "19_1271948680.36754" 
     capture_lex $P150
-    .const 'Sub' $P96 = "18_1271336409.53729" 
+    .const 'Sub' $P96 = "18_1271948680.36754" 
     capture_lex $P96
-    .const 'Sub' $P81 = "17_1271336409.53729" 
+    .const 'Sub' $P81 = "17_1271948680.36754" 
     capture_lex $P81
-    .const 'Sub' $P61 = "16_1271336409.53729" 
+    .const 'Sub' $P61 = "16_1271948680.36754" 
     capture_lex $P61
-    .const 'Sub' $P26 = "13_1271336409.53729" 
+    .const 'Sub' $P26 = "13_1271948680.36754" 
     capture_lex $P26
-    .const 'Sub' $P16 = "12_1271336409.53729" 
+    .const 'Sub' $P16 = "12_1271948680.36754" 
     capture_lex $P16
     get_global $P15, "@BLOCK"
-    unless_null $P15, vivify_129
+    unless_null $P15, vivify_130
     $P15 = root_new ['parrot';'ResizablePMCArray']
     set_global "@BLOCK", $P15
-  vivify_129:
+  vivify_130:
 .annotate "line", 9
-    .const 'Sub' $P16 = "12_1271336409.53729" 
+    .const 'Sub' $P16 = "12_1271948680.36754" 
     capture_lex $P16
     .lex "xblock_immediate", $P16
 .annotate "line", 14
-    .const 'Sub' $P26 = "13_1271336409.53729" 
+    .const 'Sub' $P26 = "13_1271948680.36754" 
     capture_lex $P26
     .lex "block_immediate", $P26
 .annotate "line", 24
-    .const 'Sub' $P61 = "16_1271336409.53729" 
+    .const 'Sub' $P61 = "16_1271948680.36754" 
     capture_lex $P61
     .lex "vivitype", $P61
 .annotate "line", 43
-    .const 'Sub' $P81 = "17_1271336409.53729" 
+    .const 'Sub' $P81 = "17_1271948680.36754" 
     capture_lex $P81
     .lex "colonpair_str", $P81
 .annotate "line", 190
-    .const 'Sub' $P96 = "18_1271336409.53729" 
+    .const 'Sub' $P96 = "18_1271948680.36754" 
     capture_lex $P96
     .lex "push_block_handler", $P96
 .annotate "line", 3
@@ -16059,47 +16134,47 @@
     find_lex $P192, "colonpair_str"
 .annotate "line", 183
     find_lex $P588, "push_block_handler"
-.annotate "line", 768
-    get_hll_global $P2100, ["NQP";"RegexActions"], "_block2099" 
-    capture_lex $P2100
-    $P2162 = $P2100()
+.annotate "line", 769
+    get_hll_global $P2107, ["NQP";"RegexActions"], "_block2106" 
+    capture_lex $P2107
+    $P2169 = $P2107()
 .annotate "line", 3
-    .return ($P2162)
+    .return ($P2169)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "" :load :init :subid("post127") :outer("11_1271336409.53729")
+.sub "" :load :init :subid("post128") :outer("11_1271948680.36754")
 .annotate "line", 3
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     .local pmc block
     set block, $P14
 .annotate "line", 5
-    .const 'Sub' $P2164 = "125_1271336409.53729" 
-    capture_lex $P2164
-    $P2164()
-    $P2167 = get_root_global ["parrot"], "P6metaclass"
-    $P2167."new_class"("NQP::RegexActions", "Regex::P6Regex::Actions" :named("parent"))
+    .const 'Sub' $P2171 = "126_1271948680.36754" 
+    capture_lex $P2171
+    $P2171()
+    $P2174 = get_root_global ["parrot"], "P6metaclass"
+    $P2174."new_class"("NQP::RegexActions", "Regex::P6Regex::Actions" :named("parent"))
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block2163"  :anon :subid("125_1271336409.53729") :outer("11_1271336409.53729")
+.sub "_block2170"  :anon :subid("126_1271948680.36754") :outer("11_1271948680.36754")
 .annotate "line", 6
-    get_global $P2165, "@BLOCK"
-    unless_null $P2165, vivify_128
-    $P2165 = root_new ['parrot';'ResizablePMCArray']
-    set_global "@BLOCK", $P2165
-  vivify_128:
- $P2166 = new ['ResizablePMCArray'] 
-    set_global "@BLOCK", $P2166
+    get_global $P2172, "@BLOCK"
+    unless_null $P2172, vivify_129
+    $P2172 = root_new ['parrot';'ResizablePMCArray']
+    set_global "@BLOCK", $P2172
+  vivify_129:
+ $P2173 = new ['ResizablePMCArray'] 
+    set_global "@BLOCK", $P2173
 .annotate "line", 5
-    .return ($P2166)
+    .return ($P2173)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "xblock_immediate"  :subid("12_1271336409.53729") :outer("11_1271336409.53729")
+.sub "xblock_immediate"  :subid("12_1271948680.36754") :outer("11_1271948680.36754")
     .param pmc param_19
 .annotate "line", 9
     new $P18, 'ExceptionHandler'
@@ -16109,19 +16184,19 @@
     .lex "$xblock", param_19
 .annotate "line", 10
     find_lex $P20, "$xblock"
-    unless_null $P20, vivify_130
+    unless_null $P20, vivify_131
     $P20 = root_new ['parrot';'ResizablePMCArray']
-  vivify_130:
+  vivify_131:
     set $P21, $P20[1]
-    unless_null $P21, vivify_131
+    unless_null $P21, vivify_132
     new $P21, "Undef"
-  vivify_131:
+  vivify_132:
     $P22 = "block_immediate"($P21)
     find_lex $P23, "$xblock"
-    unless_null $P23, vivify_132
+    unless_null $P23, vivify_133
     $P23 = root_new ['parrot';'ResizablePMCArray']
     store_lex "$xblock", $P23
-  vivify_132:
+  vivify_133:
     set $P23[1], $P22
     find_lex $P24, "$xblock"
 .annotate "line", 9
@@ -16135,10 +16210,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "block_immediate"  :subid("13_1271336409.53729") :outer("11_1271336409.53729")
+.sub "block_immediate"  :subid("13_1271948680.36754") :outer("11_1271948680.36754")
     .param pmc param_29
 .annotate "line", 14
-    .const 'Sub' $P39 = "14_1271336409.53729" 
+    .const 'Sub' $P39 = "14_1271948680.36754" 
     capture_lex $P39
     new $P28, 'ExceptionHandler'
     set_addr $P28, control_27
@@ -16160,7 +16235,7 @@
     set $P32, $P37
   unless_33_end:
     if $P32, unless_31_end
-    .const 'Sub' $P39 = "14_1271336409.53729" 
+    .const 'Sub' $P39 = "14_1271948680.36754" 
     capture_lex $P39
     $P39()
   unless_31_end:
@@ -16176,9 +16251,9 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block38"  :anon :subid("14_1271336409.53729") :outer("13_1271336409.53729")
+.sub "_block38"  :anon :subid("14_1271948680.36754") :outer("13_1271948680.36754")
 .annotate "line", 16
-    .const 'Sub' $P50 = "15_1271336409.53729" 
+    .const 'Sub' $P50 = "15_1271948680.36754" 
     capture_lex $P50
 .annotate "line", 17
     new $P40, "Undef"
@@ -16191,7 +16266,7 @@
     find_lex $P45, "$block"
     $P46 = $P45."list"()
     defined $I47, $P46
-    unless $I47, for_undef_133
+    unless $I47, for_undef_134
     iter $P44, $P46
     new $P56, 'ExceptionHandler'
     set_addr $P56, loop55_handler
@@ -16201,7 +16276,7 @@
     unless $P44, loop55_done
     shift $P48, $P44
   loop55_redo:
-    .const 'Sub' $P50 = "15_1271336409.53729" 
+    .const 'Sub' $P50 = "15_1271948680.36754" 
     capture_lex $P50
     $P50($P48)
   loop55_next:
@@ -16214,7 +16289,7 @@
     eq $P57, 67, loop55_redo
   loop55_done:
     pop_eh 
-  for_undef_133:
+  for_undef_134:
 .annotate "line", 19
     find_lex $P58, "$stmts"
     store_lex "$block", $P58
@@ -16224,7 +16299,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block49"  :anon :subid("15_1271336409.53729") :outer("14_1271336409.53729")
+.sub "_block49"  :anon :subid("15_1271948680.36754") :outer("14_1271948680.36754")
     .param pmc param_51
 .annotate "line", 18
     .lex "$_", param_51
@@ -16236,7 +16311,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "vivitype"  :subid("16_1271336409.53729") :outer("11_1271336409.53729")
+.sub "vivitype"  :subid("16_1271948680.36754") :outer("11_1271948680.36754")
     .param pmc param_64
 .annotate "line", 24
     new $P63, 'ExceptionHandler'
@@ -16284,7 +16359,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "colonpair_str"  :subid("17_1271336409.53729") :outer("11_1271336409.53729")
+.sub "colonpair_str"  :subid("17_1271948680.36754") :outer("11_1271948680.36754")
     .param pmc param_84
 .annotate "line", 43
     new $P83, 'ExceptionHandler'
@@ -16322,7 +16397,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "push_block_handler"  :subid("18_1271336409.53729") :outer("11_1271336409.53729")
+.sub "push_block_handler"  :subid("18_1271948680.36754") :outer("11_1271948680.36754")
     .param pmc param_99
     .param pmc param_100
 .annotate "line", 190
@@ -16334,24 +16409,24 @@
     .lex "$block", param_100
 .annotate "line", 191
     get_global $P102, "@BLOCK"
-    unless_null $P102, vivify_134
+    unless_null $P102, vivify_135
     $P102 = root_new ['parrot';'ResizablePMCArray']
-  vivify_134:
+  vivify_135:
     set $P103, $P102[0]
-    unless_null $P103, vivify_135
+    unless_null $P103, vivify_136
     new $P103, "Undef"
-  vivify_135:
+  vivify_136:
     $P104 = $P103."handlers"()
     if $P104, unless_101_end
 .annotate "line", 192
     get_global $P105, "@BLOCK"
-    unless_null $P105, vivify_136
+    unless_null $P105, vivify_137
     $P105 = root_new ['parrot';'ResizablePMCArray']
-  vivify_136:
+  vivify_137:
     set $P106, $P105[0]
-    unless_null $P106, vivify_137
+    unless_null $P106, vivify_138
     new $P106, "Undef"
-  vivify_137:
+  vivify_138:
     new $P107, "ResizablePMCArray"
     $P106."handlers"($P107)
   unless_101_end:
@@ -16392,13 +16467,13 @@
     $P124."blocktype"("declaration")
 .annotate "line", 207
     get_global $P125, "@BLOCK"
-    unless_null $P125, vivify_138
+    unless_null $P125, vivify_139
     $P125 = root_new ['parrot';'ResizablePMCArray']
-  vivify_138:
+  vivify_139:
     set $P126, $P125[0]
-    unless_null $P126, vivify_139
+    unless_null $P126, vivify_140
     new $P126, "Undef"
-  vivify_139:
+  vivify_140:
     $P127 = $P126."handlers"()
 .annotate "line", 208
     get_hll_global $P128, ["PAST"], "Control"
@@ -16439,7 +16514,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "TOP"  :subid("19_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "TOP"  :subid("19_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_153
 .annotate "line", 33
     new $P152, 'ExceptionHandler'
@@ -16450,13 +16525,13 @@
     .lex "$/", param_153
     find_lex $P154, "$/"
     find_lex $P155, "$/"
-    unless_null $P155, vivify_140
+    unless_null $P155, vivify_141
     $P155 = root_new ['parrot';'Hash']
-  vivify_140:
+  vivify_141:
     set $P156, $P155["comp_unit"]
-    unless_null $P156, vivify_141
+    unless_null $P156, vivify_142
     new $P156, "Undef"
-  vivify_141:
+  vivify_142:
     $P157 = $P156."ast"()
     $P158 = $P154."!make"($P157)
     .return ($P158)
@@ -16469,7 +16544,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "deflongname"  :subid("20_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "deflongname"  :subid("20_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_163
 .annotate "line", 35
     new $P162, 'ExceptionHandler'
@@ -16482,13 +16557,13 @@
     find_lex $P164, "$/"
 .annotate "line", 37
     find_lex $P167, "$/"
-    unless_null $P167, vivify_142
+    unless_null $P167, vivify_143
     $P167 = root_new ['parrot';'Hash']
-  vivify_142:
+  vivify_143:
     set $P168, $P167["colonpair"]
-    unless_null $P168, vivify_143
+    unless_null $P168, vivify_144
     new $P168, "Undef"
-  vivify_143:
+  vivify_144:
     if $P168, if_166
 .annotate "line", 39
     find_lex $P188, "$/"
@@ -16499,46 +16574,46 @@
     goto if_166_end
   if_166:
     find_lex $P169, "$/"
-    unless_null $P169, vivify_144
+    unless_null $P169, vivify_145
     $P169 = root_new ['parrot';'Hash']
-  vivify_144:
+  vivify_145:
     set $P170, $P169["identifier"]
-    unless_null $P170, vivify_145
+    unless_null $P170, vivify_146
     new $P170, "Undef"
-  vivify_145:
+  vivify_146:
     set $S171, $P170
     new $P172, 'String'
     set $P172, $S171
     concat $P173, $P172, ":"
     find_lex $P174, "$/"
-    unless_null $P174, vivify_146
+    unless_null $P174, vivify_147
     $P174 = root_new ['parrot';'Hash']
-  vivify_146:
+  vivify_147:
     set $P175, $P174["colonpair"]
-    unless_null $P175, vivify_147
+    unless_null $P175, vivify_148
     $P175 = root_new ['parrot';'ResizablePMCArray']
-  vivify_147:
+  vivify_148:
     set $P176, $P175[0]
-    unless_null $P176, vivify_148
+    unless_null $P176, vivify_149
     new $P176, "Undef"
-  vivify_148:
+  vivify_149:
     $P177 = $P176."ast"()
     $S178 = $P177."named"()
     concat $P179, $P173, $S178
     concat $P180, $P179, "<"
 .annotate "line", 38
     find_lex $P181, "$/"
-    unless_null $P181, vivify_149
+    unless_null $P181, vivify_150
     $P181 = root_new ['parrot';'Hash']
-  vivify_149:
+  vivify_150:
     set $P182, $P181["colonpair"]
-    unless_null $P182, vivify_150
+    unless_null $P182, vivify_151
     $P182 = root_new ['parrot';'ResizablePMCArray']
-  vivify_150:
+  vivify_151:
     set $P183, $P182[0]
-    unless_null $P183, vivify_151
+    unless_null $P183, vivify_152
     new $P183, "Undef"
-  vivify_151:
+  vivify_152:
     $P184 = $P183."ast"()
     $S185 = "colonpair_str"($P184)
     concat $P186, $P180, $S185
@@ -16558,7 +16633,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "comp_unit"  :subid("21_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "comp_unit"  :subid("21_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_196
 .annotate "line", 49
     new $P195, 'ExceptionHandler'
@@ -16575,13 +16650,13 @@
     .lex "$BLOCK", $P198
 .annotate "line", 50
     find_lex $P199, "$/"
-    unless_null $P199, vivify_152
+    unless_null $P199, vivify_153
     $P199 = root_new ['parrot';'Hash']
-  vivify_152:
+  vivify_153:
     set $P200, $P199["statementlist"]
-    unless_null $P200, vivify_153
+    unless_null $P200, vivify_154
     new $P200, "Undef"
-  vivify_153:
+  vivify_154:
     $P201 = $P200."ast"()
     store_lex "$past", $P201
 .annotate "line", 51
@@ -16611,10 +16686,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statementlist"  :subid("22_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statementlist"  :subid("22_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_215
 .annotate "line", 57
-    .const 'Sub' $P229 = "23_1271336409.53729" 
+    .const 'Sub' $P229 = "23_1271948680.36754" 
     capture_lex $P229
     new $P214, 'ExceptionHandler'
     set_addr $P214, control_213
@@ -16631,25 +16706,25 @@
     store_lex "$past", $P219
 .annotate "line", 59
     find_lex $P221, "$/"
-    unless_null $P221, vivify_154
+    unless_null $P221, vivify_155
     $P221 = root_new ['parrot';'Hash']
-  vivify_154:
+  vivify_155:
     set $P222, $P221["statement"]
-    unless_null $P222, vivify_155
+    unless_null $P222, vivify_156
     new $P222, "Undef"
-  vivify_155:
+  vivify_156:
     unless $P222, if_220_end
 .annotate "line", 60
     find_lex $P224, "$/"
-    unless_null $P224, vivify_156
+    unless_null $P224, vivify_157
     $P224 = root_new ['parrot';'Hash']
-  vivify_156:
+  vivify_157:
     set $P225, $P224["statement"]
-    unless_null $P225, vivify_157
+    unless_null $P225, vivify_158
     new $P225, "Undef"
-  vivify_157:
+  vivify_158:
     defined $I226, $P225
-    unless $I226, for_undef_158
+    unless $I226, for_undef_159
     iter $P223, $P225
     new $P255, 'ExceptionHandler'
     set_addr $P255, loop254_handler
@@ -16659,7 +16734,7 @@
     unless $P223, loop254_done
     shift $P227, $P223
   loop254_redo:
-    .const 'Sub' $P229 = "23_1271336409.53729" 
+    .const 'Sub' $P229 = "23_1271948680.36754" 
     capture_lex $P229
     $P229($P227)
   loop254_next:
@@ -16672,7 +16747,7 @@
     eq $P256, 67, loop254_redo
   loop254_done:
     pop_eh 
-  for_undef_158:
+  for_undef_159:
   if_220_end:
 .annotate "line", 69
     find_lex $P257, "$/"
@@ -16689,7 +16764,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block228"  :anon :subid("23_1271336409.53729") :outer("22_1271336409.53729")
+.sub "_block228"  :anon :subid("23_1271948680.36754") :outer("22_1271948680.36754")
     .param pmc param_231
 .annotate "line", 61
     new $P230, "Undef"
@@ -16700,23 +16775,23 @@
     store_lex "$ast", $P233
 .annotate "line", 62
     find_lex $P235, "$ast"
-    unless_null $P235, vivify_159
+    unless_null $P235, vivify_160
     $P235 = root_new ['parrot';'Hash']
-  vivify_159:
+  vivify_160:
     set $P236, $P235["sink"]
-    unless_null $P236, vivify_160
+    unless_null $P236, vivify_161
     new $P236, "Undef"
-  vivify_160:
+  vivify_161:
     defined $I237, $P236
     unless $I237, if_234_end
     find_lex $P238, "$ast"
-    unless_null $P238, vivify_161
+    unless_null $P238, vivify_162
     $P238 = root_new ['parrot';'Hash']
-  vivify_161:
+  vivify_162:
     set $P239, $P238["sink"]
-    unless_null $P239, vivify_162
+    unless_null $P239, vivify_163
     new $P239, "Undef"
-  vivify_162:
+  vivify_163:
     store_lex "$ast", $P239
   if_234_end:
 .annotate "line", 63
@@ -16749,12 +16824,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement"  :subid("24_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement"  :subid("24_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_264
     .param pmc param_265 :optional
     .param int has_param_265 :opt_flag
 .annotate "line", 72
-    .const 'Sub' $P273 = "25_1271336409.53729" 
+    .const 'Sub' $P273 = "25_1271948680.36754" 
     capture_lex $P273
     new $P263, 'ExceptionHandler'
     set_addr $P263, control_262
@@ -16762,10 +16837,10 @@
     push_eh $P263
     .lex "self", self
     .lex "$/", param_264
-    if has_param_265, optparam_163
+    if has_param_265, optparam_164
     new $P266, "Undef"
     set param_265, $P266
-  optparam_163:
+  optparam_164:
     .lex "$key", param_265
 .annotate "line", 73
     new $P267, "Undef"
@@ -16774,23 +16849,23 @@
     find_lex $P268, "$past"
 .annotate "line", 74
     find_lex $P270, "$/"
-    unless_null $P270, vivify_164
+    unless_null $P270, vivify_165
     $P270 = root_new ['parrot';'Hash']
-  vivify_164:
+  vivify_165:
     set $P271, $P270["EXPR"]
-    unless_null $P271, vivify_165
+    unless_null $P271, vivify_166
     new $P271, "Undef"
-  vivify_165:
+  vivify_166:
     if $P271, if_269
 .annotate "line", 85
     find_lex $P311, "$/"
-    unless_null $P311, vivify_166
+    unless_null $P311, vivify_167
     $P311 = root_new ['parrot';'Hash']
-  vivify_166:
+  vivify_167:
     set $P312, $P311["statement_control"]
-    unless_null $P312, vivify_167
+    unless_null $P312, vivify_168
     new $P312, "Undef"
-  vivify_167:
+  vivify_168:
     if $P312, if_310
 .annotate "line", 86
     new $P316, "Integer"
@@ -16800,20 +16875,20 @@
   if_310:
 .annotate "line", 85
     find_lex $P313, "$/"
-    unless_null $P313, vivify_168
+    unless_null $P313, vivify_169
     $P313 = root_new ['parrot';'Hash']
-  vivify_168:
+  vivify_169:
     set $P314, $P313["statement_control"]
-    unless_null $P314, vivify_169
+    unless_null $P314, vivify_170
     new $P314, "Undef"
-  vivify_169:
+  vivify_170:
     $P315 = $P314."ast"()
     store_lex "$past", $P315
   if_310_end:
     goto if_269_end
   if_269:
 .annotate "line", 74
-    .const 'Sub' $P273 = "25_1271336409.53729" 
+    .const 'Sub' $P273 = "25_1271948680.36754" 
     capture_lex $P273
     $P273()
   if_269_end:
@@ -16832,7 +16907,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block272"  :anon :subid("25_1271336409.53729") :outer("24_1271336409.53729")
+.sub "_block272"  :anon :subid("25_1271948680.36754") :outer("24_1271948680.36754")
 .annotate "line", 75
     new $P274, "Undef"
     .lex "$mc", $P274
@@ -16841,41 +16916,41 @@
     .lex "$ml", $P275
 .annotate "line", 75
     find_lex $P276, "$/"
-    unless_null $P276, vivify_170
+    unless_null $P276, vivify_171
     $P276 = root_new ['parrot';'Hash']
-  vivify_170:
+  vivify_171:
     set $P277, $P276["statement_mod_cond"]
-    unless_null $P277, vivify_171
+    unless_null $P277, vivify_172
     $P277 = root_new ['parrot';'ResizablePMCArray']
-  vivify_171:
+  vivify_172:
     set $P278, $P277[0]
-    unless_null $P278, vivify_172
+    unless_null $P278, vivify_173
     new $P278, "Undef"
-  vivify_172:
+  vivify_173:
     store_lex "$mc", $P278
 .annotate "line", 76
     find_lex $P279, "$/"
-    unless_null $P279, vivify_173
+    unless_null $P279, vivify_174
     $P279 = root_new ['parrot';'Hash']
-  vivify_173:
+  vivify_174:
     set $P280, $P279["statement_mod_loop"]
-    unless_null $P280, vivify_174
+    unless_null $P280, vivify_175
     $P280 = root_new ['parrot';'ResizablePMCArray']
-  vivify_174:
+  vivify_175:
     set $P281, $P280[0]
-    unless_null $P281, vivify_175
+    unless_null $P281, vivify_176
     new $P281, "Undef"
-  vivify_175:
+  vivify_176:
     store_lex "$ml", $P281
 .annotate "line", 77
     find_lex $P282, "$/"
-    unless_null $P282, vivify_176
+    unless_null $P282, vivify_177
     $P282 = root_new ['parrot';'Hash']
-  vivify_176:
+  vivify_177:
     set $P283, $P282["EXPR"]
-    unless_null $P283, vivify_177
+    unless_null $P283, vivify_178
     new $P283, "Undef"
-  vivify_177:
+  vivify_178:
     $P284 = $P283."ast"()
     store_lex "$past", $P284
 .annotate "line", 78
@@ -16884,23 +16959,23 @@
 .annotate "line", 79
     get_hll_global $P287, ["PAST"], "Op"
     find_lex $P288, "$mc"
-    unless_null $P288, vivify_178
+    unless_null $P288, vivify_179
     $P288 = root_new ['parrot';'Hash']
-  vivify_178:
+  vivify_179:
     set $P289, $P288["cond"]
-    unless_null $P289, vivify_179
+    unless_null $P289, vivify_180
     new $P289, "Undef"
-  vivify_179:
+  vivify_180:
     $P290 = $P289."ast"()
     find_lex $P291, "$past"
     find_lex $P292, "$mc"
-    unless_null $P292, vivify_180
+    unless_null $P292, vivify_181
     $P292 = root_new ['parrot';'Hash']
-  vivify_180:
+  vivify_181:
     set $P293, $P292["sym"]
-    unless_null $P293, vivify_181
+    unless_null $P293, vivify_182
     new $P293, "Undef"
-  vivify_181:
+  vivify_182:
     set $S294, $P293
     find_lex $P295, "$/"
     $P296 = $P287."new"($P290, $P291, $S294 :named("pasttype"), $P295 :named("node"))
@@ -16915,23 +16990,23 @@
 .annotate "line", 82
     get_hll_global $P300, ["PAST"], "Op"
     find_lex $P301, "$ml"
-    unless_null $P301, vivify_182
+    unless_null $P301, vivify_183
     $P301 = root_new ['parrot';'Hash']
-  vivify_182:
+  vivify_183:
     set $P302, $P301["cond"]
-    unless_null $P302, vivify_183
+    unless_null $P302, vivify_184
     new $P302, "Undef"
-  vivify_183:
+  vivify_184:
     $P303 = $P302."ast"()
     find_lex $P304, "$past"
     find_lex $P305, "$ml"
-    unless_null $P305, vivify_184
+    unless_null $P305, vivify_185
     $P305 = root_new ['parrot';'Hash']
-  vivify_184:
+  vivify_185:
     set $P306, $P305["sym"]
-    unless_null $P306, vivify_185
+    unless_null $P306, vivify_186
     new $P306, "Undef"
-  vivify_185:
+  vivify_186:
     set $S307, $P306
     find_lex $P308, "$/"
     $P309 = $P300."new"($P303, $P304, $S307 :named("pasttype"), $P308 :named("node"))
@@ -16945,7 +17020,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "xblock"  :subid("26_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "xblock"  :subid("26_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_324
 .annotate "line", 90
     new $P323, 'ExceptionHandler'
@@ -16958,22 +17033,22 @@
     find_lex $P325, "$/"
     get_hll_global $P326, ["PAST"], "Op"
     find_lex $P327, "$/"
-    unless_null $P327, vivify_186
+    unless_null $P327, vivify_187
     $P327 = root_new ['parrot';'Hash']
-  vivify_186:
+  vivify_187:
     set $P328, $P327["EXPR"]
-    unless_null $P328, vivify_187
+    unless_null $P328, vivify_188
     new $P328, "Undef"
-  vivify_187:
+  vivify_188:
     $P329 = $P328."ast"()
     find_lex $P330, "$/"
-    unless_null $P330, vivify_188
+    unless_null $P330, vivify_189
     $P330 = root_new ['parrot';'Hash']
-  vivify_188:
+  vivify_189:
     set $P331, $P330["pblock"]
-    unless_null $P331, vivify_189
+    unless_null $P331, vivify_190
     new $P331, "Undef"
-  vivify_189:
+  vivify_190:
     $P332 = $P331."ast"()
     find_lex $P333, "$/"
     $P334 = $P326."new"($P329, $P332, "if" :named("pasttype"), $P333 :named("node"))
@@ -16989,7 +17064,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "pblock"  :subid("27_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "pblock"  :subid("27_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_340
 .annotate "line", 94
     new $P339, 'ExceptionHandler'
@@ -17001,13 +17076,13 @@
 .annotate "line", 95
     find_lex $P341, "$/"
     find_lex $P342, "$/"
-    unless_null $P342, vivify_190
+    unless_null $P342, vivify_191
     $P342 = root_new ['parrot';'Hash']
-  vivify_190:
+  vivify_191:
     set $P343, $P342["blockoid"]
-    unless_null $P343, vivify_191
+    unless_null $P343, vivify_192
     new $P343, "Undef"
-  vivify_191:
+  vivify_192:
     $P344 = $P343."ast"()
     $P345 = $P341."!make"($P344)
 .annotate "line", 94
@@ -17021,7 +17096,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "block"  :subid("28_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "block"  :subid("28_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_350
 .annotate "line", 98
     new $P349, 'ExceptionHandler'
@@ -17033,13 +17108,13 @@
 .annotate "line", 99
     find_lex $P351, "$/"
     find_lex $P352, "$/"
-    unless_null $P352, vivify_192
+    unless_null $P352, vivify_193
     $P352 = root_new ['parrot';'Hash']
-  vivify_192:
+  vivify_193:
     set $P353, $P352["blockoid"]
-    unless_null $P353, vivify_193
+    unless_null $P353, vivify_194
     new $P353, "Undef"
-  vivify_193:
+  vivify_194:
     $P354 = $P353."ast"()
     $P355 = $P351."!make"($P354)
 .annotate "line", 98
@@ -17053,7 +17128,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "blockoid"  :subid("29_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "blockoid"  :subid("29_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_360
 .annotate "line", 102
     new $P359, 'ExceptionHandler'
@@ -17070,13 +17145,13 @@
     .lex "$BLOCK", $P362
 .annotate "line", 103
     find_lex $P363, "$/"
-    unless_null $P363, vivify_194
+    unless_null $P363, vivify_195
     $P363 = root_new ['parrot';'Hash']
-  vivify_194:
+  vivify_195:
     set $P364, $P363["statementlist"]
-    unless_null $P364, vivify_195
+    unless_null $P364, vivify_196
     new $P364, "Undef"
-  vivify_195:
+  vivify_196:
     $P365 = $P364."ast"()
     store_lex "$past", $P365
 .annotate "line", 104
@@ -17106,7 +17181,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "newpad"  :subid("30_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "newpad"  :subid("30_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_379
 .annotate "line", 110
     new $P378, 'ExceptionHandler'
@@ -17117,10 +17192,10 @@
     .lex "$/", param_379
 .annotate "line", 111
     get_global $P380, "@BLOCK"
-    unless_null $P380, vivify_196
+    unless_null $P380, vivify_197
     $P380 = root_new ['parrot';'ResizablePMCArray']
     set_global "@BLOCK", $P380
-  vivify_196:
+  vivify_197:
 .annotate "line", 110
     get_global $P381, "@BLOCK"
 .annotate "line", 112
@@ -17141,10 +17216,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<if>"  :subid("31_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_control:sym<if>"  :subid("31_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_392
 .annotate "line", 117
-    .const 'Sub' $P420 = "32_1271336409.53729" 
+    .const 'Sub' $P420 = "32_1271948680.36754" 
     capture_lex $P420
     new $P391, 'ExceptionHandler'
     set_addr $P391, control_390
@@ -17160,13 +17235,13 @@
     .lex "$past", $P394
 .annotate "line", 118
     find_lex $P395, "$/"
-    unless_null $P395, vivify_197
+    unless_null $P395, vivify_198
     $P395 = root_new ['parrot';'Hash']
-  vivify_197:
+  vivify_198:
     set $P396, $P395["xblock"]
-    unless_null $P396, vivify_198
+    unless_null $P396, vivify_199
     new $P396, "Undef"
-  vivify_198:
+  vivify_199:
     set $N397, $P396
     new $P398, 'Float'
     set $P398, $N397
@@ -17176,44 +17251,44 @@
     find_lex $P400, "$count"
     set $I401, $P400
     find_lex $P402, "$/"
-    unless_null $P402, vivify_199
+    unless_null $P402, vivify_200
     $P402 = root_new ['parrot';'Hash']
-  vivify_199:
+  vivify_200:
     set $P403, $P402["xblock"]
-    unless_null $P403, vivify_200
+    unless_null $P403, vivify_201
     $P403 = root_new ['parrot';'ResizablePMCArray']
-  vivify_200:
+  vivify_201:
     set $P404, $P403[$I401]
-    unless_null $P404, vivify_201
+    unless_null $P404, vivify_202
     new $P404, "Undef"
-  vivify_201:
+  vivify_202:
     $P405 = $P404."ast"()
     $P406 = "xblock_immediate"($P405)
     store_lex "$past", $P406
 .annotate "line", 120
     find_lex $P408, "$/"
-    unless_null $P408, vivify_202
+    unless_null $P408, vivify_203
     $P408 = root_new ['parrot';'Hash']
-  vivify_202:
+  vivify_203:
     set $P409, $P408["else"]
-    unless_null $P409, vivify_203
+    unless_null $P409, vivify_204
     new $P409, "Undef"
-  vivify_203:
+  vivify_204:
     unless $P409, if_407_end
 .annotate "line", 121
     find_lex $P410, "$past"
     find_lex $P411, "$/"
-    unless_null $P411, vivify_204
+    unless_null $P411, vivify_205
     $P411 = root_new ['parrot';'Hash']
-  vivify_204:
+  vivify_205:
     set $P412, $P411["else"]
-    unless_null $P412, vivify_205
+    unless_null $P412, vivify_206
     $P412 = root_new ['parrot';'ResizablePMCArray']
-  vivify_205:
+  vivify_206:
     set $P413, $P412[0]
-    unless_null $P413, vivify_206
+    unless_null $P413, vivify_207
     new $P413, "Undef"
-  vivify_206:
+  vivify_207:
     $P414 = $P413."ast"()
     $P415 = "block_immediate"($P414)
     $P410."push"($P415)
@@ -17229,7 +17304,7 @@
     isgt $I418, $N417, 0.0
     unless $I418, loop435_done
   loop435_redo:
-    .const 'Sub' $P420 = "32_1271336409.53729" 
+    .const 'Sub' $P420 = "32_1271948680.36754" 
     capture_lex $P420
     $P420()
   loop435_next:
@@ -17257,7 +17332,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block419"  :anon :subid("32_1271336409.53729") :outer("31_1271336409.53729")
+.sub "_block419"  :anon :subid("32_1271948680.36754") :outer("31_1271948680.36754")
 .annotate "line", 126
     new $P421, "Undef"
     .lex "$else", $P421
@@ -17272,17 +17347,17 @@
     find_lex $P425, "$count"
     set $I426, $P425
     find_lex $P427, "$/"
-    unless_null $P427, vivify_207
+    unless_null $P427, vivify_208
     $P427 = root_new ['parrot';'Hash']
-  vivify_207:
+  vivify_208:
     set $P428, $P427["xblock"]
-    unless_null $P428, vivify_208
+    unless_null $P428, vivify_209
     $P428 = root_new ['parrot';'ResizablePMCArray']
-  vivify_208:
+  vivify_209:
     set $P429, $P428[$I426]
-    unless_null $P429, vivify_209
+    unless_null $P429, vivify_210
     new $P429, "Undef"
-  vivify_209:
+  vivify_210:
     $P430 = $P429."ast"()
     $P431 = "xblock_immediate"($P430)
     store_lex "$past", $P431
@@ -17296,7 +17371,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<unless>"  :subid("33_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_control:sym<unless>"  :subid("33_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_445
 .annotate "line", 133
     new $P444, 'ExceptionHandler'
@@ -17309,13 +17384,13 @@
     new $P446, "Undef"
     .lex "$past", $P446
     find_lex $P447, "$/"
-    unless_null $P447, vivify_210
+    unless_null $P447, vivify_211
     $P447 = root_new ['parrot';'Hash']
-  vivify_210:
+  vivify_211:
     set $P448, $P447["xblock"]
-    unless_null $P448, vivify_211
+    unless_null $P448, vivify_212
     new $P448, "Undef"
-  vivify_211:
+  vivify_212:
     $P449 = $P448."ast"()
     $P450 = "xblock_immediate"($P449)
     store_lex "$past", $P450
@@ -17337,7 +17412,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<while>"  :subid("34_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_control:sym<while>"  :subid("34_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_459
 .annotate "line", 139
     new $P458, 'ExceptionHandler'
@@ -17350,26 +17425,26 @@
     new $P460, "Undef"
     .lex "$past", $P460
     find_lex $P461, "$/"
-    unless_null $P461, vivify_212
+    unless_null $P461, vivify_213
     $P461 = root_new ['parrot';'Hash']
-  vivify_212:
+  vivify_213:
     set $P462, $P461["xblock"]
-    unless_null $P462, vivify_213
+    unless_null $P462, vivify_214
     new $P462, "Undef"
-  vivify_213:
+  vivify_214:
     $P463 = $P462."ast"()
     $P464 = "xblock_immediate"($P463)
     store_lex "$past", $P464
 .annotate "line", 141
     find_lex $P465, "$past"
     find_lex $P466, "$/"
-    unless_null $P466, vivify_214
+    unless_null $P466, vivify_215
     $P466 = root_new ['parrot';'Hash']
-  vivify_214:
+  vivify_215:
     set $P467, $P466["sym"]
-    unless_null $P467, vivify_215
+    unless_null $P467, vivify_216
     new $P467, "Undef"
-  vivify_215:
+  vivify_216:
     set $S468, $P467
     $P465."pasttype"($S468)
 .annotate "line", 142
@@ -17387,7 +17462,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<repeat>"  :subid("35_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_control:sym<repeat>"  :subid("35_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_476
 .annotate "line", 145
     new $P475, 'ExceptionHandler'
@@ -17406,46 +17481,46 @@
     new $P479, "String"
     assign $P479, "repeat_"
     find_lex $P480, "$/"
-    unless_null $P480, vivify_216
+    unless_null $P480, vivify_217
     $P480 = root_new ['parrot';'Hash']
-  vivify_216:
+  vivify_217:
     set $P481, $P480["wu"]
-    unless_null $P481, vivify_217
+    unless_null $P481, vivify_218
     new $P481, "Undef"
-  vivify_217:
+  vivify_218:
     set $S482, $P481
     concat $P483, $P479, $S482
     store_lex "$pasttype", $P483
     find_lex $P484, "$past"
 .annotate "line", 148
     find_lex $P486, "$/"
-    unless_null $P486, vivify_218
+    unless_null $P486, vivify_219
     $P486 = root_new ['parrot';'Hash']
-  vivify_218:
+  vivify_219:
     set $P487, $P486["xblock"]
-    unless_null $P487, vivify_219
+    unless_null $P487, vivify_220
     new $P487, "Undef"
-  vivify_219:
+  vivify_220:
     if $P487, if_485
 .annotate "line", 153
     get_hll_global $P494, ["PAST"], "Op"
     find_lex $P495, "$/"
-    unless_null $P495, vivify_220
+    unless_null $P495, vivify_221
     $P495 = root_new ['parrot';'Hash']
-  vivify_220:
+  vivify_221:
     set $P496, $P495["EXPR"]
-    unless_null $P496, vivify_221
+    unless_null $P496, vivify_222
     new $P496, "Undef"
-  vivify_221:
+  vivify_222:
     $P497 = $P496."ast"()
     find_lex $P498, "$/"
-    unless_null $P498, vivify_222
+    unless_null $P498, vivify_223
     $P498 = root_new ['parrot';'Hash']
-  vivify_222:
+  vivify_223:
     set $P499, $P498["pblock"]
-    unless_null $P499, vivify_223
+    unless_null $P499, vivify_224
     new $P499, "Undef"
-  vivify_223:
+  vivify_224:
     $P500 = $P499."ast"()
     $P501 = "block_immediate"($P500)
     find_lex $P502, "$pasttype"
@@ -17457,13 +17532,13 @@
   if_485:
 .annotate "line", 149
     find_lex $P488, "$/"
-    unless_null $P488, vivify_224
+    unless_null $P488, vivify_225
     $P488 = root_new ['parrot';'Hash']
-  vivify_224:
+  vivify_225:
     set $P489, $P488["xblock"]
-    unless_null $P489, vivify_225
+    unless_null $P489, vivify_226
     new $P489, "Undef"
-  vivify_225:
+  vivify_226:
     $P490 = $P489."ast"()
     $P491 = "xblock_immediate"($P490)
     store_lex "$past", $P491
@@ -17487,7 +17562,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<for>"  :subid("36_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_control:sym<for>"  :subid("36_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_512
 .annotate "line", 159
     new $P511, 'ExceptionHandler'
@@ -17504,13 +17579,13 @@
     .lex "$block", $P514
 .annotate "line", 160
     find_lex $P515, "$/"
-    unless_null $P515, vivify_226
+    unless_null $P515, vivify_227
     $P515 = root_new ['parrot';'Hash']
-  vivify_226:
+  vivify_227:
     set $P516, $P515["xblock"]
-    unless_null $P516, vivify_227
+    unless_null $P516, vivify_228
     new $P516, "Undef"
-  vivify_227:
+  vivify_228:
     $P517 = $P516."ast"()
     store_lex "$past", $P517
 .annotate "line", 161
@@ -17518,13 +17593,13 @@
     $P518."pasttype"("for")
 .annotate "line", 162
     find_lex $P519, "$past"
-    unless_null $P519, vivify_228
+    unless_null $P519, vivify_229
     $P519 = root_new ['parrot';'ResizablePMCArray']
-  vivify_228:
+  vivify_229:
     set $P520, $P519[1]
-    unless_null $P520, vivify_229
+    unless_null $P520, vivify_230
     new $P520, "Undef"
-  vivify_229:
+  vivify_230:
     store_lex "$block", $P520
 .annotate "line", 163
     find_lex $P522, "$block"
@@ -17532,13 +17607,13 @@
     if $P523, unless_521_end
 .annotate "line", 164
     find_lex $P524, "$block"
-    unless_null $P524, vivify_230
+    unless_null $P524, vivify_231
     $P524 = root_new ['parrot';'ResizablePMCArray']
-  vivify_230:
+  vivify_231:
     set $P525, $P524[0]
-    unless_null $P525, vivify_231
+    unless_null $P525, vivify_232
     new $P525, "Undef"
-  vivify_231:
+  vivify_232:
     get_hll_global $P526, ["PAST"], "Var"
     $P527 = $P526."new"("$_" :named("name"), "parameter" :named("scope"))
     $P525."push"($P527)
@@ -17567,7 +17642,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<return>"  :subid("37_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_control:sym<return>"  :subid("37_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_538
 .annotate "line", 172
     new $P537, 'ExceptionHandler'
@@ -17580,13 +17655,13 @@
     find_lex $P539, "$/"
     get_hll_global $P540, ["PAST"], "Op"
     find_lex $P541, "$/"
-    unless_null $P541, vivify_232
+    unless_null $P541, vivify_233
     $P541 = root_new ['parrot';'Hash']
-  vivify_232:
+  vivify_233:
     set $P542, $P541["EXPR"]
-    unless_null $P542, vivify_233
+    unless_null $P542, vivify_234
     new $P542, "Undef"
-  vivify_233:
+  vivify_234:
     $P543 = $P542."ast"()
     find_lex $P544, "$/"
     $P545 = $P540."new"($P543, "return" :named("pasttype"), $P544 :named("node"))
@@ -17602,7 +17677,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CATCH>"  :subid("38_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_control:sym<CATCH>"  :subid("38_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_551
 .annotate "line", 176
     new $P550, 'ExceptionHandler'
@@ -17615,13 +17690,13 @@
     new $P552, "Undef"
     .lex "$block", $P552
     find_lex $P553, "$/"
-    unless_null $P553, vivify_234
+    unless_null $P553, vivify_235
     $P553 = root_new ['parrot';'Hash']
-  vivify_234:
+  vivify_235:
     set $P554, $P553["block"]
-    unless_null $P554, vivify_235
+    unless_null $P554, vivify_236
     new $P554, "Undef"
-  vivify_235:
+  vivify_236:
     $P555 = $P554."ast"()
     store_lex "$block", $P555
 .annotate "line", 178
@@ -17630,18 +17705,18 @@
     "push_block_handler"($P556, $P557)
 .annotate "line", 179
     get_global $P558, "@BLOCK"
-    unless_null $P558, vivify_236
+    unless_null $P558, vivify_237
     $P558 = root_new ['parrot';'ResizablePMCArray']
-  vivify_236:
+  vivify_237:
     set $P559, $P558[0]
-    unless_null $P559, vivify_237
+    unless_null $P559, vivify_238
     new $P559, "Undef"
-  vivify_237:
+  vivify_238:
     $P560 = $P559."handlers"()
     set $P561, $P560[0]
-    unless_null $P561, vivify_238
+    unless_null $P561, vivify_239
     new $P561, "Undef"
-  vivify_238:
+  vivify_239:
     $P561."handle_types_except"("CONTROL")
 .annotate "line", 180
     find_lex $P562, "$/"
@@ -17660,7 +17735,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CONTROL>"  :subid("39_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_control:sym<CONTROL>"  :subid("39_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_571
 .annotate "line", 183
     new $P570, 'ExceptionHandler'
@@ -17673,13 +17748,13 @@
     new $P572, "Undef"
     .lex "$block", $P572
     find_lex $P573, "$/"
-    unless_null $P573, vivify_239
+    unless_null $P573, vivify_240
     $P573 = root_new ['parrot';'Hash']
-  vivify_239:
+  vivify_240:
     set $P574, $P573["block"]
-    unless_null $P574, vivify_240
+    unless_null $P574, vivify_241
     new $P574, "Undef"
-  vivify_240:
+  vivify_241:
     $P575 = $P574."ast"()
     store_lex "$block", $P575
 .annotate "line", 185
@@ -17688,18 +17763,18 @@
     "push_block_handler"($P576, $P577)
 .annotate "line", 186
     get_global $P578, "@BLOCK"
-    unless_null $P578, vivify_241
+    unless_null $P578, vivify_242
     $P578 = root_new ['parrot';'ResizablePMCArray']
-  vivify_241:
+  vivify_242:
     set $P579, $P578[0]
-    unless_null $P579, vivify_242
+    unless_null $P579, vivify_243
     new $P579, "Undef"
-  vivify_242:
+  vivify_243:
     $P580 = $P579."handlers"()
     set $P581, $P580[0]
-    unless_null $P581, vivify_243
+    unless_null $P581, vivify_244
     new $P581, "Undef"
-  vivify_243:
+  vivify_244:
     $P581."handle_types"("CONTROL")
 .annotate "line", 187
     find_lex $P582, "$/"
@@ -17718,7 +17793,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<INIT>"  :subid("40_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_prefix:sym<INIT>"  :subid("40_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_592
 .annotate "line", 227
     new $P591, 'ExceptionHandler'
@@ -17729,22 +17804,22 @@
     .lex "$/", param_592
 .annotate "line", 228
     get_global $P593, "@BLOCK"
-    unless_null $P593, vivify_244
+    unless_null $P593, vivify_245
     $P593 = root_new ['parrot';'ResizablePMCArray']
-  vivify_244:
+  vivify_245:
     set $P594, $P593[0]
-    unless_null $P594, vivify_245
+    unless_null $P594, vivify_246
     new $P594, "Undef"
-  vivify_245:
+  vivify_246:
     $P595 = $P594."loadinit"()
     find_lex $P596, "$/"
-    unless_null $P596, vivify_246
+    unless_null $P596, vivify_247
     $P596 = root_new ['parrot';'Hash']
-  vivify_246:
+  vivify_247:
     set $P597, $P596["blorst"]
-    unless_null $P597, vivify_247
+    unless_null $P597, vivify_248
     new $P597, "Undef"
-  vivify_247:
+  vivify_248:
     $P598 = $P597."ast"()
     $P595."push"($P598)
 .annotate "line", 229
@@ -17764,7 +17839,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<try>"  :subid("41_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_prefix:sym<try>"  :subid("41_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_608
 .annotate "line", 232
     new $P607, 'ExceptionHandler'
@@ -17777,13 +17852,13 @@
     new $P609, "Undef"
     .lex "$past", $P609
     find_lex $P610, "$/"
-    unless_null $P610, vivify_248
+    unless_null $P610, vivify_249
     $P610 = root_new ['parrot';'Hash']
-  vivify_248:
+  vivify_249:
     set $P611, $P610["blorst"]
-    unless_null $P611, vivify_249
+    unless_null $P611, vivify_250
     new $P611, "Undef"
-  vivify_249:
+  vivify_250:
     $P612 = $P611."ast"()
     store_lex "$past", $P612
 .annotate "line", 234
@@ -17841,7 +17916,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "blorst"  :subid("42_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "blorst"  :subid("42_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_643
 .annotate "line", 255
     new $P642, 'ExceptionHandler'
@@ -17854,36 +17929,36 @@
     find_lex $P644, "$/"
 .annotate "line", 257
     find_lex $P647, "$/"
-    unless_null $P647, vivify_250
+    unless_null $P647, vivify_251
     $P647 = root_new ['parrot';'Hash']
-  vivify_250:
+  vivify_251:
     set $P648, $P647["block"]
-    unless_null $P648, vivify_251
+    unless_null $P648, vivify_252
     new $P648, "Undef"
-  vivify_251:
+  vivify_252:
     if $P648, if_646
 .annotate "line", 258
     find_lex $P653, "$/"
-    unless_null $P653, vivify_252
+    unless_null $P653, vivify_253
     $P653 = root_new ['parrot';'Hash']
-  vivify_252:
+  vivify_253:
     set $P654, $P653["statement"]
-    unless_null $P654, vivify_253
+    unless_null $P654, vivify_254
     new $P654, "Undef"
-  vivify_253:
+  vivify_254:
     $P655 = $P654."ast"()
     set $P645, $P655
 .annotate "line", 257
     goto if_646_end
   if_646:
     find_lex $P649, "$/"
-    unless_null $P649, vivify_254
+    unless_null $P649, vivify_255
     $P649 = root_new ['parrot';'Hash']
-  vivify_254:
+  vivify_255:
     set $P650, $P649["block"]
-    unless_null $P650, vivify_255
+    unless_null $P650, vivify_256
     new $P650, "Undef"
-  vivify_255:
+  vivify_256:
     $P651 = $P650."ast"()
     $P652 = "block_immediate"($P651)
     set $P645, $P652
@@ -17900,7 +17975,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<if>"  :subid("43_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_mod_cond:sym<if>"  :subid("43_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_661
 .annotate "line", 263
     new $P660, 'ExceptionHandler'
@@ -17911,13 +17986,13 @@
     .lex "$/", param_661
     find_lex $P662, "$/"
     find_lex $P663, "$/"
-    unless_null $P663, vivify_256
+    unless_null $P663, vivify_257
     $P663 = root_new ['parrot';'Hash']
-  vivify_256:
+  vivify_257:
     set $P664, $P663["cond"]
-    unless_null $P664, vivify_257
+    unless_null $P664, vivify_258
     new $P664, "Undef"
-  vivify_257:
+  vivify_258:
     $P665 = $P664."ast"()
     $P666 = $P662."!make"($P665)
     .return ($P666)
@@ -17930,7 +18005,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<unless>"  :subid("44_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_mod_cond:sym<unless>"  :subid("44_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_671
 .annotate "line", 264
     new $P670, 'ExceptionHandler'
@@ -17941,13 +18016,13 @@
     .lex "$/", param_671
     find_lex $P672, "$/"
     find_lex $P673, "$/"
-    unless_null $P673, vivify_258
+    unless_null $P673, vivify_259
     $P673 = root_new ['parrot';'Hash']
-  vivify_258:
+  vivify_259:
     set $P674, $P673["cond"]
-    unless_null $P674, vivify_259
+    unless_null $P674, vivify_260
     new $P674, "Undef"
-  vivify_259:
+  vivify_260:
     $P675 = $P674."ast"()
     $P676 = $P672."!make"($P675)
     .return ($P676)
@@ -17960,7 +18035,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<while>"  :subid("45_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_mod_loop:sym<while>"  :subid("45_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_681
 .annotate "line", 266
     new $P680, 'ExceptionHandler'
@@ -17971,13 +18046,13 @@
     .lex "$/", param_681
     find_lex $P682, "$/"
     find_lex $P683, "$/"
-    unless_null $P683, vivify_260
+    unless_null $P683, vivify_261
     $P683 = root_new ['parrot';'Hash']
-  vivify_260:
+  vivify_261:
     set $P684, $P683["cond"]
-    unless_null $P684, vivify_261
+    unless_null $P684, vivify_262
     new $P684, "Undef"
-  vivify_261:
+  vivify_262:
     $P685 = $P684."ast"()
     $P686 = $P682."!make"($P685)
     .return ($P686)
@@ -17990,7 +18065,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<until>"  :subid("46_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "statement_mod_loop:sym<until>"  :subid("46_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_691
 .annotate "line", 267
     new $P690, 'ExceptionHandler'
@@ -18001,13 +18076,13 @@
     .lex "$/", param_691
     find_lex $P692, "$/"
     find_lex $P693, "$/"
-    unless_null $P693, vivify_262
+    unless_null $P693, vivify_263
     $P693 = root_new ['parrot';'Hash']
-  vivify_262:
+  vivify_263:
     set $P694, $P693["cond"]
-    unless_null $P694, vivify_263
+    unless_null $P694, vivify_264
     new $P694, "Undef"
-  vivify_263:
+  vivify_264:
     $P695 = $P694."ast"()
     $P696 = $P692."!make"($P695)
     .return ($P696)
@@ -18020,7 +18095,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<fatarrow>"  :subid("47_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<fatarrow>"  :subid("47_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_701
 .annotate "line", 271
     new $P700, 'ExceptionHandler'
@@ -18031,13 +18106,13 @@
     .lex "$/", param_701
     find_lex $P702, "$/"
     find_lex $P703, "$/"
-    unless_null $P703, vivify_264
+    unless_null $P703, vivify_265
     $P703 = root_new ['parrot';'Hash']
-  vivify_264:
+  vivify_265:
     set $P704, $P703["fatarrow"]
-    unless_null $P704, vivify_265
+    unless_null $P704, vivify_266
     new $P704, "Undef"
-  vivify_265:
+  vivify_266:
     $P705 = $P704."ast"()
     $P706 = $P702."!make"($P705)
     .return ($P706)
@@ -18050,7 +18125,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<colonpair>"  :subid("48_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<colonpair>"  :subid("48_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_711
 .annotate "line", 272
     new $P710, 'ExceptionHandler'
@@ -18061,13 +18136,13 @@
     .lex "$/", param_711
     find_lex $P712, "$/"
     find_lex $P713, "$/"
-    unless_null $P713, vivify_266
+    unless_null $P713, vivify_267
     $P713 = root_new ['parrot';'Hash']
-  vivify_266:
+  vivify_267:
     set $P714, $P713["colonpair"]
-    unless_null $P714, vivify_267
+    unless_null $P714, vivify_268
     new $P714, "Undef"
-  vivify_267:
+  vivify_268:
     $P715 = $P714."ast"()
     $P716 = $P712."!make"($P715)
     .return ($P716)
@@ -18080,7 +18155,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<variable>"  :subid("49_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<variable>"  :subid("49_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_721
 .annotate "line", 273
     new $P720, 'ExceptionHandler'
@@ -18091,13 +18166,13 @@
     .lex "$/", param_721
     find_lex $P722, "$/"
     find_lex $P723, "$/"
-    unless_null $P723, vivify_268
+    unless_null $P723, vivify_269
     $P723 = root_new ['parrot';'Hash']
-  vivify_268:
+  vivify_269:
     set $P724, $P723["variable"]
-    unless_null $P724, vivify_269
+    unless_null $P724, vivify_270
     new $P724, "Undef"
-  vivify_269:
+  vivify_270:
     $P725 = $P724."ast"()
     $P726 = $P722."!make"($P725)
     .return ($P726)
@@ -18110,7 +18185,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<package_declarator>"  :subid("50_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<package_declarator>"  :subid("50_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_731
 .annotate "line", 274
     new $P730, 'ExceptionHandler'
@@ -18121,13 +18196,13 @@
     .lex "$/", param_731
     find_lex $P732, "$/"
     find_lex $P733, "$/"
-    unless_null $P733, vivify_270
+    unless_null $P733, vivify_271
     $P733 = root_new ['parrot';'Hash']
-  vivify_270:
+  vivify_271:
     set $P734, $P733["package_declarator"]
-    unless_null $P734, vivify_271
+    unless_null $P734, vivify_272
     new $P734, "Undef"
-  vivify_271:
+  vivify_272:
     $P735 = $P734."ast"()
     $P736 = $P732."!make"($P735)
     .return ($P736)
@@ -18140,7 +18215,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<scope_declarator>"  :subid("51_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<scope_declarator>"  :subid("51_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_741
 .annotate "line", 275
     new $P740, 'ExceptionHandler'
@@ -18151,13 +18226,13 @@
     .lex "$/", param_741
     find_lex $P742, "$/"
     find_lex $P743, "$/"
-    unless_null $P743, vivify_272
+    unless_null $P743, vivify_273
     $P743 = root_new ['parrot';'Hash']
-  vivify_272:
+  vivify_273:
     set $P744, $P743["scope_declarator"]
-    unless_null $P744, vivify_273
+    unless_null $P744, vivify_274
     new $P744, "Undef"
-  vivify_273:
+  vivify_274:
     $P745 = $P744."ast"()
     $P746 = $P742."!make"($P745)
     .return ($P746)
@@ -18170,7 +18245,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<routine_declarator>"  :subid("52_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<routine_declarator>"  :subid("52_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_751
 .annotate "line", 276
     new $P750, 'ExceptionHandler'
@@ -18181,13 +18256,13 @@
     .lex "$/", param_751
     find_lex $P752, "$/"
     find_lex $P753, "$/"
-    unless_null $P753, vivify_274
+    unless_null $P753, vivify_275
     $P753 = root_new ['parrot';'Hash']
-  vivify_274:
+  vivify_275:
     set $P754, $P753["routine_declarator"]
-    unless_null $P754, vivify_275
+    unless_null $P754, vivify_276
     new $P754, "Undef"
-  vivify_275:
+  vivify_276:
     $P755 = $P754."ast"()
     $P756 = $P752."!make"($P755)
     .return ($P756)
@@ -18200,7 +18275,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<regex_declarator>"  :subid("53_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<regex_declarator>"  :subid("53_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_761
 .annotate "line", 277
     new $P760, 'ExceptionHandler'
@@ -18211,13 +18286,13 @@
     .lex "$/", param_761
     find_lex $P762, "$/"
     find_lex $P763, "$/"
-    unless_null $P763, vivify_276
+    unless_null $P763, vivify_277
     $P763 = root_new ['parrot';'Hash']
-  vivify_276:
+  vivify_277:
     set $P764, $P763["regex_declarator"]
-    unless_null $P764, vivify_277
+    unless_null $P764, vivify_278
     new $P764, "Undef"
-  vivify_277:
+  vivify_278:
     $P765 = $P764."ast"()
     $P766 = $P762."!make"($P765)
     .return ($P766)
@@ -18230,7 +18305,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<statement_prefix>"  :subid("54_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<statement_prefix>"  :subid("54_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_771
 .annotate "line", 278
     new $P770, 'ExceptionHandler'
@@ -18241,13 +18316,13 @@
     .lex "$/", param_771
     find_lex $P772, "$/"
     find_lex $P773, "$/"
-    unless_null $P773, vivify_278
+    unless_null $P773, vivify_279
     $P773 = root_new ['parrot';'Hash']
-  vivify_278:
+  vivify_279:
     set $P774, $P773["statement_prefix"]
-    unless_null $P774, vivify_279
+    unless_null $P774, vivify_280
     new $P774, "Undef"
-  vivify_279:
+  vivify_280:
     $P775 = $P774."ast"()
     $P776 = $P772."!make"($P775)
     .return ($P776)
@@ -18260,7 +18335,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<lambda>"  :subid("55_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<lambda>"  :subid("55_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_781
 .annotate "line", 279
     new $P780, 'ExceptionHandler'
@@ -18271,13 +18346,13 @@
     .lex "$/", param_781
     find_lex $P782, "$/"
     find_lex $P783, "$/"
-    unless_null $P783, vivify_280
+    unless_null $P783, vivify_281
     $P783 = root_new ['parrot';'Hash']
-  vivify_280:
+  vivify_281:
     set $P784, $P783["pblock"]
-    unless_null $P784, vivify_281
+    unless_null $P784, vivify_282
     new $P784, "Undef"
-  vivify_281:
+  vivify_282:
     $P785 = $P784."ast"()
     $P786 = $P782."!make"($P785)
     .return ($P786)
@@ -18290,7 +18365,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "fatarrow"  :subid("56_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "fatarrow"  :subid("56_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_791
 .annotate "line", 281
     new $P790, 'ExceptionHandler'
@@ -18303,25 +18378,25 @@
     new $P792, "Undef"
     .lex "$past", $P792
     find_lex $P793, "$/"
-    unless_null $P793, vivify_282
+    unless_null $P793, vivify_283
     $P793 = root_new ['parrot';'Hash']
-  vivify_282:
+  vivify_283:
     set $P794, $P793["val"]
-    unless_null $P794, vivify_283
+    unless_null $P794, vivify_284
     new $P794, "Undef"
-  vivify_283:
+  vivify_284:
     $P795 = $P794."ast"()
     store_lex "$past", $P795
 .annotate "line", 283
     find_lex $P796, "$past"
     find_lex $P797, "$/"
-    unless_null $P797, vivify_284
+    unless_null $P797, vivify_285
     $P797 = root_new ['parrot';'Hash']
-  vivify_284:
+  vivify_285:
     set $P798, $P797["key"]
-    unless_null $P798, vivify_285
+    unless_null $P798, vivify_286
     new $P798, "Undef"
-  vivify_285:
+  vivify_286:
     $P799 = $P798."Str"()
     $P796."named"($P799)
 .annotate "line", 284
@@ -18339,7 +18414,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "colonpair"  :subid("57_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "colonpair"  :subid("57_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_807
 .annotate "line", 287
     new $P806, 'ExceptionHandler'
@@ -18353,24 +18428,24 @@
     .lex "$past", $P808
 .annotate "line", 289
     find_lex $P811, "$/"
-    unless_null $P811, vivify_286
+    unless_null $P811, vivify_287
     $P811 = root_new ['parrot';'Hash']
-  vivify_286:
+  vivify_287:
     set $P812, $P811["circumfix"]
-    unless_null $P812, vivify_287
+    unless_null $P812, vivify_288
     new $P812, "Undef"
-  vivify_287:
+  vivify_288:
     if $P812, if_810
 .annotate "line", 290
     get_hll_global $P817, ["PAST"], "Val"
     find_lex $P818, "$/"
-    unless_null $P818, vivify_288
+    unless_null $P818, vivify_289
     $P818 = root_new ['parrot';'Hash']
-  vivify_288:
+  vivify_289:
     set $P819, $P818["not"]
-    unless_null $P819, vivify_289
+    unless_null $P819, vivify_290
     new $P819, "Undef"
-  vivify_289:
+  vivify_290:
     isfalse $I820, $P819
     $P821 = $P817."new"($I820 :named("value"))
     set $P809, $P821
@@ -18378,17 +18453,17 @@
     goto if_810_end
   if_810:
     find_lex $P813, "$/"
-    unless_null $P813, vivify_290
+    unless_null $P813, vivify_291
     $P813 = root_new ['parrot';'Hash']
-  vivify_290:
+  vivify_291:
     set $P814, $P813["circumfix"]
-    unless_null $P814, vivify_291
+    unless_null $P814, vivify_292
     $P814 = root_new ['parrot';'ResizablePMCArray']
-  vivify_291:
+  vivify_292:
     set $P815, $P814[0]
-    unless_null $P815, vivify_292
+    unless_null $P815, vivify_293
     new $P815, "Undef"
-  vivify_292:
+  vivify_293:
     $P816 = $P815."ast"()
     set $P809, $P816
   if_810_end:
@@ -18396,13 +18471,13 @@
 .annotate "line", 291
     find_lex $P822, "$past"
     find_lex $P823, "$/"
-    unless_null $P823, vivify_293
+    unless_null $P823, vivify_294
     $P823 = root_new ['parrot';'Hash']
-  vivify_293:
+  vivify_294:
     set $P824, $P823["identifier"]
-    unless_null $P824, vivify_294
+    unless_null $P824, vivify_295
     new $P824, "Undef"
-  vivify_294:
+  vivify_295:
     set $S825, $P824
     $P822."named"($S825)
 .annotate "line", 292
@@ -18420,10 +18495,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "variable"  :subid("58_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "variable"  :subid("58_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_833
 .annotate "line", 295
-    .const 'Sub' $P846 = "59_1271336409.53729" 
+    .const 'Sub' $P846 = "59_1271948680.36754" 
     capture_lex $P846
     new $P832, 'ExceptionHandler'
     set_addr $P832, control_831
@@ -18438,29 +18513,29 @@
     find_lex $P835, "$past"
 .annotate "line", 297
     find_lex $P837, "$/"
-    unless_null $P837, vivify_295
+    unless_null $P837, vivify_296
     $P837 = root_new ['parrot';'Hash']
-  vivify_295:
+  vivify_296:
     set $P838, $P837["postcircumfix"]
-    unless_null $P838, vivify_296
+    unless_null $P838, vivify_297
     new $P838, "Undef"
-  vivify_296:
+  vivify_297:
     if $P838, if_836
 .annotate "line", 301
-    .const 'Sub' $P846 = "59_1271336409.53729" 
+    .const 'Sub' $P846 = "59_1271948680.36754" 
     capture_lex $P846
     $P846()
     goto if_836_end
   if_836:
 .annotate "line", 298
     find_lex $P839, "$/"
-    unless_null $P839, vivify_313
+    unless_null $P839, vivify_314
     $P839 = root_new ['parrot';'Hash']
-  vivify_313:
+  vivify_314:
     set $P840, $P839["postcircumfix"]
-    unless_null $P840, vivify_314
+    unless_null $P840, vivify_315
     new $P840, "Undef"
-  vivify_314:
+  vivify_315:
     $P841 = $P840."ast"()
     store_lex "$past", $P841
 .annotate "line", 299
@@ -18484,7 +18559,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block845"  :anon :subid("59_1271336409.53729") :outer("58_1271336409.53729")
+.sub "_block845"  :anon :subid("59_1271948680.36754") :outer("58_1271948680.36754")
 .annotate "line", 302
     $P847 = root_new ['parrot';'ResizablePMCArray']
     .lex "@name", $P847
@@ -18505,13 +18580,13 @@
     unless $P858, if_857_end
 .annotate "line", 305
     find_lex $P860, "@name"
-    unless_null $P860, vivify_297
+    unless_null $P860, vivify_298
     $P860 = root_new ['parrot';'ResizablePMCArray']
-  vivify_297:
+  vivify_298:
     set $P861, $P860[0]
-    unless_null $P861, vivify_298
+    unless_null $P861, vivify_299
     new $P861, "Undef"
-  vivify_298:
+  vivify_299:
     set $S862, $P861
     iseq $I863, $S862, "GLOBAL"
     unless $I863, if_859_end
@@ -18528,13 +18603,13 @@
 .annotate "line", 308
     find_lex $P868, "$past"
     find_lex $P869, "$/"
-    unless_null $P869, vivify_299
+    unless_null $P869, vivify_300
     $P869 = root_new ['parrot';'Hash']
-  vivify_299:
+  vivify_300:
     set $P870, $P869["sigil"]
-    unless_null $P870, vivify_300
+    unless_null $P870, vivify_301
     new $P870, "Undef"
-  vivify_300:
+  vivify_301:
     $P871 = "vivitype"($P870)
     $P868."viviself"($P871)
 .annotate "line", 309
@@ -18543,33 +18618,33 @@
   if_857_end:
 .annotate "line", 311
     find_lex $P875, "$/"
-    unless_null $P875, vivify_301
+    unless_null $P875, vivify_302
     $P875 = root_new ['parrot';'Hash']
-  vivify_301:
+  vivify_302:
     set $P876, $P875["twigil"]
-    unless_null $P876, vivify_302
+    unless_null $P876, vivify_303
     $P876 = root_new ['parrot';'ResizablePMCArray']
-  vivify_302:
+  vivify_303:
     set $P877, $P876[0]
-    unless_null $P877, vivify_303
+    unless_null $P877, vivify_304
     new $P877, "Undef"
-  vivify_303:
+  vivify_304:
     set $S878, $P877
     iseq $I879, $S878, "*"
     if $I879, if_874
 .annotate "line", 324
     find_lex $P901, "$/"
-    unless_null $P901, vivify_304
+    unless_null $P901, vivify_305
     $P901 = root_new ['parrot';'Hash']
-  vivify_304:
+  vivify_305:
     set $P902, $P901["twigil"]
-    unless_null $P902, vivify_305
+    unless_null $P902, vivify_306
     $P902 = root_new ['parrot';'ResizablePMCArray']
-  vivify_305:
+  vivify_306:
     set $P903, $P902[0]
-    unless_null $P903, vivify_306
+    unless_null $P903, vivify_307
     new $P903, "Undef"
-  vivify_306:
+  vivify_307:
     set $S904, $P903
     iseq $I905, $S904, "!"
     if $I905, if_900
@@ -18588,13 +18663,13 @@
 .annotate "line", 327
     find_lex $P910, "$past"
     find_lex $P911, "$/"
-    unless_null $P911, vivify_307
+    unless_null $P911, vivify_308
     $P911 = root_new ['parrot';'Hash']
-  vivify_307:
+  vivify_308:
     set $P912, $P911["sigil"]
-    unless_null $P912, vivify_308
+    unless_null $P912, vivify_309
     new $P912, "Undef"
-  vivify_308:
+  vivify_309:
     $P913 = "vivitype"($P912)
     $P914 = $P910."viviself"($P913)
 .annotate "line", 324
@@ -18613,24 +18688,24 @@
     get_hll_global $P882, ["PAST"], "Var"
 .annotate "line", 316
     find_lex $P883, "$/"
-    unless_null $P883, vivify_309
+    unless_null $P883, vivify_310
     $P883 = root_new ['parrot';'Hash']
-  vivify_309:
+  vivify_310:
     set $P884, $P883["sigil"]
-    unless_null $P884, vivify_310
+    unless_null $P884, vivify_311
     new $P884, "Undef"
-  vivify_310:
+  vivify_311:
     set $S885, $P884
     new $P886, 'String'
     set $P886, $S885
     find_lex $P887, "$/"
-    unless_null $P887, vivify_311
+    unless_null $P887, vivify_312
     $P887 = root_new ['parrot';'Hash']
-  vivify_311:
+  vivify_312:
     set $P888, $P887["desigilname"]
-    unless_null $P888, vivify_312
+    unless_null $P888, vivify_313
     new $P888, "Undef"
-  vivify_312:
+  vivify_313:
     concat $P889, $P886, $P888
 .annotate "line", 318
     get_hll_global $P890, ["PAST"], "Op"
@@ -18653,7 +18728,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<module>"  :subid("60_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "package_declarator:sym<module>"  :subid("60_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_922
 .annotate "line", 333
     new $P921, 'ExceptionHandler'
@@ -18664,13 +18739,13 @@
     .lex "$/", param_922
     find_lex $P923, "$/"
     find_lex $P924, "$/"
-    unless_null $P924, vivify_315
+    unless_null $P924, vivify_316
     $P924 = root_new ['parrot';'Hash']
-  vivify_315:
+  vivify_316:
     set $P925, $P924["package_def"]
-    unless_null $P925, vivify_316
+    unless_null $P925, vivify_317
     new $P925, "Undef"
-  vivify_316:
+  vivify_317:
     $P926 = $P925."ast"()
     $P927 = $P923."!make"($P926)
     .return ($P927)
@@ -18683,7 +18758,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<class>"  :subid("61_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "package_declarator:sym<class>"  :subid("61_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_932
 .annotate "line", 334
     new $P931, 'ExceptionHandler'
@@ -18703,13 +18778,13 @@
     .lex "$parent", $P935
 .annotate "line", 335
     find_lex $P936, "$/"
-    unless_null $P936, vivify_317
+    unless_null $P936, vivify_318
     $P936 = root_new ['parrot';'Hash']
-  vivify_317:
+  vivify_318:
     set $P937, $P936["package_def"]
-    unless_null $P937, vivify_318
+    unless_null $P937, vivify_319
     new $P937, "Undef"
-  vivify_318:
+  vivify_319:
     $P938 = $P937."ast"()
     store_lex "$past", $P938
 .annotate "line", 337
@@ -18719,38 +18794,38 @@
     $P941 = $P940."new"("    %r = get_root_global [\"parrot\"], \"P6metaclass\"" :named("inline"))
 .annotate "line", 341
     find_lex $P942, "$/"
-    unless_null $P942, vivify_319
+    unless_null $P942, vivify_320
     $P942 = root_new ['parrot';'Hash']
-  vivify_319:
+  vivify_320:
     set $P943, $P942["package_def"]
-    unless_null $P943, vivify_320
+    unless_null $P943, vivify_321
     $P943 = root_new ['parrot';'Hash']
-  vivify_320:
+  vivify_321:
     set $P944, $P943["name"]
-    unless_null $P944, vivify_321
+    unless_null $P944, vivify_322
     new $P944, "Undef"
-  vivify_321:
+  vivify_322:
     set $S945, $P944
     $P946 = $P939."new"($P941, $S945, "new_class" :named("name"), "callmethod" :named("pasttype"))
 .annotate "line", 337
     store_lex "$classinit", $P946
 .annotate "line", 345
     find_lex $P949, "$/"
-    unless_null $P949, vivify_322
+    unless_null $P949, vivify_323
     $P949 = root_new ['parrot';'Hash']
-  vivify_322:
+  vivify_323:
     set $P950, $P949["package_def"]
-    unless_null $P950, vivify_323
+    unless_null $P950, vivify_324
     $P950 = root_new ['parrot';'Hash']
-  vivify_323:
+  vivify_324:
     set $P951, $P950["parent"]
-    unless_null $P951, vivify_324
+    unless_null $P951, vivify_325
     $P951 = root_new ['parrot';'ResizablePMCArray']
-  vivify_324:
+  vivify_325:
     set $P952, $P951[0]
-    unless_null $P952, vivify_325
+    unless_null $P952, vivify_326
     new $P952, "Undef"
-  vivify_325:
+  vivify_326:
     set $S953, $P952
     unless $S953, unless_948
     new $P947, 'String'
@@ -18759,13 +18834,13 @@
   unless_948:
 .annotate "line", 346
     find_lex $P956, "$/"
-    unless_null $P956, vivify_326
+    unless_null $P956, vivify_327
     $P956 = root_new ['parrot';'Hash']
-  vivify_326:
+  vivify_327:
     set $P957, $P956["sym"]
-    unless_null $P957, vivify_327
+    unless_null $P957, vivify_328
     new $P957, "Undef"
-  vivify_327:
+  vivify_328:
     set $S958, $P957
     iseq $I959, $S958, "grammar"
     if $I959, if_955
@@ -18793,35 +18868,35 @@
   if_962_end:
 .annotate "line", 350
     find_lex $P969, "$past"
-    unless_null $P969, vivify_328
+    unless_null $P969, vivify_329
     $P969 = root_new ['parrot';'Hash']
-  vivify_328:
+  vivify_329:
     set $P970, $P969["attributes"]
-    unless_null $P970, vivify_329
+    unless_null $P970, vivify_330
     new $P970, "Undef"
-  vivify_329:
+  vivify_330:
     unless $P970, if_968_end
 .annotate "line", 351
     find_lex $P971, "$classinit"
     find_lex $P972, "$past"
-    unless_null $P972, vivify_330
+    unless_null $P972, vivify_331
     $P972 = root_new ['parrot';'Hash']
-  vivify_330:
+  vivify_331:
     set $P973, $P972["attributes"]
-    unless_null $P973, vivify_331
+    unless_null $P973, vivify_332
     new $P973, "Undef"
-  vivify_331:
+  vivify_332:
     $P971."push"($P973)
   if_968_end:
 .annotate "line", 353
     get_global $P974, "@BLOCK"
-    unless_null $P974, vivify_332
+    unless_null $P974, vivify_333
     $P974 = root_new ['parrot';'ResizablePMCArray']
-  vivify_332:
+  vivify_333:
     set $P975, $P974[0]
-    unless_null $P975, vivify_333
+    unless_null $P975, vivify_334
     new $P975, "Undef"
-  vivify_333:
+  vivify_334:
     $P976 = $P975."loadinit"()
     find_lex $P977, "$classinit"
     $P976."push"($P977)
@@ -18840,7 +18915,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_def"  :subid("62_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "package_def"  :subid("62_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_985
 .annotate "line", 357
     new $P984, 'ExceptionHandler'
@@ -18853,34 +18928,34 @@
     new $P986, "Undef"
     .lex "$past", $P986
     find_lex $P989, "$/"
-    unless_null $P989, vivify_334
+    unless_null $P989, vivify_335
     $P989 = root_new ['parrot';'Hash']
-  vivify_334:
+  vivify_335:
     set $P990, $P989["block"]
-    unless_null $P990, vivify_335
+    unless_null $P990, vivify_336
     new $P990, "Undef"
-  vivify_335:
+  vivify_336:
     if $P990, if_988
     find_lex $P994, "$/"
-    unless_null $P994, vivify_336
+    unless_null $P994, vivify_337
     $P994 = root_new ['parrot';'Hash']
-  vivify_336:
+  vivify_337:
     set $P995, $P994["comp_unit"]
-    unless_null $P995, vivify_337
+    unless_null $P995, vivify_338
     new $P995, "Undef"
-  vivify_337:
+  vivify_338:
     $P996 = $P995."ast"()
     set $P987, $P996
     goto if_988_end
   if_988:
     find_lex $P991, "$/"
-    unless_null $P991, vivify_338
+    unless_null $P991, vivify_339
     $P991 = root_new ['parrot';'Hash']
-  vivify_338:
+  vivify_339:
     set $P992, $P991["block"]
-    unless_null $P992, vivify_339
+    unless_null $P992, vivify_340
     new $P992, "Undef"
-  vivify_339:
+  vivify_340:
     $P993 = $P992."ast"()
     set $P987, $P993
   if_988_end:
@@ -18888,17 +18963,17 @@
 .annotate "line", 359
     find_lex $P997, "$past"
     find_lex $P998, "$/"
-    unless_null $P998, vivify_340
+    unless_null $P998, vivify_341
     $P998 = root_new ['parrot';'Hash']
-  vivify_340:
+  vivify_341:
     set $P999, $P998["name"]
-    unless_null $P999, vivify_341
+    unless_null $P999, vivify_342
     $P999 = root_new ['parrot';'Hash']
-  vivify_341:
+  vivify_342:
     set $P1000, $P999["identifier"]
-    unless_null $P1000, vivify_342
+    unless_null $P1000, vivify_343
     new $P1000, "Undef"
-  vivify_342:
+  vivify_343:
     $P997."namespace"($P1000)
 .annotate "line", 360
     find_lex $P1001, "$past"
@@ -18918,7 +18993,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<my>"  :subid("63_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "scope_declarator:sym<my>"  :subid("63_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1009
 .annotate "line", 364
     new $P1008, 'ExceptionHandler'
@@ -18929,13 +19004,13 @@
     .lex "$/", param_1009
     find_lex $P1010, "$/"
     find_lex $P1011, "$/"
-    unless_null $P1011, vivify_343
+    unless_null $P1011, vivify_344
     $P1011 = root_new ['parrot';'Hash']
-  vivify_343:
+  vivify_344:
     set $P1012, $P1011["scoped"]
-    unless_null $P1012, vivify_344
+    unless_null $P1012, vivify_345
     new $P1012, "Undef"
-  vivify_344:
+  vivify_345:
     $P1013 = $P1012."ast"()
     $P1014 = $P1010."!make"($P1013)
     .return ($P1014)
@@ -18948,7 +19023,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<our>"  :subid("64_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "scope_declarator:sym<our>"  :subid("64_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1019
 .annotate "line", 365
     new $P1018, 'ExceptionHandler'
@@ -18959,13 +19034,13 @@
     .lex "$/", param_1019
     find_lex $P1020, "$/"
     find_lex $P1021, "$/"
-    unless_null $P1021, vivify_345
+    unless_null $P1021, vivify_346
     $P1021 = root_new ['parrot';'Hash']
-  vivify_345:
+  vivify_346:
     set $P1022, $P1021["scoped"]
-    unless_null $P1022, vivify_346
+    unless_null $P1022, vivify_347
     new $P1022, "Undef"
-  vivify_346:
+  vivify_347:
     $P1023 = $P1022."ast"()
     $P1024 = $P1020."!make"($P1023)
     .return ($P1024)
@@ -18978,7 +19053,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<has>"  :subid("65_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "scope_declarator:sym<has>"  :subid("65_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1029
 .annotate "line", 366
     new $P1028, 'ExceptionHandler'
@@ -18989,13 +19064,13 @@
     .lex "$/", param_1029
     find_lex $P1030, "$/"
     find_lex $P1031, "$/"
-    unless_null $P1031, vivify_347
+    unless_null $P1031, vivify_348
     $P1031 = root_new ['parrot';'Hash']
-  vivify_347:
+  vivify_348:
     set $P1032, $P1031["scoped"]
-    unless_null $P1032, vivify_348
+    unless_null $P1032, vivify_349
     new $P1032, "Undef"
-  vivify_348:
+  vivify_349:
     $P1033 = $P1032."ast"()
     $P1034 = $P1030."!make"($P1033)
     .return ($P1034)
@@ -19008,7 +19083,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scoped"  :subid("66_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "scoped"  :subid("66_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1039
 .annotate "line", 368
     new $P1038, 'ExceptionHandler'
@@ -19021,36 +19096,36 @@
     find_lex $P1040, "$/"
 .annotate "line", 370
     find_lex $P1043, "$/"
-    unless_null $P1043, vivify_349
+    unless_null $P1043, vivify_350
     $P1043 = root_new ['parrot';'Hash']
-  vivify_349:
+  vivify_350:
     set $P1044, $P1043["routine_declarator"]
-    unless_null $P1044, vivify_350
+    unless_null $P1044, vivify_351
     new $P1044, "Undef"
-  vivify_350:
+  vivify_351:
     if $P1044, if_1042
 .annotate "line", 371
     find_lex $P1048, "$/"
-    unless_null $P1048, vivify_351
+    unless_null $P1048, vivify_352
     $P1048 = root_new ['parrot';'Hash']
-  vivify_351:
+  vivify_352:
     set $P1049, $P1048["variable_declarator"]
-    unless_null $P1049, vivify_352
+    unless_null $P1049, vivify_353
     new $P1049, "Undef"
-  vivify_352:
+  vivify_353:
     $P1050 = $P1049."ast"()
     set $P1041, $P1050
 .annotate "line", 370
     goto if_1042_end
   if_1042:
     find_lex $P1045, "$/"
-    unless_null $P1045, vivify_353
+    unless_null $P1045, vivify_354
     $P1045 = root_new ['parrot';'Hash']
-  vivify_353:
+  vivify_354:
     set $P1046, $P1045["routine_declarator"]
-    unless_null $P1046, vivify_354
+    unless_null $P1046, vivify_355
     new $P1046, "Undef"
-  vivify_354:
+  vivify_355:
     $P1047 = $P1046."ast"()
     set $P1041, $P1047
   if_1042_end:
@@ -19066,10 +19141,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "variable_declarator"  :subid("67_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "variable_declarator"  :subid("67_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1056
 .annotate "line", 374
-    .const 'Sub' $P1096 = "68_1271336409.53729" 
+    .const 'Sub' $P1096 = "68_1271948680.36754" 
     capture_lex $P1096
     new $P1055, 'ExceptionHandler'
     set_addr $P1055, control_1054
@@ -19091,28 +19166,28 @@
     .lex "$BLOCK", $P1060
 .annotate "line", 375
     find_lex $P1061, "$/"
-    unless_null $P1061, vivify_355
+    unless_null $P1061, vivify_356
     $P1061 = root_new ['parrot';'Hash']
-  vivify_355:
+  vivify_356:
     set $P1062, $P1061["variable"]
-    unless_null $P1062, vivify_356
+    unless_null $P1062, vivify_357
     new $P1062, "Undef"
-  vivify_356:
+  vivify_357:
     $P1063 = $P1062."ast"()
     store_lex "$past", $P1063
 .annotate "line", 376
     find_lex $P1064, "$/"
-    unless_null $P1064, vivify_357
+    unless_null $P1064, vivify_358
     $P1064 = root_new ['parrot';'Hash']
-  vivify_357:
+  vivify_358:
     set $P1065, $P1064["variable"]
-    unless_null $P1065, vivify_358
+    unless_null $P1065, vivify_359
     $P1065 = root_new ['parrot';'Hash']
-  vivify_358:
+  vivify_359:
     set $P1066, $P1065["sigil"]
-    unless_null $P1066, vivify_359
+    unless_null $P1066, vivify_360
     new $P1066, "Undef"
-  vivify_359:
+  vivify_360:
     store_lex "$sigil", $P1066
 .annotate "line", 377
     find_lex $P1067, "$past"
@@ -19120,13 +19195,13 @@
     store_lex "$name", $P1068
 .annotate "line", 378
     get_global $P1069, "@BLOCK"
-    unless_null $P1069, vivify_360
+    unless_null $P1069, vivify_361
     $P1069 = root_new ['parrot';'ResizablePMCArray']
-  vivify_360:
+  vivify_361:
     set $P1070, $P1069[0]
-    unless_null $P1070, vivify_361
+    unless_null $P1070, vivify_362
     new $P1070, "Undef"
-  vivify_361:
+  vivify_362:
     store_lex "$BLOCK", $P1070
 .annotate "line", 379
     find_lex $P1072, "$BLOCK"
@@ -19141,17 +19216,17 @@
   if_1071_end:
 .annotate "line", 382
     find_dynamic_lex $P1079, "$*SCOPE"
-    unless_null $P1079, vivify_362
-    get_hll_global $P1079, "$SCOPE"
     unless_null $P1079, vivify_363
+    get_hll_global $P1079, "$SCOPE"
+    unless_null $P1079, vivify_364
     die "Contextual $*SCOPE not found"
+  vivify_364:
   vivify_363:
-  vivify_362:
     set $S1080, $P1079
     iseq $I1081, $S1080, "has"
     if $I1081, if_1078
 .annotate "line", 391
-    .const 'Sub' $P1096 = "68_1271336409.53729" 
+    .const 'Sub' $P1096 = "68_1271948680.36754" 
     capture_lex $P1096
     $P1096()
     goto if_1078_end
@@ -19162,33 +19237,33 @@
     $P1082."symbol"($P1083, "attribute" :named("scope"))
 .annotate "line", 384
     find_lex $P1085, "$BLOCK"
-    unless_null $P1085, vivify_368
+    unless_null $P1085, vivify_369
     $P1085 = root_new ['parrot';'Hash']
-  vivify_368:
+  vivify_369:
     set $P1086, $P1085["attributes"]
-    unless_null $P1086, vivify_369
+    unless_null $P1086, vivify_370
     new $P1086, "Undef"
-  vivify_369:
+  vivify_370:
     if $P1086, unless_1084_end
 .annotate "line", 386
     get_hll_global $P1087, ["PAST"], "Op"
     $P1088 = $P1087."new"("list" :named("pasttype"), "attr" :named("named"))
     find_lex $P1089, "$BLOCK"
-    unless_null $P1089, vivify_370
+    unless_null $P1089, vivify_371
     $P1089 = root_new ['parrot';'Hash']
     store_lex "$BLOCK", $P1089
-  vivify_370:
+  vivify_371:
     set $P1089["attributes"], $P1088
   unless_1084_end:
 .annotate "line", 388
     find_lex $P1090, "$BLOCK"
-    unless_null $P1090, vivify_371
+    unless_null $P1090, vivify_372
     $P1090 = root_new ['parrot';'Hash']
-  vivify_371:
+  vivify_372:
     set $P1091, $P1090["attributes"]
-    unless_null $P1091, vivify_372
+    unless_null $P1091, vivify_373
     new $P1091, "Undef"
-  vivify_372:
+  vivify_373:
     find_lex $P1092, "$name"
     $P1091."push"($P1092)
 .annotate "line", 389
@@ -19211,7 +19286,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1095"  :anon :subid("68_1271336409.53729") :outer("67_1271336409.53729")
+.sub "_block1095"  :anon :subid("68_1271948680.36754") :outer("67_1271948680.36754")
 .annotate "line", 392
     new $P1097, "Undef"
     .lex "$scope", $P1097
@@ -19220,12 +19295,12 @@
     .lex "$decl", $P1098
 .annotate "line", 392
     find_dynamic_lex $P1101, "$*SCOPE"
-    unless_null $P1101, vivify_364
-    get_hll_global $P1101, "$SCOPE"
     unless_null $P1101, vivify_365
+    get_hll_global $P1101, "$SCOPE"
+    unless_null $P1101, vivify_366
     die "Contextual $*SCOPE not found"
+  vivify_366:
   vivify_365:
-  vivify_364:
     set $S1102, $P1101
     iseq $I1103, $S1102, "our"
     if $I1103, if_1100
@@ -19257,13 +19332,13 @@
     $P1113."symbol"($P1114, $P1115 :named("scope"))
 .annotate "line", 397
     find_lex $P1116, "$BLOCK"
-    unless_null $P1116, vivify_366
+    unless_null $P1116, vivify_367
     $P1116 = root_new ['parrot';'ResizablePMCArray']
-  vivify_366:
+  vivify_367:
     set $P1117, $P1116[0]
-    unless_null $P1117, vivify_367
+    unless_null $P1117, vivify_368
     new $P1117, "Undef"
-  vivify_367:
+  vivify_368:
     find_lex $P1118, "$decl"
     $P1119 = $P1117."push"($P1118)
 .annotate "line", 391
@@ -19272,7 +19347,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<sub>"  :subid("69_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "routine_declarator:sym<sub>"  :subid("69_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1127
 .annotate "line", 402
     new $P1126, 'ExceptionHandler'
@@ -19283,13 +19358,13 @@
     .lex "$/", param_1127
     find_lex $P1128, "$/"
     find_lex $P1129, "$/"
-    unless_null $P1129, vivify_373
+    unless_null $P1129, vivify_374
     $P1129 = root_new ['parrot';'Hash']
-  vivify_373:
+  vivify_374:
     set $P1130, $P1129["routine_def"]
-    unless_null $P1130, vivify_374
+    unless_null $P1130, vivify_375
     new $P1130, "Undef"
-  vivify_374:
+  vivify_375:
     $P1131 = $P1130."ast"()
     $P1132 = $P1128."!make"($P1131)
     .return ($P1132)
@@ -19302,7 +19377,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<method>"  :subid("70_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "routine_declarator:sym<method>"  :subid("70_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1137
 .annotate "line", 403
     new $P1136, 'ExceptionHandler'
@@ -19313,13 +19388,13 @@
     .lex "$/", param_1137
     find_lex $P1138, "$/"
     find_lex $P1139, "$/"
-    unless_null $P1139, vivify_375
+    unless_null $P1139, vivify_376
     $P1139 = root_new ['parrot';'Hash']
-  vivify_375:
+  vivify_376:
     set $P1140, $P1139["method_def"]
-    unless_null $P1140, vivify_376
+    unless_null $P1140, vivify_377
     new $P1140, "Undef"
-  vivify_376:
+  vivify_377:
     $P1141 = $P1140."ast"()
     $P1142 = $P1138."!make"($P1141)
     .return ($P1142)
@@ -19332,10 +19407,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_def"  :subid("71_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "routine_def"  :subid("71_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1147
 .annotate "line", 405
-    .const 'Sub' $P1158 = "72_1271336409.53729" 
+    .const 'Sub' $P1158 = "72_1271948680.36754" 
     capture_lex $P1158
     new $P1146, 'ExceptionHandler'
     set_addr $P1146, control_1145
@@ -19347,13 +19422,13 @@
     new $P1148, "Undef"
     .lex "$past", $P1148
     find_lex $P1149, "$/"
-    unless_null $P1149, vivify_377
+    unless_null $P1149, vivify_378
     $P1149 = root_new ['parrot';'Hash']
-  vivify_377:
+  vivify_378:
     set $P1150, $P1149["blockoid"]
-    unless_null $P1150, vivify_378
+    unless_null $P1150, vivify_379
     new $P1150, "Undef"
-  vivify_378:
+  vivify_379:
     $P1151 = $P1150."ast"()
     store_lex "$past", $P1151
 .annotate "line", 407
@@ -19364,15 +19439,15 @@
     $P1153."control"("return_pir")
 .annotate "line", 409
     find_lex $P1155, "$/"
-    unless_null $P1155, vivify_379
+    unless_null $P1155, vivify_380
     $P1155 = root_new ['parrot';'Hash']
-  vivify_379:
+  vivify_380:
     set $P1156, $P1155["deflongname"]
-    unless_null $P1156, vivify_380
+    unless_null $P1156, vivify_381
     new $P1156, "Undef"
-  vivify_380:
+  vivify_381:
     unless $P1156, if_1154_end
-    .const 'Sub' $P1158 = "72_1271336409.53729" 
+    .const 'Sub' $P1158 = "72_1271948680.36754" 
     capture_lex $P1158
     $P1158()
   if_1154_end:
@@ -19391,37 +19466,37 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1157"  :anon :subid("72_1271336409.53729") :outer("71_1271336409.53729")
+.sub "_block1157"  :anon :subid("72_1271948680.36754") :outer("71_1271948680.36754")
 .annotate "line", 410
     new $P1159, "Undef"
     .lex "$name", $P1159
     find_lex $P1160, "$/"
-    unless_null $P1160, vivify_381
+    unless_null $P1160, vivify_382
     $P1160 = root_new ['parrot';'Hash']
-  vivify_381:
+  vivify_382:
     set $P1161, $P1160["sigil"]
-    unless_null $P1161, vivify_382
+    unless_null $P1161, vivify_383
     $P1161 = root_new ['parrot';'ResizablePMCArray']
-  vivify_382:
+  vivify_383:
     set $P1162, $P1161[0]
-    unless_null $P1162, vivify_383
+    unless_null $P1162, vivify_384
     new $P1162, "Undef"
-  vivify_383:
+  vivify_384:
     set $S1163, $P1162
     new $P1164, 'String'
     set $P1164, $S1163
     find_lex $P1165, "$/"
-    unless_null $P1165, vivify_384
+    unless_null $P1165, vivify_385
     $P1165 = root_new ['parrot';'Hash']
-  vivify_384:
+  vivify_385:
     set $P1166, $P1165["deflongname"]
-    unless_null $P1166, vivify_385
+    unless_null $P1166, vivify_386
     $P1166 = root_new ['parrot';'ResizablePMCArray']
-  vivify_385:
+  vivify_386:
     set $P1167, $P1166[0]
-    unless_null $P1167, vivify_386
+    unless_null $P1167, vivify_387
     new $P1167, "Undef"
-  vivify_386:
+  vivify_387:
     $S1168 = $P1167."ast"()
     concat $P1169, $P1164, $S1168
     store_lex "$name", $P1169
@@ -19431,12 +19506,12 @@
     $P1170."name"($P1171)
 .annotate "line", 412
     find_dynamic_lex $P1174, "$*SCOPE"
-    unless_null $P1174, vivify_387
-    get_hll_global $P1174, "$SCOPE"
     unless_null $P1174, vivify_388
+    get_hll_global $P1174, "$SCOPE"
+    unless_null $P1174, vivify_389
     die "Contextual $*SCOPE not found"
+  vivify_389:
   vivify_388:
-  vivify_387:
     set $S1175, $P1174
     isne $I1176, $S1175, "our"
     if $I1176, if_1173
@@ -19446,17 +19521,17 @@
   if_1173:
 .annotate "line", 413
     get_global $P1177, "@BLOCK"
-    unless_null $P1177, vivify_389
+    unless_null $P1177, vivify_390
     $P1177 = root_new ['parrot';'ResizablePMCArray']
-  vivify_389:
+  vivify_390:
     set $P1178, $P1177[0]
-    unless_null $P1178, vivify_390
+    unless_null $P1178, vivify_391
     $P1178 = root_new ['parrot';'ResizablePMCArray']
-  vivify_390:
+  vivify_391:
     set $P1179, $P1178[0]
-    unless_null $P1179, vivify_391
+    unless_null $P1179, vivify_392
     new $P1179, "Undef"
-  vivify_391:
+  vivify_392:
     get_hll_global $P1180, ["PAST"], "Var"
     find_lex $P1181, "$name"
     find_lex $P1182, "$past"
@@ -19464,13 +19539,13 @@
     $P1179."push"($P1183)
 .annotate "line", 415
     get_global $P1184, "@BLOCK"
-    unless_null $P1184, vivify_392
+    unless_null $P1184, vivify_393
     $P1184 = root_new ['parrot';'ResizablePMCArray']
-  vivify_392:
+  vivify_393:
     set $P1185, $P1184[0]
-    unless_null $P1185, vivify_393
+    unless_null $P1185, vivify_394
     new $P1185, "Undef"
-  vivify_393:
+  vivify_394:
     find_lex $P1186, "$name"
     $P1185."symbol"($P1186, "lexical" :named("scope"))
 .annotate "line", 416
@@ -19487,10 +19562,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "method_def"  :subid("73_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "method_def"  :subid("73_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1197
 .annotate "line", 423
-    .const 'Sub' $P1213 = "74_1271336409.53729" 
+    .const 'Sub' $P1213 = "74_1271948680.36754" 
     capture_lex $P1213
     new $P1196, 'ExceptionHandler'
     set_addr $P1196, control_1195
@@ -19502,13 +19577,13 @@
     new $P1198, "Undef"
     .lex "$past", $P1198
     find_lex $P1199, "$/"
-    unless_null $P1199, vivify_394
+    unless_null $P1199, vivify_395
     $P1199 = root_new ['parrot';'Hash']
-  vivify_394:
+  vivify_395:
     set $P1200, $P1199["blockoid"]
-    unless_null $P1200, vivify_395
+    unless_null $P1200, vivify_396
     new $P1200, "Undef"
-  vivify_395:
+  vivify_396:
     $P1201 = $P1200."ast"()
     store_lex "$past", $P1201
 .annotate "line", 425
@@ -19519,13 +19594,13 @@
     $P1203."control"("return_pir")
 .annotate "line", 427
     find_lex $P1204, "$past"
-    unless_null $P1204, vivify_396
+    unless_null $P1204, vivify_397
     $P1204 = root_new ['parrot';'ResizablePMCArray']
-  vivify_396:
+  vivify_397:
     set $P1205, $P1204[0]
-    unless_null $P1205, vivify_397
+    unless_null $P1205, vivify_398
     new $P1205, "Undef"
-  vivify_397:
+  vivify_398:
     get_hll_global $P1206, ["PAST"], "Op"
     $P1207 = $P1206."new"("    .lex \"self\", self" :named("inline"))
     $P1205."unshift"($P1207)
@@ -19534,15 +19609,15 @@
     $P1208."symbol"("self", "lexical" :named("scope"))
 .annotate "line", 429
     find_lex $P1210, "$/"
-    unless_null $P1210, vivify_398
+    unless_null $P1210, vivify_399
     $P1210 = root_new ['parrot';'Hash']
-  vivify_398:
+  vivify_399:
     set $P1211, $P1210["deflongname"]
-    unless_null $P1211, vivify_399
+    unless_null $P1211, vivify_400
     new $P1211, "Undef"
-  vivify_399:
+  vivify_400:
     unless $P1211, if_1209_end
-    .const 'Sub' $P1213 = "74_1271336409.53729" 
+    .const 'Sub' $P1213 = "74_1271948680.36754" 
     capture_lex $P1213
     $P1213()
   if_1209_end:
@@ -19561,22 +19636,22 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1212"  :anon :subid("74_1271336409.53729") :outer("73_1271336409.53729")
+.sub "_block1212"  :anon :subid("74_1271948680.36754") :outer("73_1271948680.36754")
 .annotate "line", 430
     new $P1214, "Undef"
     .lex "$name", $P1214
     find_lex $P1215, "$/"
-    unless_null $P1215, vivify_400
+    unless_null $P1215, vivify_401
     $P1215 = root_new ['parrot';'Hash']
-  vivify_400:
+  vivify_401:
     set $P1216, $P1215["deflongname"]
-    unless_null $P1216, vivify_401
+    unless_null $P1216, vivify_402
     $P1216 = root_new ['parrot';'ResizablePMCArray']
-  vivify_401:
+  vivify_402:
     set $P1217, $P1216[0]
-    unless_null $P1217, vivify_402
+    unless_null $P1217, vivify_403
     new $P1217, "Undef"
-  vivify_402:
+  vivify_403:
     $P1218 = $P1217."ast"()
     set $S1219, $P1218
     new $P1220, 'String'
@@ -19592,10 +19667,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "signature"  :subid("75_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "signature"  :subid("75_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1231
 .annotate "line", 437
-    .const 'Sub' $P1242 = "76_1271336409.53729" 
+    .const 'Sub' $P1242 = "76_1271948680.36754" 
     capture_lex $P1242
     new $P1230, 'ExceptionHandler'
     set_addr $P1230, control_1229
@@ -19607,29 +19682,29 @@
     new $P1232, "Undef"
     .lex "$BLOCKINIT", $P1232
     get_global $P1233, "@BLOCK"
-    unless_null $P1233, vivify_403
+    unless_null $P1233, vivify_404
     $P1233 = root_new ['parrot';'ResizablePMCArray']
-  vivify_403:
+  vivify_404:
     set $P1234, $P1233[0]
-    unless_null $P1234, vivify_404
+    unless_null $P1234, vivify_405
     $P1234 = root_new ['parrot';'ResizablePMCArray']
-  vivify_404:
+  vivify_405:
     set $P1235, $P1234[0]
-    unless_null $P1235, vivify_405
+    unless_null $P1235, vivify_406
     new $P1235, "Undef"
-  vivify_405:
+  vivify_406:
     store_lex "$BLOCKINIT", $P1235
 .annotate "line", 439
     find_lex $P1237, "$/"
-    unless_null $P1237, vivify_406
+    unless_null $P1237, vivify_407
     $P1237 = root_new ['parrot';'Hash']
-  vivify_406:
+  vivify_407:
     set $P1238, $P1237["parameter"]
-    unless_null $P1238, vivify_407
+    unless_null $P1238, vivify_408
     new $P1238, "Undef"
-  vivify_407:
+  vivify_408:
     defined $I1239, $P1238
-    unless $I1239, for_undef_408
+    unless $I1239, for_undef_409
     iter $P1236, $P1238
     new $P1249, 'ExceptionHandler'
     set_addr $P1249, loop1248_handler
@@ -19639,7 +19714,7 @@
     unless $P1236, loop1248_done
     shift $P1240, $P1236
   loop1248_redo:
-    .const 'Sub' $P1242 = "76_1271336409.53729" 
+    .const 'Sub' $P1242 = "76_1271948680.36754" 
     capture_lex $P1242
     $P1242($P1240)
   loop1248_next:
@@ -19652,7 +19727,7 @@
     eq $P1250, 67, loop1248_redo
   loop1248_done:
     pop_eh 
-  for_undef_408:
+  for_undef_409:
 .annotate "line", 437
     .return ($P1236)
   control_1229:
@@ -19664,7 +19739,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1241"  :anon :subid("76_1271336409.53729") :outer("75_1271336409.53729")
+.sub "_block1241"  :anon :subid("76_1271948680.36754") :outer("75_1271948680.36754")
     .param pmc param_1243
 .annotate "line", 439
     .lex "$_", param_1243
@@ -19677,7 +19752,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "parameter"  :subid("77_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "parameter"  :subid("77_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1255
 .annotate "line", 442
     new $P1254, 'ExceptionHandler'
@@ -19694,34 +19769,34 @@
     .lex "$past", $P1257
 .annotate "line", 443
     find_lex $P1258, "$/"
-    unless_null $P1258, vivify_409
+    unless_null $P1258, vivify_410
     $P1258 = root_new ['parrot';'Hash']
-  vivify_409:
+  vivify_410:
     set $P1259, $P1258["quant"]
-    unless_null $P1259, vivify_410
+    unless_null $P1259, vivify_411
     new $P1259, "Undef"
-  vivify_410:
+  vivify_411:
     store_lex "$quant", $P1259
     find_lex $P1260, "$past"
 .annotate "line", 445
     find_lex $P1262, "$/"
-    unless_null $P1262, vivify_411
+    unless_null $P1262, vivify_412
     $P1262 = root_new ['parrot';'Hash']
-  vivify_411:
+  vivify_412:
     set $P1263, $P1262["named_param"]
-    unless_null $P1263, vivify_412
+    unless_null $P1263, vivify_413
     new $P1263, "Undef"
-  vivify_412:
+  vivify_413:
     if $P1263, if_1261
 .annotate "line", 452
     find_lex $P1277, "$/"
-    unless_null $P1277, vivify_413
+    unless_null $P1277, vivify_414
     $P1277 = root_new ['parrot';'Hash']
-  vivify_413:
+  vivify_414:
     set $P1278, $P1277["param_var"]
-    unless_null $P1278, vivify_414
+    unless_null $P1278, vivify_415
     new $P1278, "Undef"
-  vivify_414:
+  vivify_415:
     $P1279 = $P1278."ast"()
     store_lex "$past", $P1279
 .annotate "line", 453
@@ -19737,17 +19812,17 @@
 .annotate "line", 458
     find_lex $P1295, "$past"
     find_lex $P1296, "$/"
-    unless_null $P1296, vivify_415
+    unless_null $P1296, vivify_416
     $P1296 = root_new ['parrot';'Hash']
-  vivify_415:
+  vivify_416:
     set $P1297, $P1296["param_var"]
-    unless_null $P1297, vivify_416
+    unless_null $P1297, vivify_417
     $P1297 = root_new ['parrot';'Hash']
-  vivify_416:
+  vivify_417:
     set $P1298, $P1297["sigil"]
-    unless_null $P1298, vivify_417
+    unless_null $P1298, vivify_418
     new $P1298, "Undef"
-  vivify_417:
+  vivify_418:
     $P1299 = "vivitype"($P1298)
     $P1295."viviself"($P1299)
   if_1291_end:
@@ -19760,17 +19835,17 @@
 .annotate "line", 455
     find_lex $P1285, "$past"
     find_lex $P1286, "$/"
-    unless_null $P1286, vivify_418
+    unless_null $P1286, vivify_419
     $P1286 = root_new ['parrot';'Hash']
-  vivify_418:
+  vivify_419:
     set $P1287, $P1286["param_var"]
-    unless_null $P1287, vivify_419
+    unless_null $P1287, vivify_420
     $P1287 = root_new ['parrot';'Hash']
-  vivify_419:
+  vivify_420:
     set $P1288, $P1287["sigil"]
-    unless_null $P1288, vivify_420
+    unless_null $P1288, vivify_421
     new $P1288, "Undef"
-  vivify_420:
+  vivify_421:
     set $S1289, $P1288
     iseq $I1290, $S1289, "%"
     $P1285."named"($I1290)
@@ -19780,13 +19855,13 @@
   if_1261:
 .annotate "line", 446
     find_lex $P1264, "$/"
-    unless_null $P1264, vivify_421
+    unless_null $P1264, vivify_422
     $P1264 = root_new ['parrot';'Hash']
-  vivify_421:
+  vivify_422:
     set $P1265, $P1264["named_param"]
-    unless_null $P1265, vivify_422
+    unless_null $P1265, vivify_423
     new $P1265, "Undef"
-  vivify_422:
+  vivify_423:
     $P1266 = $P1265."ast"()
     store_lex "$past", $P1266
 .annotate "line", 447
@@ -19797,34 +19872,34 @@
 .annotate "line", 448
     find_lex $P1271, "$past"
     find_lex $P1272, "$/"
-    unless_null $P1272, vivify_423
+    unless_null $P1272, vivify_424
     $P1272 = root_new ['parrot';'Hash']
-  vivify_423:
+  vivify_424:
     set $P1273, $P1272["named_param"]
-    unless_null $P1273, vivify_424
+    unless_null $P1273, vivify_425
     $P1273 = root_new ['parrot';'Hash']
-  vivify_424:
+  vivify_425:
     set $P1274, $P1273["param_var"]
-    unless_null $P1274, vivify_425
+    unless_null $P1274, vivify_426
     $P1274 = root_new ['parrot';'Hash']
-  vivify_425:
+  vivify_426:
     set $P1275, $P1274["sigil"]
-    unless_null $P1275, vivify_426
+    unless_null $P1275, vivify_427
     new $P1275, "Undef"
-  vivify_426:
+  vivify_427:
     $P1276 = "vivitype"($P1275)
     $P1271."viviself"($P1276)
   if_1267_end:
   if_1261_end:
 .annotate "line", 461
     find_lex $P1301, "$/"
-    unless_null $P1301, vivify_427
+    unless_null $P1301, vivify_428
     $P1301 = root_new ['parrot';'Hash']
-  vivify_427:
+  vivify_428:
     set $P1302, $P1301["default_value"]
-    unless_null $P1302, vivify_428
+    unless_null $P1302, vivify_429
     new $P1302, "Undef"
-  vivify_428:
+  vivify_429:
     unless $P1302, if_1300_end
 .annotate "line", 462
     find_lex $P1304, "$quant"
@@ -19849,21 +19924,21 @@
 .annotate "line", 468
     find_lex $P1315, "$past"
     find_lex $P1316, "$/"
-    unless_null $P1316, vivify_429
+    unless_null $P1316, vivify_430
     $P1316 = root_new ['parrot';'Hash']
-  vivify_429:
+  vivify_430:
     set $P1317, $P1316["default_value"]
-    unless_null $P1317, vivify_430
+    unless_null $P1317, vivify_431
     $P1317 = root_new ['parrot';'ResizablePMCArray']
-  vivify_430:
+  vivify_431:
     set $P1318, $P1317[0]
-    unless_null $P1318, vivify_431
+    unless_null $P1318, vivify_432
     $P1318 = root_new ['parrot';'Hash']
-  vivify_431:
+  vivify_432:
     set $P1319, $P1318["EXPR"]
-    unless_null $P1319, vivify_432
+    unless_null $P1319, vivify_433
     new $P1319, "Undef"
-  vivify_432:
+  vivify_433:
     $P1320 = $P1319."ast"()
     $P1315."viviself"($P1320)
   if_1300_end:
@@ -19872,21 +19947,21 @@
     $P1323 = $P1322."viviself"()
     if $P1323, unless_1321_end
     get_global $P1324, "@BLOCK"
-    unless_null $P1324, vivify_433
+    unless_null $P1324, vivify_434
     $P1324 = root_new ['parrot';'ResizablePMCArray']
-  vivify_433:
+  vivify_434:
     set $P1325, $P1324[0]
-    unless_null $P1325, vivify_434
+    unless_null $P1325, vivify_435
     new $P1325, "Undef"
-  vivify_434:
+  vivify_435:
     get_global $P1326, "@BLOCK"
-    unless_null $P1326, vivify_435
+    unless_null $P1326, vivify_436
     $P1326 = root_new ['parrot';'ResizablePMCArray']
-  vivify_435:
+  vivify_436:
     set $P1327, $P1326[0]
-    unless_null $P1327, vivify_436
+    unless_null $P1327, vivify_437
     new $P1327, "Undef"
-  vivify_436:
+  vivify_437:
     $P1328 = $P1327."arity"()
     set $N1329, $P1328
     new $P1330, 'Float'
@@ -19909,7 +19984,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "param_var"  :subid("78_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "param_var"  :subid("78_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1339
 .annotate "line", 474
     new $P1338, 'ExceptionHandler'
@@ -19938,13 +20013,13 @@
     store_lex "$past", $P1348
 .annotate "line", 478
     get_global $P1349, "@BLOCK"
-    unless_null $P1349, vivify_437
+    unless_null $P1349, vivify_438
     $P1349 = root_new ['parrot';'ResizablePMCArray']
-  vivify_437:
+  vivify_438:
     set $P1350, $P1349[0]
-    unless_null $P1350, vivify_438
+    unless_null $P1350, vivify_439
     new $P1350, "Undef"
-  vivify_438:
+  vivify_439:
     find_lex $P1351, "$name"
     $P1350."symbol"($P1351, "lexical" :named("scope"))
 .annotate "line", 479
@@ -19962,7 +20037,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "named_param"  :subid("79_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "named_param"  :subid("79_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1359
 .annotate "line", 482
     new $P1358, 'ExceptionHandler'
@@ -19975,29 +20050,29 @@
     new $P1360, "Undef"
     .lex "$past", $P1360
     find_lex $P1361, "$/"
-    unless_null $P1361, vivify_439
+    unless_null $P1361, vivify_440
     $P1361 = root_new ['parrot';'Hash']
-  vivify_439:
+  vivify_440:
     set $P1362, $P1361["param_var"]
-    unless_null $P1362, vivify_440
+    unless_null $P1362, vivify_441
     new $P1362, "Undef"
-  vivify_440:
+  vivify_441:
     $P1363 = $P1362."ast"()
     store_lex "$past", $P1363
 .annotate "line", 484
     find_lex $P1364, "$past"
     find_lex $P1365, "$/"
-    unless_null $P1365, vivify_441
+    unless_null $P1365, vivify_442
     $P1365 = root_new ['parrot';'Hash']
-  vivify_441:
+  vivify_442:
     set $P1366, $P1365["param_var"]
-    unless_null $P1366, vivify_442
+    unless_null $P1366, vivify_443
     $P1366 = root_new ['parrot';'Hash']
-  vivify_442:
+  vivify_443:
     set $P1367, $P1366["name"]
-    unless_null $P1367, vivify_443
+    unless_null $P1367, vivify_444
     new $P1367, "Undef"
-  vivify_443:
+  vivify_444:
     set $S1368, $P1367
     $P1364."named"($S1368)
 .annotate "line", 485
@@ -20015,14 +20090,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "regex_declarator"  :subid("80_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "regex_declarator"  :subid("80_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1376
     .param pmc param_1377 :optional
     .param int has_param_1377 :opt_flag
 .annotate "line", 488
-    .const 'Sub' $P1447 = "82_1271336409.53729" 
+    .const 'Sub' $P1447 = "82_1271948680.36754" 
     capture_lex $P1447
-    .const 'Sub' $P1419 = "81_1271336409.53729" 
+    .const 'Sub' $P1419 = "81_1271948680.36754" 
     capture_lex $P1419
     new $P1375, 'ExceptionHandler'
     set_addr $P1375, control_1374
@@ -20030,10 +20105,10 @@
     push_eh $P1375
     .lex "self", self
     .lex "$/", param_1376
-    if has_param_1377, optparam_444
+    if has_param_1377, optparam_445
     new $P1378, "Undef"
     set param_1377, $P1378
-  optparam_444:
+  optparam_445:
     .lex "$key", param_1377
 .annotate "line", 489
     $P1379 = root_new ['parrot';'ResizablePMCArray']
@@ -20051,13 +20126,13 @@
     store_lex "@MODIFIERS", $P1382
 .annotate "line", 492
     find_lex $P1383, "$/"
-    unless_null $P1383, vivify_445
+    unless_null $P1383, vivify_446
     $P1383 = root_new ['parrot';'Hash']
-  vivify_445:
+  vivify_446:
     set $P1384, $P1383["deflongname"]
-    unless_null $P1384, vivify_446
+    unless_null $P1384, vivify_447
     new $P1384, "Undef"
-  vivify_446:
+  vivify_447:
     $P1385 = $P1384."ast"()
     set $S1386, $P1385
     new $P1387, 'String'
@@ -20066,13 +20141,13 @@
     find_lex $P1388, "$past"
 .annotate "line", 494
     find_lex $P1390, "$/"
-    unless_null $P1390, vivify_447
+    unless_null $P1390, vivify_448
     $P1390 = root_new ['parrot';'Hash']
-  vivify_447:
+  vivify_448:
     set $P1391, $P1390["proto"]
-    unless_null $P1391, vivify_448
+    unless_null $P1391, vivify_449
     new $P1391, "Undef"
-  vivify_448:
+  vivify_449:
     if $P1391, if_1389
 .annotate "line", 521
     find_lex $P1415, "$key"
@@ -20080,13 +20155,13 @@
     iseq $I1417, $S1416, "open"
     if $I1417, if_1414
 .annotate "line", 534
-    .const 'Sub' $P1447 = "82_1271336409.53729" 
+    .const 'Sub' $P1447 = "82_1271948680.36754" 
     capture_lex $P1447
     $P1447()
     goto if_1414_end
   if_1414:
 .annotate "line", 521
-    .const 'Sub' $P1419 = "81_1271336409.53729" 
+    .const 'Sub' $P1419 = "81_1271948680.36754" 
     capture_lex $P1419
     $P1419()
   if_1414_end:
@@ -20143,20 +20218,20 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1446"  :anon :subid("82_1271336409.53729") :outer("80_1271336409.53729")
+.sub "_block1446"  :anon :subid("82_1271948680.36754") :outer("80_1271948680.36754")
 .annotate "line", 535
     new $P1448, "Undef"
     .lex "$regex", $P1448
 .annotate "line", 536
     get_hll_global $P1449, ["Regex";"P6Regex";"Actions"], "buildsub"
     find_lex $P1450, "$/"
-    unless_null $P1450, vivify_449
+    unless_null $P1450, vivify_450
     $P1450 = root_new ['parrot';'Hash']
-  vivify_449:
+  vivify_450:
     set $P1451, $P1450["p6regex"]
-    unless_null $P1451, vivify_450
+    unless_null $P1451, vivify_451
     new $P1451, "Undef"
-  vivify_450:
+  vivify_451:
     $P1452 = $P1451."ast"()
     get_global $P1453, "@BLOCK"
     $P1454 = $P1453."shift"()
@@ -20180,10 +20255,10 @@
 .annotate "line", 545
     find_lex $P1464, "$regex"
     find_lex $P1465, "$past"
-    unless_null $P1465, vivify_451
+    unless_null $P1465, vivify_452
     $P1465 = root_new ['parrot';'Hash']
     store_lex "$past", $P1465
-  vivify_451:
+  vivify_452:
     set $P1465["sink"], $P1464
 .annotate "line", 546
     find_lex $P1466, "@MODIFIERS"
@@ -20194,7 +20269,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1418"  :anon :subid("81_1271336409.53729") :outer("80_1271336409.53729")
+.sub "_block1418"  :anon :subid("81_1271948680.36754") :outer("80_1271948680.36754")
 .annotate "line", 522
     $P1420 = root_new ['parrot';'Hash']
     .lex "%h", $P1420
@@ -20202,52 +20277,52 @@
     find_lex $P1421, "%h"
 .annotate "line", 523
     find_lex $P1423, "$/"
-    unless_null $P1423, vivify_452
+    unless_null $P1423, vivify_453
     $P1423 = root_new ['parrot';'Hash']
-  vivify_452:
+  vivify_453:
     set $P1424, $P1423["sym"]
-    unless_null $P1424, vivify_453
+    unless_null $P1424, vivify_454
     new $P1424, "Undef"
-  vivify_453:
+  vivify_454:
     set $S1425, $P1424
     iseq $I1426, $S1425, "token"
     unless $I1426, if_1422_end
     new $P1427, "Integer"
     assign $P1427, 1
     find_lex $P1428, "%h"
-    unless_null $P1428, vivify_454
+    unless_null $P1428, vivify_455
     $P1428 = root_new ['parrot';'Hash']
     store_lex "%h", $P1428
-  vivify_454:
+  vivify_455:
     set $P1428["r"], $P1427
   if_1422_end:
 .annotate "line", 524
     find_lex $P1430, "$/"
-    unless_null $P1430, vivify_455
+    unless_null $P1430, vivify_456
     $P1430 = root_new ['parrot';'Hash']
-  vivify_455:
+  vivify_456:
     set $P1431, $P1430["sym"]
-    unless_null $P1431, vivify_456
+    unless_null $P1431, vivify_457
     new $P1431, "Undef"
-  vivify_456:
+  vivify_457:
     set $S1432, $P1431
     iseq $I1433, $S1432, "rule"
     unless $I1433, if_1429_end
     new $P1434, "Integer"
     assign $P1434, 1
     find_lex $P1435, "%h"
-    unless_null $P1435, vivify_457
+    unless_null $P1435, vivify_458
     $P1435 = root_new ['parrot';'Hash']
     store_lex "%h", $P1435
-  vivify_457:
+  vivify_458:
     set $P1435["r"], $P1434
     new $P1436, "Integer"
     assign $P1436, 1
     find_lex $P1437, "%h"
-    unless_null $P1437, vivify_458
+    unless_null $P1437, vivify_459
     $P1437 = root_new ['parrot';'Hash']
     store_lex "%h", $P1437
-  vivify_458:
+  vivify_459:
     set $P1437["s"], $P1436
   if_1429_end:
 .annotate "line", 525
@@ -20261,23 +20336,23 @@
         
 .annotate "line", 530
     get_global $P1440, "@BLOCK"
-    unless_null $P1440, vivify_459
+    unless_null $P1440, vivify_460
     $P1440 = root_new ['parrot';'ResizablePMCArray']
-  vivify_459:
+  vivify_460:
     set $P1441, $P1440[0]
-    unless_null $P1441, vivify_460
+    unless_null $P1441, vivify_461
     new $P1441, "Undef"
-  vivify_460:
+  vivify_461:
     $P1441."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
 .annotate "line", 531
     get_global $P1442, "@BLOCK"
-    unless_null $P1442, vivify_461
+    unless_null $P1442, vivify_462
     $P1442 = root_new ['parrot';'ResizablePMCArray']
-  vivify_461:
+  vivify_462:
     set $P1443, $P1442[0]
-    unless_null $P1443, vivify_462
+    unless_null $P1443, vivify_463
     new $P1443, "Undef"
-  vivify_462:
+  vivify_463:
     $P1443."symbol"("$/", "lexical" :named("scope"))
 .annotate "line", 532
     new $P1444, "Exception"
@@ -20292,7 +20367,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "dotty"  :subid("83_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "dotty"  :subid("83_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1475
 .annotate "line", 552
     new $P1474, 'ExceptionHandler'
@@ -20305,13 +20380,13 @@
     new $P1476, "Undef"
     .lex "$past", $P1476
     find_lex $P1479, "$/"
-    unless_null $P1479, vivify_463
+    unless_null $P1479, vivify_464
     $P1479 = root_new ['parrot';'Hash']
-  vivify_463:
+  vivify_464:
     set $P1480, $P1479["args"]
-    unless_null $P1480, vivify_464
+    unless_null $P1480, vivify_465
     new $P1480, "Undef"
-  vivify_464:
+  vivify_465:
     if $P1480, if_1478
     get_hll_global $P1485, ["PAST"], "Op"
     find_lex $P1486, "$/"
@@ -20320,17 +20395,17 @@
     goto if_1478_end
   if_1478:
     find_lex $P1481, "$/"
-    unless_null $P1481, vivify_465
+    unless_null $P1481, vivify_466
     $P1481 = root_new ['parrot';'Hash']
-  vivify_465:
+  vivify_466:
     set $P1482, $P1481["args"]
-    unless_null $P1482, vivify_466
+    unless_null $P1482, vivify_467
     $P1482 = root_new ['parrot';'ResizablePMCArray']
-  vivify_466:
+  vivify_467:
     set $P1483, $P1482[0]
-    unless_null $P1483, vivify_467
+    unless_null $P1483, vivify_468
     new $P1483, "Undef"
-  vivify_467:
+  vivify_468:
     $P1484 = $P1483."ast"()
     set $P1477, $P1484
   if_1478_end:
@@ -20338,35 +20413,35 @@
 .annotate "line", 554
     find_lex $P1488, "$past"
     find_lex $P1491, "$/"
-    unless_null $P1491, vivify_468
+    unless_null $P1491, vivify_469
     $P1491 = root_new ['parrot';'Hash']
-  vivify_468:
+  vivify_469:
     set $P1492, $P1491["quote"]
-    unless_null $P1492, vivify_469
+    unless_null $P1492, vivify_470
     new $P1492, "Undef"
-  vivify_469:
+  vivify_470:
     if $P1492, if_1490
     find_lex $P1496, "$/"
-    unless_null $P1496, vivify_470
+    unless_null $P1496, vivify_471
     $P1496 = root_new ['parrot';'Hash']
-  vivify_470:
+  vivify_471:
     set $P1497, $P1496["longname"]
-    unless_null $P1497, vivify_471
+    unless_null $P1497, vivify_472
     new $P1497, "Undef"
-  vivify_471:
+  vivify_472:
     set $S1498, $P1497
     new $P1489, 'String'
     set $P1489, $S1498
     goto if_1490_end
   if_1490:
     find_lex $P1493, "$/"
-    unless_null $P1493, vivify_472
+    unless_null $P1493, vivify_473
     $P1493 = root_new ['parrot';'Hash']
-  vivify_472:
+  vivify_473:
     set $P1494, $P1493["quote"]
-    unless_null $P1494, vivify_473
+    unless_null $P1494, vivify_474
     new $P1494, "Undef"
-  vivify_473:
+  vivify_474:
     $P1495 = $P1494."ast"()
     set $P1489, $P1495
   if_1490_end:
@@ -20389,7 +20464,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<self>"  :subid("84_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<self>"  :subid("84_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1507
 .annotate "line", 561
     new $P1506, 'ExceptionHandler'
@@ -20414,7 +20489,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<identifier>"  :subid("85_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<identifier>"  :subid("85_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1516
 .annotate "line", 565
     new $P1515, 'ExceptionHandler'
@@ -20427,25 +20502,25 @@
     new $P1517, "Undef"
     .lex "$past", $P1517
     find_lex $P1518, "$/"
-    unless_null $P1518, vivify_474
+    unless_null $P1518, vivify_475
     $P1518 = root_new ['parrot';'Hash']
-  vivify_474:
+  vivify_475:
     set $P1519, $P1518["args"]
-    unless_null $P1519, vivify_475
+    unless_null $P1519, vivify_476
     new $P1519, "Undef"
-  vivify_475:
+  vivify_476:
     $P1520 = $P1519."ast"()
     store_lex "$past", $P1520
 .annotate "line", 567
     find_lex $P1521, "$past"
     find_lex $P1522, "$/"
-    unless_null $P1522, vivify_476
+    unless_null $P1522, vivify_477
     $P1522 = root_new ['parrot';'Hash']
-  vivify_476:
+  vivify_477:
     set $P1523, $P1522["identifier"]
-    unless_null $P1523, vivify_477
+    unless_null $P1523, vivify_478
     new $P1523, "Undef"
-  vivify_477:
+  vivify_478:
     set $S1524, $P1523
     $P1521."name"($S1524)
 .annotate "line", 568
@@ -20463,7 +20538,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<name>"  :subid("86_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<name>"  :subid("86_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1532
 .annotate "line", 571
     new $P1531, 'ExceptionHandler'
@@ -20486,17 +20561,17 @@
     .lex "$past", $P1536
 .annotate "line", 572
     find_lex $P1537, "$/"
-    unless_null $P1537, vivify_478
+    unless_null $P1537, vivify_479
     $P1537 = root_new ['parrot';'Hash']
-  vivify_478:
+  vivify_479:
     set $P1538, $P1537["name"]
-    unless_null $P1538, vivify_479
+    unless_null $P1538, vivify_480
     $P1538 = root_new ['parrot';'Hash']
-  vivify_479:
+  vivify_480:
     set $P1539, $P1538["identifier"]
-    unless_null $P1539, vivify_480
+    unless_null $P1539, vivify_481
     new $P1539, "Undef"
-  vivify_480:
+  vivify_481:
     clone $P1540, $P1539
     store_lex "@ns", $P1540
 .annotate "line", 573
@@ -20510,13 +20585,13 @@
     goto if_1545_end
   if_1545:
     find_lex $P1547, "@ns"
-    unless_null $P1547, vivify_481
+    unless_null $P1547, vivify_482
     $P1547 = root_new ['parrot';'ResizablePMCArray']
-  vivify_481:
+  vivify_482:
     set $P1548, $P1547[0]
-    unless_null $P1548, vivify_482
+    unless_null $P1548, vivify_483
     new $P1548, "Undef"
-  vivify_482:
+  vivify_483:
     set $S1549, $P1548
     iseq $I1550, $S1549, "GLOBAL"
     new $P1544, 'Integer'
@@ -20538,27 +20613,27 @@
     store_lex "$past", $P1557
 .annotate "line", 578
     find_lex $P1559, "$/"
-    unless_null $P1559, vivify_483
+    unless_null $P1559, vivify_484
     $P1559 = root_new ['parrot';'Hash']
-  vivify_483:
+  vivify_484:
     set $P1560, $P1559["args"]
-    unless_null $P1560, vivify_484
+    unless_null $P1560, vivify_485
     new $P1560, "Undef"
-  vivify_484:
+  vivify_485:
     unless $P1560, if_1558_end
 .annotate "line", 579
     find_lex $P1561, "$/"
-    unless_null $P1561, vivify_485
+    unless_null $P1561, vivify_486
     $P1561 = root_new ['parrot';'Hash']
-  vivify_485:
+  vivify_486:
     set $P1562, $P1561["args"]
-    unless_null $P1562, vivify_486
+    unless_null $P1562, vivify_487
     $P1562 = root_new ['parrot';'ResizablePMCArray']
-  vivify_486:
+  vivify_487:
     set $P1563, $P1562[0]
-    unless_null $P1563, vivify_487
+    unless_null $P1563, vivify_488
     new $P1563, "Undef"
-  vivify_487:
+  vivify_488:
     $P1564 = $P1563."ast"()
     store_lex "$past", $P1564
 .annotate "line", 580
@@ -20581,7 +20656,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<pir::op>"  :subid("87_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<pir::op>"  :subid("87_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1574
 .annotate "line", 585
     new $P1573, 'ExceptionHandler'
@@ -20598,13 +20673,13 @@
     .lex "$pirop", $P1576
 .annotate "line", 586
     find_lex $P1579, "$/"
-    unless_null $P1579, vivify_488
+    unless_null $P1579, vivify_489
     $P1579 = root_new ['parrot';'Hash']
-  vivify_488:
+  vivify_489:
     set $P1580, $P1579["args"]
-    unless_null $P1580, vivify_489
+    unless_null $P1580, vivify_490
     new $P1580, "Undef"
-  vivify_489:
+  vivify_490:
     if $P1580, if_1578
     get_hll_global $P1585, ["PAST"], "Op"
     find_lex $P1586, "$/"
@@ -20613,30 +20688,30 @@
     goto if_1578_end
   if_1578:
     find_lex $P1581, "$/"
-    unless_null $P1581, vivify_490
+    unless_null $P1581, vivify_491
     $P1581 = root_new ['parrot';'Hash']
-  vivify_490:
+  vivify_491:
     set $P1582, $P1581["args"]
-    unless_null $P1582, vivify_491
+    unless_null $P1582, vivify_492
     $P1582 = root_new ['parrot';'ResizablePMCArray']
-  vivify_491:
+  vivify_492:
     set $P1583, $P1582[0]
-    unless_null $P1583, vivify_492
+    unless_null $P1583, vivify_493
     new $P1583, "Undef"
-  vivify_492:
+  vivify_493:
     $P1584 = $P1583."ast"()
     set $P1577, $P1584
   if_1578_end:
     store_lex "$past", $P1577
 .annotate "line", 587
     find_lex $P1588, "$/"
-    unless_null $P1588, vivify_493
+    unless_null $P1588, vivify_494
     $P1588 = root_new ['parrot';'Hash']
-  vivify_493:
+  vivify_494:
     set $P1589, $P1588["op"]
-    unless_null $P1589, vivify_494
+    unless_null $P1589, vivify_495
     new $P1589, "Undef"
-  vivify_494:
+  vivify_495:
     set $S1590, $P1589
     new $P1591, 'String'
     set $P1591, $S1590
@@ -20672,7 +20747,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "args"  :subid("88_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "args"  :subid("88_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1603
 .annotate "line", 600
     new $P1602, 'ExceptionHandler'
@@ -20683,13 +20758,13 @@
     .lex "$/", param_1603
     find_lex $P1604, "$/"
     find_lex $P1605, "$/"
-    unless_null $P1605, vivify_495
+    unless_null $P1605, vivify_496
     $P1605 = root_new ['parrot';'Hash']
-  vivify_495:
+  vivify_496:
     set $P1606, $P1605["arglist"]
-    unless_null $P1606, vivify_496
+    unless_null $P1606, vivify_497
     new $P1606, "Undef"
-  vivify_496:
+  vivify_497:
     $P1607 = $P1606."ast"()
     $P1608 = $P1604."!make"($P1607)
     .return ($P1608)
@@ -20702,10 +20777,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "arglist"  :subid("89_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "arglist"  :subid("89_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1613
 .annotate "line", 602
-    .const 'Sub' $P1624 = "90_1271336409.53729" 
+    .const 'Sub' $P1624 = "90_1271948680.36754" 
     capture_lex $P1624
     new $P1612, 'ExceptionHandler'
     set_addr $P1612, control_1611
@@ -20729,15 +20804,15 @@
     store_lex "$past", $P1619
 .annotate "line", 604
     find_lex $P1621, "$/"
-    unless_null $P1621, vivify_497
+    unless_null $P1621, vivify_498
     $P1621 = root_new ['parrot';'Hash']
-  vivify_497:
+  vivify_498:
     set $P1622, $P1621["EXPR"]
-    unless_null $P1622, vivify_498
+    unless_null $P1622, vivify_499
     new $P1622, "Undef"
-  vivify_498:
+  vivify_499:
     unless $P1622, if_1620_end
-    .const 'Sub' $P1624 = "90_1271336409.53729" 
+    .const 'Sub' $P1624 = "90_1271948680.36754" 
     capture_lex $P1624
     $P1624()
   if_1620_end:
@@ -20769,13 +20844,13 @@
     find_lex $P1667, "$i"
     set $I1668, $P1667
     find_lex $P1669, "$past"
-    unless_null $P1669, vivify_502
+    unless_null $P1669, vivify_503
     $P1669 = root_new ['parrot';'ResizablePMCArray']
-  vivify_502:
+  vivify_503:
     set $P1670, $P1669[$I1668]
-    unless_null $P1670, vivify_503
+    unless_null $P1670, vivify_504
     new $P1670, "Undef"
-  vivify_503:
+  vivify_504:
     $S1671 = $P1670."name"()
     iseq $I1672, $S1671, "&prefix:<|>"
     unless $I1672, if_1666_end
@@ -20783,36 +20858,36 @@
     find_lex $P1673, "$i"
     set $I1674, $P1673
     find_lex $P1675, "$past"
-    unless_null $P1675, vivify_504
+    unless_null $P1675, vivify_505
     $P1675 = root_new ['parrot';'ResizablePMCArray']
-  vivify_504:
+  vivify_505:
     set $P1676, $P1675[$I1674]
-    unless_null $P1676, vivify_505
+    unless_null $P1676, vivify_506
     $P1676 = root_new ['parrot';'ResizablePMCArray']
-  vivify_505:
+  vivify_506:
     set $P1677, $P1676[0]
-    unless_null $P1677, vivify_506
+    unless_null $P1677, vivify_507
     new $P1677, "Undef"
-  vivify_506:
+  vivify_507:
     find_lex $P1678, "$i"
     set $I1679, $P1678
     find_lex $P1680, "$past"
-    unless_null $P1680, vivify_507
+    unless_null $P1680, vivify_508
     $P1680 = root_new ['parrot';'ResizablePMCArray']
     store_lex "$past", $P1680
-  vivify_507:
+  vivify_508:
     set $P1680[$I1679], $P1677
 .annotate "line", 616
     find_lex $P1681, "$i"
     set $I1682, $P1681
     find_lex $P1683, "$past"
-    unless_null $P1683, vivify_508
+    unless_null $P1683, vivify_509
     $P1683 = root_new ['parrot';'ResizablePMCArray']
-  vivify_508:
+  vivify_509:
     set $P1684, $P1683[$I1682]
-    unless_null $P1684, vivify_509
+    unless_null $P1684, vivify_510
     new $P1684, "Undef"
-  vivify_509:
+  vivify_510:
     $P1684."flat"(1)
   if_1666_end:
 .annotate "line", 614
@@ -20845,21 +20920,21 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1623"  :anon :subid("90_1271336409.53729") :outer("89_1271336409.53729")
+.sub "_block1623"  :anon :subid("90_1271948680.36754") :outer("89_1271948680.36754")
 .annotate "line", 604
-    .const 'Sub' $P1645 = "91_1271336409.53729" 
+    .const 'Sub' $P1645 = "91_1271948680.36754" 
     capture_lex $P1645
 .annotate "line", 605
     new $P1625, "Undef"
     .lex "$expr", $P1625
     find_lex $P1626, "$/"
-    unless_null $P1626, vivify_499
+    unless_null $P1626, vivify_500
     $P1626 = root_new ['parrot';'Hash']
-  vivify_499:
+  vivify_500:
     set $P1627, $P1626["EXPR"]
-    unless_null $P1627, vivify_500
+    unless_null $P1627, vivify_501
     new $P1627, "Undef"
-  vivify_500:
+  vivify_501:
     $P1628 = $P1627."ast"()
     store_lex "$expr", $P1628
 .annotate "line", 606
@@ -20890,7 +20965,7 @@
     find_lex $P1640, "$expr"
     $P1641 = $P1640."list"()
     defined $I1642, $P1641
-    unless $I1642, for_undef_501
+    unless $I1642, for_undef_502
     iter $P1639, $P1641
     new $P1651, 'ExceptionHandler'
     set_addr $P1651, loop1650_handler
@@ -20900,7 +20975,7 @@
     unless $P1639, loop1650_done
     shift $P1643, $P1639
   loop1650_redo:
-    .const 'Sub' $P1645 = "91_1271336409.53729" 
+    .const 'Sub' $P1645 = "91_1271948680.36754" 
     capture_lex $P1645
     $P1645($P1643)
   loop1650_next:
@@ -20913,7 +20988,7 @@
     eq $P1652, 67, loop1650_redo
   loop1650_done:
     pop_eh 
-  for_undef_501:
+  for_undef_502:
 .annotate "line", 606
     set $P1629, $P1639
   if_1630_end:
@@ -20923,7 +20998,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1644"  :anon :subid("91_1271336409.53729") :outer("90_1271336409.53729")
+.sub "_block1644"  :anon :subid("91_1271948680.36754") :outer("90_1271948680.36754")
     .param pmc param_1646
 .annotate "line", 607
     .lex "$_", param_1646
@@ -20935,7 +21010,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<value>"  :subid("92_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "term:sym<value>"  :subid("92_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1697
 .annotate "line", 624
     new $P1696, 'ExceptionHandler'
@@ -20946,13 +21021,13 @@
     .lex "$/", param_1697
     find_lex $P1698, "$/"
     find_lex $P1699, "$/"
-    unless_null $P1699, vivify_510
+    unless_null $P1699, vivify_511
     $P1699 = root_new ['parrot';'Hash']
-  vivify_510:
+  vivify_511:
     set $P1700, $P1699["value"]
-    unless_null $P1700, vivify_511
+    unless_null $P1700, vivify_512
     new $P1700, "Undef"
-  vivify_511:
+  vivify_512:
     $P1701 = $P1700."ast"()
     $P1702 = $P1698."!make"($P1701)
     .return ($P1702)
@@ -20965,7 +21040,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<( )>"  :subid("93_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "circumfix:sym<( )>"  :subid("93_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1707
 .annotate "line", 626
     new $P1706, 'ExceptionHandler'
@@ -20978,13 +21053,13 @@
     find_lex $P1708, "$/"
 .annotate "line", 628
     find_lex $P1711, "$/"
-    unless_null $P1711, vivify_512
+    unless_null $P1711, vivify_513
     $P1711 = root_new ['parrot';'Hash']
-  vivify_512:
+  vivify_513:
     set $P1712, $P1711["EXPR"]
-    unless_null $P1712, vivify_513
+    unless_null $P1712, vivify_514
     new $P1712, "Undef"
-  vivify_513:
+  vivify_514:
     if $P1712, if_1710
 .annotate "line", 629
     get_hll_global $P1717, ["PAST"], "Op"
@@ -20995,17 +21070,17 @@
     goto if_1710_end
   if_1710:
     find_lex $P1713, "$/"
-    unless_null $P1713, vivify_514
+    unless_null $P1713, vivify_515
     $P1713 = root_new ['parrot';'Hash']
-  vivify_514:
+  vivify_515:
     set $P1714, $P1713["EXPR"]
-    unless_null $P1714, vivify_515
+    unless_null $P1714, vivify_516
     $P1714 = root_new ['parrot';'ResizablePMCArray']
-  vivify_515:
+  vivify_516:
     set $P1715, $P1714[0]
-    unless_null $P1715, vivify_516
+    unless_null $P1715, vivify_517
     new $P1715, "Undef"
-  vivify_516:
+  vivify_517:
     $P1716 = $P1715."ast"()
     set $P1709, $P1716
   if_1710_end:
@@ -21021,7 +21096,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<[ ]>"  :subid("94_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "circumfix:sym<[ ]>"  :subid("94_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1725
 .annotate "line", 632
     new $P1724, 'ExceptionHandler'
@@ -21037,13 +21112,13 @@
     find_lex $P1727, "$past"
 .annotate "line", 634
     find_lex $P1729, "$/"
-    unless_null $P1729, vivify_517
+    unless_null $P1729, vivify_518
     $P1729 = root_new ['parrot';'Hash']
-  vivify_517:
+  vivify_518:
     set $P1730, $P1729["EXPR"]
-    unless_null $P1730, vivify_518
+    unless_null $P1730, vivify_519
     new $P1730, "Undef"
-  vivify_518:
+  vivify_519:
     if $P1730, if_1728
 .annotate "line", 641
     get_hll_global $P1742, ["PAST"], "Op"
@@ -21054,17 +21129,17 @@
   if_1728:
 .annotate "line", 635
     find_lex $P1731, "$/"
-    unless_null $P1731, vivify_519
+    unless_null $P1731, vivify_520
     $P1731 = root_new ['parrot';'Hash']
-  vivify_519:
+  vivify_520:
     set $P1732, $P1731["EXPR"]
-    unless_null $P1732, vivify_520
+    unless_null $P1732, vivify_521
     $P1732 = root_new ['parrot';'ResizablePMCArray']
-  vivify_520:
+  vivify_521:
     set $P1733, $P1732[0]
-    unless_null $P1733, vivify_521
+    unless_null $P1733, vivify_522
     new $P1733, "Undef"
-  vivify_521:
+  vivify_522:
     $P1734 = $P1733."ast"()
     store_lex "$past", $P1734
 .annotate "line", 636
@@ -21097,7 +21172,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<ang>"  :subid("95_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "circumfix:sym<ang>"  :subid("95_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1752
 .annotate "line", 647
     new $P1751, 'ExceptionHandler'
@@ -21108,13 +21183,13 @@
     .lex "$/", param_1752
     find_lex $P1753, "$/"
     find_lex $P1754, "$/"
-    unless_null $P1754, vivify_522
+    unless_null $P1754, vivify_523
     $P1754 = root_new ['parrot';'Hash']
-  vivify_522:
+  vivify_523:
     set $P1755, $P1754["quote_EXPR"]
-    unless_null $P1755, vivify_523
+    unless_null $P1755, vivify_524
     new $P1755, "Undef"
-  vivify_523:
+  vivify_524:
     $P1756 = $P1755."ast"()
     $P1757 = $P1753."!make"($P1756)
     .return ($P1757)
@@ -21127,7 +21202,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("96_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("96_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1762
 .annotate "line", 648
     new $P1761, 'ExceptionHandler'
@@ -21138,13 +21213,13 @@
     .lex "$/", param_1762
     find_lex $P1763, "$/"
     find_lex $P1764, "$/"
-    unless_null $P1764, vivify_524
+    unless_null $P1764, vivify_525
     $P1764 = root_new ['parrot';'Hash']
-  vivify_524:
+  vivify_525:
     set $P1765, $P1764["quote_EXPR"]
-    unless_null $P1765, vivify_525
+    unless_null $P1765, vivify_526
     new $P1765, "Undef"
-  vivify_525:
+  vivify_526:
     $P1766 = $P1765."ast"()
     $P1767 = $P1763."!make"($P1766)
     .return ($P1767)
@@ -21157,7 +21232,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<{ }>"  :subid("97_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "circumfix:sym<{ }>"  :subid("97_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1772
 .annotate "line", 650
     new $P1771, 'ExceptionHandler'
@@ -21169,25 +21244,25 @@
 .annotate "line", 651
     find_lex $P1773, "$/"
     find_lex $P1776, "$/"
-    unless_null $P1776, vivify_526
+    unless_null $P1776, vivify_527
     $P1776 = root_new ['parrot';'Hash']
-  vivify_526:
+  vivify_527:
     set $P1777, $P1776["pblock"]
-    unless_null $P1777, vivify_527
+    unless_null $P1777, vivify_528
     $P1777 = root_new ['parrot';'Hash']
-  vivify_527:
+  vivify_528:
     set $P1778, $P1777["blockoid"]
-    unless_null $P1778, vivify_528
+    unless_null $P1778, vivify_529
     $P1778 = root_new ['parrot';'Hash']
-  vivify_528:
+  vivify_529:
     set $P1779, $P1778["statementlist"]
-    unless_null $P1779, vivify_529
+    unless_null $P1779, vivify_530
     $P1779 = root_new ['parrot';'Hash']
-  vivify_529:
+  vivify_530:
     set $P1780, $P1779["statement"]
-    unless_null $P1780, vivify_530
+    unless_null $P1780, vivify_531
     new $P1780, "Undef"
-  vivify_530:
+  vivify_531:
     set $N1781, $P1780
     isgt $I1782, $N1781, 0.0
     if $I1782, if_1775
@@ -21199,13 +21274,13 @@
   if_1775:
 .annotate "line", 652
     find_lex $P1783, "$/"
-    unless_null $P1783, vivify_531
+    unless_null $P1783, vivify_532
     $P1783 = root_new ['parrot';'Hash']
-  vivify_531:
+  vivify_532:
     set $P1784, $P1783["pblock"]
-    unless_null $P1784, vivify_532
+    unless_null $P1784, vivify_533
     new $P1784, "Undef"
-  vivify_532:
+  vivify_533:
     $P1785 = $P1784."ast"()
     set $P1774, $P1785
   if_1775_end:
@@ -21221,7 +21296,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<sigil>"  :subid("98_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "circumfix:sym<sigil>"  :subid("98_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1792
 .annotate "line", 656
     new $P1791, 'ExceptionHandler'
@@ -21234,25 +21309,25 @@
     new $P1793, "Undef"
     .lex "$name", $P1793
     find_lex $P1796, "$/"
-    unless_null $P1796, vivify_533
+    unless_null $P1796, vivify_534
     $P1796 = root_new ['parrot';'Hash']
-  vivify_533:
+  vivify_534:
     set $P1797, $P1796["sigil"]
-    unless_null $P1797, vivify_534
+    unless_null $P1797, vivify_535
     new $P1797, "Undef"
-  vivify_534:
+  vivify_535:
     set $S1798, $P1797
     iseq $I1799, $S1798, "@"
     if $I1799, if_1795
 .annotate "line", 658
     find_lex $P1803, "$/"
-    unless_null $P1803, vivify_535
+    unless_null $P1803, vivify_536
     $P1803 = root_new ['parrot';'Hash']
-  vivify_535:
+  vivify_536:
     set $P1804, $P1803["sigil"]
-    unless_null $P1804, vivify_536
+    unless_null $P1804, vivify_537
     new $P1804, "Undef"
-  vivify_536:
+  vivify_537:
     set $S1805, $P1804
     iseq $I1806, $S1805, "%"
     if $I1806, if_1802
@@ -21279,13 +21354,13 @@
     get_hll_global $P1810, ["PAST"], "Op"
     find_lex $P1811, "$name"
     find_lex $P1812, "$/"
-    unless_null $P1812, vivify_537
+    unless_null $P1812, vivify_538
     $P1812 = root_new ['parrot';'Hash']
-  vivify_537:
+  vivify_538:
     set $P1813, $P1812["semilist"]
-    unless_null $P1813, vivify_538
+    unless_null $P1813, vivify_539
     new $P1813, "Undef"
-  vivify_538:
+  vivify_539:
     $P1814 = $P1813."ast"()
     $P1815 = $P1810."new"($P1814, "callmethod" :named("pasttype"), $P1811 :named("name"))
     $P1816 = $P1809."!make"($P1815)
@@ -21300,7 +21375,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "semilist"  :subid("99_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "semilist"  :subid("99_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1821
 .annotate "line", 663
     new $P1820, 'ExceptionHandler'
@@ -21311,13 +21386,13 @@
     .lex "$/", param_1821
     find_lex $P1822, "$/"
     find_lex $P1823, "$/"
-    unless_null $P1823, vivify_539
+    unless_null $P1823, vivify_540
     $P1823 = root_new ['parrot';'Hash']
-  vivify_539:
+  vivify_540:
     set $P1824, $P1823["statement"]
-    unless_null $P1824, vivify_540
+    unless_null $P1824, vivify_541
     new $P1824, "Undef"
-  vivify_540:
+  vivify_541:
     $P1825 = $P1824."ast"()
     $P1826 = $P1822."!make"($P1825)
     .return ($P1826)
@@ -21330,7 +21405,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<[ ]>"  :subid("100_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "postcircumfix:sym<[ ]>"  :subid("100_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1831
 .annotate "line", 665
     new $P1830, 'ExceptionHandler'
@@ -21343,13 +21418,13 @@
     find_lex $P1832, "$/"
     get_hll_global $P1833, ["PAST"], "Var"
     find_lex $P1834, "$/"
-    unless_null $P1834, vivify_541
+    unless_null $P1834, vivify_542
     $P1834 = root_new ['parrot';'Hash']
-  vivify_541:
+  vivify_542:
     set $P1835, $P1834["EXPR"]
-    unless_null $P1835, vivify_542
+    unless_null $P1835, vivify_543
     new $P1835, "Undef"
-  vivify_542:
+  vivify_543:
     $P1836 = $P1835."ast"()
 .annotate "line", 668
     $P1837 = "vivitype"("@")
@@ -21367,7 +21442,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<{ }>"  :subid("101_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "postcircumfix:sym<{ }>"  :subid("101_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1844
 .annotate "line", 671
     new $P1843, 'ExceptionHandler'
@@ -21380,13 +21455,13 @@
     find_lex $P1845, "$/"
     get_hll_global $P1846, ["PAST"], "Var"
     find_lex $P1847, "$/"
-    unless_null $P1847, vivify_543
+    unless_null $P1847, vivify_544
     $P1847 = root_new ['parrot';'Hash']
-  vivify_543:
+  vivify_544:
     set $P1848, $P1847["EXPR"]
-    unless_null $P1848, vivify_544
+    unless_null $P1848, vivify_545
     new $P1848, "Undef"
-  vivify_544:
+  vivify_545:
     $P1849 = $P1848."ast"()
 .annotate "line", 674
     $P1850 = "vivitype"("%")
@@ -21404,7 +21479,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<ang>"  :subid("102_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "postcircumfix:sym<ang>"  :subid("102_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1857
 .annotate "line", 677
     new $P1856, 'ExceptionHandler'
@@ -21417,13 +21492,13 @@
     find_lex $P1858, "$/"
     get_hll_global $P1859, ["PAST"], "Var"
     find_lex $P1860, "$/"
-    unless_null $P1860, vivify_545
+    unless_null $P1860, vivify_546
     $P1860 = root_new ['parrot';'Hash']
-  vivify_545:
+  vivify_546:
     set $P1861, $P1860["quote_EXPR"]
-    unless_null $P1861, vivify_546
+    unless_null $P1861, vivify_547
     new $P1861, "Undef"
-  vivify_546:
+  vivify_547:
     $P1862 = $P1861."ast"()
 .annotate "line", 680
     $P1863 = "vivitype"("%")
@@ -21441,7 +21516,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<( )>"  :subid("103_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "postcircumfix:sym<( )>"  :subid("103_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1870
 .annotate "line", 683
     new $P1869, 'ExceptionHandler'
@@ -21453,13 +21528,13 @@
 .annotate "line", 684
     find_lex $P1871, "$/"
     find_lex $P1872, "$/"
-    unless_null $P1872, vivify_547
+    unless_null $P1872, vivify_548
     $P1872 = root_new ['parrot';'Hash']
-  vivify_547:
+  vivify_548:
     set $P1873, $P1872["arglist"]
-    unless_null $P1873, vivify_548
+    unless_null $P1873, vivify_549
     new $P1873, "Undef"
-  vivify_548:
+  vivify_549:
     $P1874 = $P1873."ast"()
     $P1875 = $P1871."!make"($P1874)
 .annotate "line", 683
@@ -21473,7 +21548,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "value"  :subid("104_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "value"  :subid("104_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1880
 .annotate "line", 687
     new $P1879, 'ExceptionHandler'
@@ -21485,34 +21560,34 @@
 .annotate "line", 688
     find_lex $P1881, "$/"
     find_lex $P1884, "$/"
-    unless_null $P1884, vivify_549
+    unless_null $P1884, vivify_550
     $P1884 = root_new ['parrot';'Hash']
-  vivify_549:
+  vivify_550:
     set $P1885, $P1884["quote"]
-    unless_null $P1885, vivify_550
+    unless_null $P1885, vivify_551
     new $P1885, "Undef"
-  vivify_550:
+  vivify_551:
     if $P1885, if_1883
     find_lex $P1889, "$/"
-    unless_null $P1889, vivify_551
+    unless_null $P1889, vivify_552
     $P1889 = root_new ['parrot';'Hash']
-  vivify_551:
+  vivify_552:
     set $P1890, $P1889["number"]
-    unless_null $P1890, vivify_552
+    unless_null $P1890, vivify_553
     new $P1890, "Undef"
-  vivify_552:
+  vivify_553:
     $P1891 = $P1890."ast"()
     set $P1882, $P1891
     goto if_1883_end
   if_1883:
     find_lex $P1886, "$/"
-    unless_null $P1886, vivify_553
+    unless_null $P1886, vivify_554
     $P1886 = root_new ['parrot';'Hash']
-  vivify_553:
+  vivify_554:
     set $P1887, $P1886["quote"]
-    unless_null $P1887, vivify_554
+    unless_null $P1887, vivify_555
     new $P1887, "Undef"
-  vivify_554:
+  vivify_555:
     $P1888 = $P1887."ast"()
     set $P1882, $P1888
   if_1883_end:
@@ -21528,7 +21603,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "number"  :subid("105_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "number"  :subid("105_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1897
 .annotate "line", 691
     new $P1896, 'ExceptionHandler'
@@ -21541,47 +21616,47 @@
     new $P1898, "Undef"
     .lex "$value", $P1898
     find_lex $P1901, "$/"
-    unless_null $P1901, vivify_555
+    unless_null $P1901, vivify_556
     $P1901 = root_new ['parrot';'Hash']
-  vivify_555:
+  vivify_556:
     set $P1902, $P1901["dec_number"]
-    unless_null $P1902, vivify_556
+    unless_null $P1902, vivify_557
     new $P1902, "Undef"
-  vivify_556:
+  vivify_557:
     if $P1902, if_1900
     find_lex $P1906, "$/"
-    unless_null $P1906, vivify_557
+    unless_null $P1906, vivify_558
     $P1906 = root_new ['parrot';'Hash']
-  vivify_557:
+  vivify_558:
     set $P1907, $P1906["integer"]
-    unless_null $P1907, vivify_558
+    unless_null $P1907, vivify_559
     new $P1907, "Undef"
-  vivify_558:
+  vivify_559:
     $P1908 = $P1907."ast"()
     set $P1899, $P1908
     goto if_1900_end
   if_1900:
     find_lex $P1903, "$/"
-    unless_null $P1903, vivify_559
+    unless_null $P1903, vivify_560
     $P1903 = root_new ['parrot';'Hash']
-  vivify_559:
+  vivify_560:
     set $P1904, $P1903["dec_number"]
-    unless_null $P1904, vivify_560
+    unless_null $P1904, vivify_561
     new $P1904, "Undef"
-  vivify_560:
+  vivify_561:
     $P1905 = $P1904."ast"()
     set $P1899, $P1905
   if_1900_end:
     store_lex "$value", $P1899
 .annotate "line", 693
     find_lex $P1910, "$/"
-    unless_null $P1910, vivify_561
+    unless_null $P1910, vivify_562
     $P1910 = root_new ['parrot';'Hash']
-  vivify_561:
+  vivify_562:
     set $P1911, $P1910["sign"]
-    unless_null $P1911, vivify_562
+    unless_null $P1911, vivify_563
     new $P1911, "Undef"
-  vivify_562:
+  vivify_563:
     set $S1912, $P1911
     iseq $I1913, $S1912, "-"
     unless $I1913, if_1909_end
@@ -21606,7 +21681,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<apos>"  :subid("106_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "quote:sym<apos>"  :subid("106_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1925
 .annotate "line", 697
     new $P1924, 'ExceptionHandler'
@@ -21617,13 +21692,13 @@
     .lex "$/", param_1925
     find_lex $P1926, "$/"
     find_lex $P1927, "$/"
-    unless_null $P1927, vivify_563
+    unless_null $P1927, vivify_564
     $P1927 = root_new ['parrot';'Hash']
-  vivify_563:
+  vivify_564:
     set $P1928, $P1927["quote_EXPR"]
-    unless_null $P1928, vivify_564
+    unless_null $P1928, vivify_565
     new $P1928, "Undef"
-  vivify_564:
+  vivify_565:
     $P1929 = $P1928."ast"()
     $P1930 = $P1926."!make"($P1929)
     .return ($P1930)
@@ -21636,7 +21711,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<dblq>"  :subid("107_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "quote:sym<dblq>"  :subid("107_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1935
 .annotate "line", 698
     new $P1934, 'ExceptionHandler'
@@ -21647,13 +21722,13 @@
     .lex "$/", param_1935
     find_lex $P1936, "$/"
     find_lex $P1937, "$/"
-    unless_null $P1937, vivify_565
+    unless_null $P1937, vivify_566
     $P1937 = root_new ['parrot';'Hash']
-  vivify_565:
+  vivify_566:
     set $P1938, $P1937["quote_EXPR"]
-    unless_null $P1938, vivify_566
+    unless_null $P1938, vivify_567
     new $P1938, "Undef"
-  vivify_566:
+  vivify_567:
     $P1939 = $P1938."ast"()
     $P1940 = $P1936."!make"($P1939)
     .return ($P1940)
@@ -21666,7 +21741,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<qq>"  :subid("108_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "quote:sym<qq>"  :subid("108_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1945
 .annotate "line", 699
     new $P1944, 'ExceptionHandler'
@@ -21677,13 +21752,13 @@
     .lex "$/", param_1945
     find_lex $P1946, "$/"
     find_lex $P1947, "$/"
-    unless_null $P1947, vivify_567
+    unless_null $P1947, vivify_568
     $P1947 = root_new ['parrot';'Hash']
-  vivify_567:
+  vivify_568:
     set $P1948, $P1947["quote_EXPR"]
-    unless_null $P1948, vivify_568
+    unless_null $P1948, vivify_569
     new $P1948, "Undef"
-  vivify_568:
+  vivify_569:
     $P1949 = $P1948."ast"()
     $P1950 = $P1946."!make"($P1949)
     .return ($P1950)
@@ -21696,7 +21771,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<q>"  :subid("109_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "quote:sym<q>"  :subid("109_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1955
 .annotate "line", 700
     new $P1954, 'ExceptionHandler'
@@ -21707,13 +21782,13 @@
     .lex "$/", param_1955
     find_lex $P1956, "$/"
     find_lex $P1957, "$/"
-    unless_null $P1957, vivify_569
+    unless_null $P1957, vivify_570
     $P1957 = root_new ['parrot';'Hash']
-  vivify_569:
+  vivify_570:
     set $P1958, $P1957["quote_EXPR"]
-    unless_null $P1958, vivify_570
+    unless_null $P1958, vivify_571
     new $P1958, "Undef"
-  vivify_570:
+  vivify_571:
     $P1959 = $P1958."ast"()
     $P1960 = $P1956."!make"($P1959)
     .return ($P1960)
@@ -21726,7 +21801,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<Q>"  :subid("110_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "quote:sym<Q>"  :subid("110_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1965
 .annotate "line", 701
     new $P1964, 'ExceptionHandler'
@@ -21737,13 +21812,13 @@
     .lex "$/", param_1965
     find_lex $P1966, "$/"
     find_lex $P1967, "$/"
-    unless_null $P1967, vivify_571
+    unless_null $P1967, vivify_572
     $P1967 = root_new ['parrot';'Hash']
-  vivify_571:
+  vivify_572:
     set $P1968, $P1967["quote_EXPR"]
-    unless_null $P1968, vivify_572
+    unless_null $P1968, vivify_573
     new $P1968, "Undef"
-  vivify_572:
+  vivify_573:
     $P1969 = $P1968."ast"()
     $P1970 = $P1966."!make"($P1969)
     .return ($P1970)
@@ -21756,7 +21831,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<Q:PIR>"  :subid("111_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "quote:sym<Q:PIR>"  :subid("111_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1975
 .annotate "line", 702
     new $P1974, 'ExceptionHandler'
@@ -21769,13 +21844,13 @@
     find_lex $P1976, "$/"
     get_hll_global $P1977, ["PAST"], "Op"
     find_lex $P1978, "$/"
-    unless_null $P1978, vivify_573
+    unless_null $P1978, vivify_574
     $P1978 = root_new ['parrot';'Hash']
-  vivify_573:
+  vivify_574:
     set $P1979, $P1978["quote_EXPR"]
-    unless_null $P1979, vivify_574
+    unless_null $P1979, vivify_575
     new $P1979, "Undef"
-  vivify_574:
+  vivify_575:
     $P1980 = $P1979."ast"()
     $P1981 = $P1980."value"()
     find_lex $P1982, "$/"
@@ -21792,7 +21867,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym</ />"  :subid("112_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "quote:sym</ />"  :subid("112_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_1989
     .param pmc param_1990 :optional
     .param int has_param_1990 :opt_flag
@@ -21803,10 +21878,10 @@
     push_eh $P1988
     .lex "self", self
     .lex "$/", param_1989
-    if has_param_1990, optparam_575
+    if has_param_1990, optparam_576
     new $P1991, "Undef"
     set param_1990, $P1991
-  optparam_575:
+  optparam_576:
     .lex "$key", param_1990
 .annotate "line", 718
     new $P1992, "Undef"
@@ -21826,23 +21901,23 @@
         
 .annotate "line", 714
     get_global $P1998, "@BLOCK"
-    unless_null $P1998, vivify_576
+    unless_null $P1998, vivify_577
     $P1998 = root_new ['parrot';'ResizablePMCArray']
-  vivify_576:
+  vivify_577:
     set $P1999, $P1998[0]
-    unless_null $P1999, vivify_577
+    unless_null $P1999, vivify_578
     new $P1999, "Undef"
-  vivify_577:
+  vivify_578:
     $P1999."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
 .annotate "line", 715
     get_global $P2000, "@BLOCK"
-    unless_null $P2000, vivify_578
+    unless_null $P2000, vivify_579
     $P2000 = root_new ['parrot';'ResizablePMCArray']
-  vivify_578:
+  vivify_579:
     set $P2001, $P2000[0]
-    unless_null $P2001, vivify_579
+    unless_null $P2001, vivify_580
     new $P2001, "Undef"
-  vivify_579:
+  vivify_580:
     $P2001."symbol"("$/", "lexical" :named("scope"))
 .annotate "line", 716
     new $P2002, "Exception"
@@ -21855,13 +21930,13 @@
 .annotate "line", 719
     get_hll_global $P2004, ["Regex";"P6Regex";"Actions"], "buildsub"
     find_lex $P2005, "$/"
-    unless_null $P2005, vivify_580
+    unless_null $P2005, vivify_581
     $P2005 = root_new ['parrot';'Hash']
-  vivify_580:
+  vivify_581:
     set $P2006, $P2005["p6regex"]
-    unless_null $P2006, vivify_581
+    unless_null $P2006, vivify_582
     new $P2006, "Undef"
-  vivify_581:
+  vivify_582:
     $P2007 = $P2006."ast"()
     get_global $P2008, "@BLOCK"
     $P2009 = $P2008."shift"()
@@ -21881,10 +21956,10 @@
 .annotate "line", 727
     find_lex $P2017, "$regex"
     find_lex $P2018, "$past"
-    unless_null $P2018, vivify_582
+    unless_null $P2018, vivify_583
     $P2018 = root_new ['parrot';'Hash']
     store_lex "$past", $P2018
-  vivify_582:
+  vivify_583:
     set $P2018["sink"], $P2017
 .annotate "line", 728
     find_lex $P2019, "$/"
@@ -21901,7 +21976,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<$>"  :subid("113_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "quote_escape:sym<$>"  :subid("113_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_2026
 .annotate "line", 731
     new $P2025, 'ExceptionHandler'
@@ -21912,13 +21987,13 @@
     .lex "$/", param_2026
     find_lex $P2027, "$/"
     find_lex $P2028, "$/"
-    unless_null $P2028, vivify_583
+    unless_null $P2028, vivify_584
     $P2028 = root_new ['parrot';'Hash']
-  vivify_583:
+  vivify_584:
     set $P2029, $P2028["variable"]
-    unless_null $P2029, vivify_584
+    unless_null $P2029, vivify_585
     new $P2029, "Undef"
-  vivify_584:
+  vivify_585:
     $P2030 = $P2029."ast"()
     $P2031 = $P2027."!make"($P2030)
     .return ($P2031)
@@ -21931,7 +22006,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<{ }>"  :subid("114_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "quote_escape:sym<{ }>"  :subid("114_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_2036
 .annotate "line", 732
     new $P2035, 'ExceptionHandler'
@@ -21945,13 +22020,13 @@
     get_hll_global $P2038, ["PAST"], "Op"
 .annotate "line", 734
     find_lex $P2039, "$/"
-    unless_null $P2039, vivify_585
+    unless_null $P2039, vivify_586
     $P2039 = root_new ['parrot';'Hash']
-  vivify_585:
+  vivify_586:
     set $P2040, $P2039["block"]
-    unless_null $P2040, vivify_586
+    unless_null $P2040, vivify_587
     new $P2040, "Undef"
-  vivify_586:
+  vivify_587:
     $P2041 = $P2040."ast"()
     $P2042 = "block_immediate"($P2041)
     find_lex $P2043, "$/"
@@ -21969,9 +22044,9 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<.>"  :subid("115_1271336409.53729") :method :outer("11_1271336409.53729")
+.sub "quote_escape:sym<esc>"  :subid("115_1271948680.36754") :method :outer("11_1271948680.36754")
     .param pmc param_2050
-.annotate "line", 740
+.annotate "line", 737
     new $P2049, 'ExceptionHandler'
     set_addr $P2049, control_2048
     $P2049."handle_types"(58)
@@ -21979,324 +22054,345 @@
     .lex "self", self
     .lex "$/", param_2050
     find_lex $P2051, "$/"
-    find_lex $P2052, "$/"
-    unless_null $P2052, vivify_587
-    $P2052 = root_new ['parrot';'Hash']
-  vivify_587:
-    set $P2053, $P2052["dotty"]
-    unless_null $P2053, vivify_588
-    new $P2053, "Undef"
-  vivify_588:
-    $P2054 = $P2053."ast"()
-    $P2055 = $P2051."!make"($P2054)
-    .return ($P2055)
+    $P2052 = $P2051."!make"("\e")
+    .return ($P2052)
   control_2048:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2056, exception, "payload"
-    .return ($P2056)
+    getattribute $P2053, exception, "payload"
+    .return ($P2053)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<++>"  :subid("116_1271336409.53729") :method :outer("11_1271336409.53729")
-    .param pmc param_2060
-.annotate "line", 742
-    new $P2059, 'ExceptionHandler'
-    set_addr $P2059, control_2058
-    $P2059."handle_types"(58)
-    push_eh $P2059
+.sub "postfix:sym<.>"  :subid("116_1271948680.36754") :method :outer("11_1271948680.36754")
+    .param pmc param_2057
+.annotate "line", 741
+    new $P2056, 'ExceptionHandler'
+    set_addr $P2056, control_2055
+    $P2056."handle_types"(58)
+    push_eh $P2056
     .lex "self", self
-    .lex "$/", param_2060
+    .lex "$/", param_2057
+    find_lex $P2058, "$/"
+    find_lex $P2059, "$/"
+    unless_null $P2059, vivify_588
+    $P2059 = root_new ['parrot';'Hash']
+  vivify_588:
+    set $P2060, $P2059["dotty"]
+    unless_null $P2060, vivify_589
+    new $P2060, "Undef"
+  vivify_589:
+    $P2061 = $P2060."ast"()
+    $P2062 = $P2058."!make"($P2061)
+    .return ($P2062)
+  control_2055:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P2063, exception, "payload"
+    .return ($P2063)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "postfix:sym<++>"  :subid("117_1271948680.36754") :method :outer("11_1271948680.36754")
+    .param pmc param_2067
 .annotate "line", 743
-    find_lex $P2061, "$/"
-    get_hll_global $P2062, ["PAST"], "Op"
+    new $P2066, 'ExceptionHandler'
+    set_addr $P2066, control_2065
+    $P2066."handle_types"(58)
+    push_eh $P2066
+    .lex "self", self
+    .lex "$/", param_2067
 .annotate "line", 744
-    new $P2063, "ResizablePMCArray"
-    push $P2063, "    clone %r, %0"
-    push $P2063, "    inc %0"
-    $P2064 = $P2062."new"("postfix:<++>" :named("name"), $P2063 :named("inline"), "inline" :named("pasttype"))
+    find_lex $P2068, "$/"
+    get_hll_global $P2069, ["PAST"], "Op"
+.annotate "line", 745
+    new $P2070, "ResizablePMCArray"
+    push $P2070, "    clone %r, %0"
+    push $P2070, "    inc %0"
+    $P2071 = $P2069."new"("postfix:<++>" :named("name"), $P2070 :named("inline"), "inline" :named("pasttype"))
+.annotate "line", 744
+    $P2072 = $P2068."!make"($P2071)
 .annotate "line", 743
-    $P2065 = $P2061."!make"($P2064)
-.annotate "line", 742
-    .return ($P2065)
-  control_2058:
+    .return ($P2072)
+  control_2065:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2066, exception, "payload"
-    .return ($P2066)
+    getattribute $P2073, exception, "payload"
+    .return ($P2073)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<-->"  :subid("117_1271336409.53729") :method :outer("11_1271336409.53729")
-    .param pmc param_2070
-.annotate "line", 748
-    new $P2069, 'ExceptionHandler'
-    set_addr $P2069, control_2068
-    $P2069."handle_types"(58)
-    push_eh $P2069
-    .lex "self", self
-    .lex "$/", param_2070
+.sub "postfix:sym<-->"  :subid("118_1271948680.36754") :method :outer("11_1271948680.36754")
+    .param pmc param_2077
 .annotate "line", 749
-    find_lex $P2071, "$/"
-    get_hll_global $P2072, ["PAST"], "Op"
+    new $P2076, 'ExceptionHandler'
+    set_addr $P2076, control_2075
+    $P2076."handle_types"(58)
+    push_eh $P2076
+    .lex "self", self
+    .lex "$/", param_2077
+.annotate "line", 750
+    find_lex $P2078, "$/"
+    get_hll_global $P2079, ["PAST"], "Op"
+.annotate "line", 751
+    new $P2080, "ResizablePMCArray"
+    push $P2080, "    clone %r, %0"
+    push $P2080, "    dec %0"
+    $P2081 = $P2079."new"("postfix:<-->" :named("name"), $P2080 :named("inline"), "inline" :named("pasttype"))
 .annotate "line", 750
-    new $P2073, "ResizablePMCArray"
-    push $P2073, "    clone %r, %0"
-    push $P2073, "    dec %0"
-    $P2074 = $P2072."new"("postfix:<-->" :named("name"), $P2073 :named("inline"), "inline" :named("pasttype"))
+    $P2082 = $P2078."!make"($P2081)
 .annotate "line", 749
-    $P2075 = $P2071."!make"($P2074)
-.annotate "line", 748
-    .return ($P2075)
-  control_2068:
+    .return ($P2082)
+  control_2075:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2076, exception, "payload"
-    .return ($P2076)
+    getattribute $P2083, exception, "payload"
+    .return ($P2083)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "prefix:sym<make>"  :subid("118_1271336409.53729") :method :outer("11_1271336409.53729")
-    .param pmc param_2080
-.annotate "line", 754
-    new $P2079, 'ExceptionHandler'
-    set_addr $P2079, control_2078
-    $P2079."handle_types"(58)
-    push_eh $P2079
-    .lex "self", self
-    .lex "$/", param_2080
+.sub "prefix:sym<make>"  :subid("119_1271948680.36754") :method :outer("11_1271948680.36754")
+    .param pmc param_2087
 .annotate "line", 755
-    find_lex $P2081, "$/"
-    get_hll_global $P2082, ["PAST"], "Op"
+    new $P2086, 'ExceptionHandler'
+    set_addr $P2086, control_2085
+    $P2086."handle_types"(58)
+    push_eh $P2086
+    .lex "self", self
+    .lex "$/", param_2087
 .annotate "line", 756
-    get_hll_global $P2083, ["PAST"], "Var"
-    $P2084 = $P2083."new"("$/" :named("name"), "contextual" :named("scope"))
-    find_lex $P2085, "$/"
-    $P2086 = $P2082."new"($P2084, "callmethod" :named("pasttype"), "!make" :named("name"), $P2085 :named("node"))
+    find_lex $P2088, "$/"
+    get_hll_global $P2089, ["PAST"], "Op"
+.annotate "line", 757
+    get_hll_global $P2090, ["PAST"], "Var"
+    $P2091 = $P2090."new"("$/" :named("name"), "contextual" :named("scope"))
+    find_lex $P2092, "$/"
+    $P2093 = $P2089."new"($P2091, "callmethod" :named("pasttype"), "!make" :named("name"), $P2092 :named("node"))
+.annotate "line", 756
+    $P2094 = $P2088."!make"($P2093)
 .annotate "line", 755
-    $P2087 = $P2081."!make"($P2086)
-.annotate "line", 754
-    .return ($P2087)
-  control_2078:
+    .return ($P2094)
+  control_2085:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2088, exception, "payload"
-    .return ($P2088)
+    getattribute $P2095, exception, "payload"
+    .return ($P2095)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "infix:sym<~~>"  :subid("119_1271336409.53729") :method :outer("11_1271336409.53729")
-    .param pmc param_2092
-.annotate "line", 763
-    new $P2091, 'ExceptionHandler'
-    set_addr $P2091, control_2090
-    $P2091."handle_types"(58)
-    push_eh $P2091
-    .lex "self", self
-    .lex "$/", param_2092
+.sub "infix:sym<~~>"  :subid("120_1271948680.36754") :method :outer("11_1271948680.36754")
+    .param pmc param_2099
 .annotate "line", 764
-    find_lex $P2093, "$/"
-    get_hll_global $P2094, ["PAST"], "Op"
-    find_lex $P2095, "$/"
-    $P2096 = $P2094."new"("callmethod" :named("pasttype"), "ACCEPTS" :named("name"), $P2095 :named("node"))
-    $P2097 = $P2093."!make"($P2096)
-.annotate "line", 763
-    .return ($P2097)
-  control_2090:
+    new $P2098, 'ExceptionHandler'
+    set_addr $P2098, control_2097
+    $P2098."handle_types"(58)
+    push_eh $P2098
+    .lex "self", self
+    .lex "$/", param_2099
+.annotate "line", 765
+    find_lex $P2100, "$/"
+    get_hll_global $P2101, ["PAST"], "Op"
+    find_lex $P2102, "$/"
+    $P2103 = $P2101."new"("callmethod" :named("pasttype"), "ACCEPTS" :named("name"), $P2102 :named("node"))
+    $P2104 = $P2100."!make"($P2103)
+.annotate "line", 764
+    .return ($P2104)
+  control_2097:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2098, exception, "payload"
-    .return ($P2098)
+    getattribute $P2105, exception, "payload"
+    .return ($P2105)
 .end
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "_block2099"  :subid("120_1271336409.53729") :outer("11_1271336409.53729")
-.annotate "line", 768
-    .const 'Sub' $P2135 = "124_1271336409.53729" 
-    capture_lex $P2135
-    .const 'Sub' $P2125 = "123_1271336409.53729" 
-    capture_lex $P2125
-    .const 'Sub' $P2115 = "122_1271336409.53729" 
-    capture_lex $P2115
-    .const 'Sub' $P2101 = "121_1271336409.53729" 
-    capture_lex $P2101
-.annotate "line", 779
-    .const 'Sub' $P2135 = "124_1271336409.53729" 
-    capture_lex $P2135
-.annotate "line", 768
-    .return ($P2135)
+.sub "_block2106"  :subid("121_1271948680.36754") :outer("11_1271948680.36754")
+.annotate "line", 769
+    .const 'Sub' $P2142 = "125_1271948680.36754" 
+    capture_lex $P2142
+    .const 'Sub' $P2132 = "124_1271948680.36754" 
+    capture_lex $P2132
+    .const 'Sub' $P2122 = "123_1271948680.36754" 
+    capture_lex $P2122
+    .const 'Sub' $P2108 = "122_1271948680.36754" 
+    capture_lex $P2108
+.annotate "line", 780
+    .const 'Sub' $P2142 = "125_1271948680.36754" 
+    capture_lex $P2142
+.annotate "line", 769
+    .return ($P2142)
 .end
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<:my>"  :subid("121_1271336409.53729") :method :outer("120_1271336409.53729")
-    .param pmc param_2104
-.annotate "line", 770
-    new $P2103, 'ExceptionHandler'
-    set_addr $P2103, control_2102
-    $P2103."handle_types"(58)
-    push_eh $P2103
-    .lex "self", self
-    .lex "$/", param_2104
+.sub "metachar:sym<:my>"  :subid("122_1271948680.36754") :method :outer("121_1271948680.36754")
+    .param pmc param_2111
 .annotate "line", 771
-    new $P2105, "Undef"
-    .lex "$past", $P2105
-    find_lex $P2106, "$/"
-    unless_null $P2106, vivify_589
-    $P2106 = root_new ['parrot';'Hash']
-  vivify_589:
-    set $P2107, $P2106["statement"]
-    unless_null $P2107, vivify_590
-    new $P2107, "Undef"
-  vivify_590:
-    $P2108 = $P2107."ast"()
-    store_lex "$past", $P2108
+    new $P2110, 'ExceptionHandler'
+    set_addr $P2110, control_2109
+    $P2110."handle_types"(58)
+    push_eh $P2110
+    .lex "self", self
+    .lex "$/", param_2111
 .annotate "line", 772
-    find_lex $P2109, "$/"
-    get_hll_global $P2110, ["PAST"], "Regex"
-    find_lex $P2111, "$past"
-    $P2112 = $P2110."new"($P2111, "pastnode" :named("pasttype"))
-    $P2113 = $P2109."!make"($P2112)
-.annotate "line", 770
-    .return ($P2113)
-  control_2102:
+    new $P2112, "Undef"
+    .lex "$past", $P2112
+    find_lex $P2113, "$/"
+    unless_null $P2113, vivify_590
+    $P2113 = root_new ['parrot';'Hash']
+  vivify_590:
+    set $P2114, $P2113["statement"]
+    unless_null $P2114, vivify_591
+    new $P2114, "Undef"
+  vivify_591:
+    $P2115 = $P2114."ast"()
+    store_lex "$past", $P2115
+.annotate "line", 773
+    find_lex $P2116, "$/"
+    get_hll_global $P2117, ["PAST"], "Regex"
+    find_lex $P2118, "$past"
+    $P2119 = $P2117."new"($P2118, "pastnode" :named("pasttype"))
+    $P2120 = $P2116."!make"($P2119)
+.annotate "line", 771
+    .return ($P2120)
+  control_2109:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2114, exception, "payload"
-    .return ($P2114)
+    getattribute $P2121, exception, "payload"
+    .return ($P2121)
 .end
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<{ }>"  :subid("122_1271336409.53729") :method :outer("120_1271336409.53729")
-    .param pmc param_2118
-.annotate "line", 775
-    new $P2117, 'ExceptionHandler'
-    set_addr $P2117, control_2116
-    $P2117."handle_types"(58)
-    push_eh $P2117
-    .lex "self", self
-    .lex "$/", param_2118
-    find_lex $P2119, "$/"
-    find_lex $P2120, "$/"
-    unless_null $P2120, vivify_591
-    $P2120 = root_new ['parrot';'Hash']
-  vivify_591:
-    set $P2121, $P2120["codeblock"]
-    unless_null $P2121, vivify_592
-    new $P2121, "Undef"
+.sub "metachar:sym<{ }>"  :subid("123_1271948680.36754") :method :outer("121_1271948680.36754")
+    .param pmc param_2125
+.annotate "line", 776
+    new $P2124, 'ExceptionHandler'
+    set_addr $P2124, control_2123
+    $P2124."handle_types"(58)
+    push_eh $P2124
+    .lex "self", self
+    .lex "$/", param_2125
+    find_lex $P2126, "$/"
+    find_lex $P2127, "$/"
+    unless_null $P2127, vivify_592
+    $P2127 = root_new ['parrot';'Hash']
   vivify_592:
-    $P2122 = $P2121."ast"()
-    $P2123 = $P2119."!make"($P2122)
-    .return ($P2123)
-  control_2116:
+    set $P2128, $P2127["codeblock"]
+    unless_null $P2128, vivify_593
+    new $P2128, "Undef"
+  vivify_593:
+    $P2129 = $P2128."ast"()
+    $P2130 = $P2126."!make"($P2129)
+    .return ($P2130)
+  control_2123:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2124, exception, "payload"
-    .return ($P2124)
+    getattribute $P2131, exception, "payload"
+    .return ($P2131)
 .end
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "assertion:sym<{ }>"  :subid("123_1271336409.53729") :method :outer("120_1271336409.53729")
-    .param pmc param_2128
-.annotate "line", 777
-    new $P2127, 'ExceptionHandler'
-    set_addr $P2127, control_2126
-    $P2127."handle_types"(58)
-    push_eh $P2127
-    .lex "self", self
-    .lex "$/", param_2128
-    find_lex $P2129, "$/"
-    find_lex $P2130, "$/"
-    unless_null $P2130, vivify_593
-    $P2130 = root_new ['parrot';'Hash']
-  vivify_593:
-    set $P2131, $P2130["codeblock"]
-    unless_null $P2131, vivify_594
-    new $P2131, "Undef"
+.sub "assertion:sym<{ }>"  :subid("124_1271948680.36754") :method :outer("121_1271948680.36754")
+    .param pmc param_2135
+.annotate "line", 778
+    new $P2134, 'ExceptionHandler'
+    set_addr $P2134, control_2133
+    $P2134."handle_types"(58)
+    push_eh $P2134
+    .lex "self", self
+    .lex "$/", param_2135
+    find_lex $P2136, "$/"
+    find_lex $P2137, "$/"
+    unless_null $P2137, vivify_594
+    $P2137 = root_new ['parrot';'Hash']
   vivify_594:
-    $P2132 = $P2131."ast"()
-    $P2133 = $P2129."!make"($P2132)
-    .return ($P2133)
-  control_2126:
+    set $P2138, $P2137["codeblock"]
+    unless_null $P2138, vivify_595
+    new $P2138, "Undef"
+  vivify_595:
+    $P2139 = $P2138."ast"()
+    $P2140 = $P2136."!make"($P2139)
+    .return ($P2140)
+  control_2133:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2134, exception, "payload"
-    .return ($P2134)
+    getattribute $P2141, exception, "payload"
+    .return ($P2141)
 .end
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "codeblock"  :subid("124_1271336409.53729") :method :outer("120_1271336409.53729")
-    .param pmc param_2138
-.annotate "line", 779
-    new $P2137, 'ExceptionHandler'
-    set_addr $P2137, control_2136
-    $P2137."handle_types"(58)
-    push_eh $P2137
-    .lex "self", self
-    .lex "$/", param_2138
-.annotate "line", 780
-    new $P2139, "Undef"
-    .lex "$block", $P2139
-.annotate "line", 782
-    new $P2140, "Undef"
-    .lex "$past", $P2140
+.sub "codeblock"  :subid("125_1271948680.36754") :method :outer("121_1271948680.36754")
+    .param pmc param_2145
 .annotate "line", 780
-    find_lex $P2141, "$/"
-    unless_null $P2141, vivify_595
-    $P2141 = root_new ['parrot';'Hash']
-  vivify_595:
-    set $P2142, $P2141["block"]
-    unless_null $P2142, vivify_596
-    new $P2142, "Undef"
-  vivify_596:
-    $P2143 = $P2142."ast"()
-    store_lex "$block", $P2143
+    new $P2144, 'ExceptionHandler'
+    set_addr $P2144, control_2143
+    $P2144."handle_types"(58)
+    push_eh $P2144
+    .lex "self", self
+    .lex "$/", param_2145
 .annotate "line", 781
-    find_lex $P2144, "$block"
-    $P2144."blocktype"("immediate")
+    new $P2146, "Undef"
+    .lex "$block", $P2146
 .annotate "line", 783
-    get_hll_global $P2145, ["PAST"], "Regex"
+    new $P2147, "Undef"
+    .lex "$past", $P2147
+.annotate "line", 781
+    find_lex $P2148, "$/"
+    unless_null $P2148, vivify_596
+    $P2148 = root_new ['parrot';'Hash']
+  vivify_596:
+    set $P2149, $P2148["block"]
+    unless_null $P2149, vivify_597
+    new $P2149, "Undef"
+  vivify_597:
+    $P2150 = $P2149."ast"()
+    store_lex "$block", $P2150
+.annotate "line", 782
+    find_lex $P2151, "$block"
+    $P2151."blocktype"("immediate")
 .annotate "line", 784
-    get_hll_global $P2146, ["PAST"], "Stmts"
+    get_hll_global $P2152, ["PAST"], "Regex"
 .annotate "line", 785
-    get_hll_global $P2147, ["PAST"], "Op"
+    get_hll_global $P2153, ["PAST"], "Stmts"
 .annotate "line", 786
-    get_hll_global $P2148, ["PAST"], "Var"
-    $P2149 = $P2148."new"("$/" :named("name"))
+    get_hll_global $P2154, ["PAST"], "Op"
 .annotate "line", 787
-    get_hll_global $P2150, ["PAST"], "Op"
+    get_hll_global $P2155, ["PAST"], "Var"
+    $P2156 = $P2155."new"("$/" :named("name"))
 .annotate "line", 788
-    get_hll_global $P2151, ["PAST"], "Var"
-    $P2152 = $P2151."new"(unicode:"$\x{a2}" :named("name"))
-    $P2153 = $P2150."new"($P2152, "MATCH" :named("name"), "callmethod" :named("pasttype"))
-.annotate "line", 787
-    $P2154 = $P2147."new"($P2149, $P2153, "bind" :named("pasttype"))
+    get_hll_global $P2157, ["PAST"], "Op"
+.annotate "line", 789
+    get_hll_global $P2158, ["PAST"], "Var"
+    $P2159 = $P2158."new"(unicode:"$\x{a2}" :named("name"))
+    $P2160 = $P2157."new"($P2159, "MATCH" :named("name"), "callmethod" :named("pasttype"))
+.annotate "line", 788
+    $P2161 = $P2154."new"($P2156, $P2160, "bind" :named("pasttype"))
+.annotate "line", 786
+    find_lex $P2162, "$block"
+    $P2163 = $P2153."new"($P2161, $P2162)
 .annotate "line", 785
-    find_lex $P2155, "$block"
-    $P2156 = $P2146."new"($P2154, $P2155)
+    $P2164 = $P2152."new"($P2163, "pastnode" :named("pasttype"))
 .annotate "line", 784
-    $P2157 = $P2145."new"($P2156, "pastnode" :named("pasttype"))
-.annotate "line", 783
-    store_lex "$past", $P2157
-.annotate "line", 798
-    find_lex $P2158, "$/"
-    find_lex $P2159, "$past"
-    $P2160 = $P2158."!make"($P2159)
-.annotate "line", 779
-    .return ($P2160)
-  control_2136:
+    store_lex "$past", $P2164
+.annotate "line", 799
+    find_lex $P2165, "$/"
+    find_lex $P2166, "$past"
+    $P2167 = $P2165."!make"($P2166)
+.annotate "line", 780
+    .return ($P2167)
+  control_2143:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2161, exception, "payload"
-    .return ($P2161)
+    getattribute $P2168, exception, "payload"
+    .return ($P2168)
 .end
 
 ### .include 'src/cheats/nqp-builtins.pir'

Modified: branches/runcore_purge/ext/nqp-rx/src/stage0/P6Regex-s0.pir
==============================================================================
--- branches/runcore_purge/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -16,7 +16,7 @@
 ### .include 'gen/p6regex-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271336383.463")
+.sub "_block11"  :anon :subid("10_1271948653.77811")
 .annotate "line", 0
     get_hll_global $P14, ["Regex";"P6Regex";"Grammar"], "_block13" 
     capture_lex $P14
@@ -30,9 +30,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post158") :outer("10_1271336383.463")
+.sub "" :load :init :subid("post158") :outer("10_1271948653.77811")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271336383.463" 
+    .const 'Sub' $P12 = "10_1271948653.77811" 
     .local pmc block
     set block, $P12
     $P580 = get_root_global ["parrot"], "P6metaclass"
@@ -41,140 +41,140 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block13"  :subid("11_1271336383.463") :outer("10_1271336383.463")
+.sub "_block13"  :subid("11_1271948653.77811") :outer("10_1271948653.77811")
 .annotate "line", 3
-    .const 'Sub' $P571 = "156_1271336383.463" 
+    .const 'Sub' $P571 = "156_1271948653.77811" 
     capture_lex $P571
-    .const 'Sub' $P563 = "154_1271336383.463" 
+    .const 'Sub' $P563 = "154_1271948653.77811" 
     capture_lex $P563
-    .const 'Sub' $P555 = "152_1271336383.463" 
+    .const 'Sub' $P555 = "152_1271948653.77811" 
     capture_lex $P555
-    .const 'Sub' $P534 = "147_1271336383.463" 
+    .const 'Sub' $P534 = "147_1271948653.77811" 
     capture_lex $P534
-    .const 'Sub' $P499 = "141_1271336383.463" 
+    .const 'Sub' $P499 = "141_1271948653.77811" 
     capture_lex $P499
-    .const 'Sub' $P487 = "138_1271336383.463" 
+    .const 'Sub' $P487 = "138_1271948653.77811" 
     capture_lex $P487
-    .const 'Sub' $P474 = "135_1271336383.463" 
+    .const 'Sub' $P474 = "135_1271948653.77811" 
     capture_lex $P474
-    .const 'Sub' $P468 = "133_1271336383.463" 
+    .const 'Sub' $P468 = "133_1271948653.77811" 
     capture_lex $P468
-    .const 'Sub' $P457 = "130_1271336383.463" 
+    .const 'Sub' $P457 = "130_1271948653.77811" 
     capture_lex $P457
-    .const 'Sub' $P446 = "127_1271336383.463" 
+    .const 'Sub' $P446 = "127_1271948653.77811" 
     capture_lex $P446
-    .const 'Sub' $P437 = "123_1271336383.463" 
+    .const 'Sub' $P437 = "123_1271948653.77811" 
     capture_lex $P437
-    .const 'Sub' $P431 = "121_1271336383.463" 
+    .const 'Sub' $P431 = "121_1271948653.77811" 
     capture_lex $P431
-    .const 'Sub' $P425 = "119_1271336383.463" 
+    .const 'Sub' $P425 = "119_1271948653.77811" 
     capture_lex $P425
-    .const 'Sub' $P419 = "117_1271336383.463" 
+    .const 'Sub' $P419 = "117_1271948653.77811" 
     capture_lex $P419
-    .const 'Sub' $P413 = "115_1271336383.463" 
+    .const 'Sub' $P413 = "115_1271948653.77811" 
     capture_lex $P413
-    .const 'Sub' $P405 = "113_1271336383.463" 
+    .const 'Sub' $P405 = "113_1271948653.77811" 
     capture_lex $P405
-    .const 'Sub' $P394 = "111_1271336383.463" 
+    .const 'Sub' $P394 = "111_1271948653.77811" 
     capture_lex $P394
-    .const 'Sub' $P383 = "109_1271336383.463" 
+    .const 'Sub' $P383 = "109_1271948653.77811" 
     capture_lex $P383
-    .const 'Sub' $P377 = "107_1271336383.463" 
+    .const 'Sub' $P377 = "107_1271948653.77811" 
     capture_lex $P377
-    .const 'Sub' $P371 = "105_1271336383.463" 
+    .const 'Sub' $P371 = "105_1271948653.77811" 
     capture_lex $P371
-    .const 'Sub' $P365 = "103_1271336383.463" 
+    .const 'Sub' $P365 = "103_1271948653.77811" 
     capture_lex $P365
-    .const 'Sub' $P359 = "101_1271336383.463" 
+    .const 'Sub' $P359 = "101_1271948653.77811" 
     capture_lex $P359
-    .const 'Sub' $P353 = "99_1271336383.463" 
+    .const 'Sub' $P353 = "99_1271948653.77811" 
     capture_lex $P353
-    .const 'Sub' $P347 = "97_1271336383.463" 
+    .const 'Sub' $P347 = "97_1271948653.77811" 
     capture_lex $P347
-    .const 'Sub' $P341 = "95_1271336383.463" 
+    .const 'Sub' $P341 = "95_1271948653.77811" 
     capture_lex $P341
-    .const 'Sub' $P335 = "93_1271336383.463" 
+    .const 'Sub' $P335 = "93_1271948653.77811" 
     capture_lex $P335
-    .const 'Sub' $P323 = "89_1271336383.463" 
+    .const 'Sub' $P323 = "89_1271948653.77811" 
     capture_lex $P323
-    .const 'Sub' $P311 = "87_1271336383.463" 
+    .const 'Sub' $P311 = "87_1271948653.77811" 
     capture_lex $P311
-    .const 'Sub' $P304 = "85_1271336383.463" 
+    .const 'Sub' $P304 = "85_1271948653.77811" 
     capture_lex $P304
-    .const 'Sub' $P287 = "83_1271336383.463" 
+    .const 'Sub' $P287 = "83_1271948653.77811" 
     capture_lex $P287
-    .const 'Sub' $P280 = "81_1271336383.463" 
+    .const 'Sub' $P280 = "81_1271948653.77811" 
     capture_lex $P280
-    .const 'Sub' $P274 = "79_1271336383.463" 
+    .const 'Sub' $P274 = "79_1271948653.77811" 
     capture_lex $P274
-    .const 'Sub' $P268 = "77_1271336383.463" 
+    .const 'Sub' $P268 = "77_1271948653.77811" 
     capture_lex $P268
-    .const 'Sub' $P261 = "75_1271336383.463" 
+    .const 'Sub' $P261 = "75_1271948653.77811" 
     capture_lex $P261
-    .const 'Sub' $P254 = "73_1271336383.463" 
+    .const 'Sub' $P254 = "73_1271948653.77811" 
     capture_lex $P254
-    .const 'Sub' $P247 = "71_1271336383.463" 
+    .const 'Sub' $P247 = "71_1271948653.77811" 
     capture_lex $P247
-    .const 'Sub' $P240 = "69_1271336383.463" 
+    .const 'Sub' $P240 = "69_1271948653.77811" 
     capture_lex $P240
-    .const 'Sub' $P234 = "67_1271336383.463" 
+    .const 'Sub' $P234 = "67_1271948653.77811" 
     capture_lex $P234
-    .const 'Sub' $P228 = "65_1271336383.463" 
+    .const 'Sub' $P228 = "65_1271948653.77811" 
     capture_lex $P228
-    .const 'Sub' $P222 = "63_1271336383.463" 
+    .const 'Sub' $P222 = "63_1271948653.77811" 
     capture_lex $P222
-    .const 'Sub' $P216 = "61_1271336383.463" 
+    .const 'Sub' $P216 = "61_1271948653.77811" 
     capture_lex $P216
-    .const 'Sub' $P210 = "59_1271336383.463" 
+    .const 'Sub' $P210 = "59_1271948653.77811" 
     capture_lex $P210
-    .const 'Sub' $P205 = "57_1271336383.463" 
+    .const 'Sub' $P205 = "57_1271948653.77811" 
     capture_lex $P205
-    .const 'Sub' $P200 = "55_1271336383.463" 
+    .const 'Sub' $P200 = "55_1271948653.77811" 
     capture_lex $P200
-    .const 'Sub' $P194 = "53_1271336383.463" 
+    .const 'Sub' $P194 = "53_1271948653.77811" 
     capture_lex $P194
-    .const 'Sub' $P188 = "51_1271336383.463" 
+    .const 'Sub' $P188 = "51_1271948653.77811" 
     capture_lex $P188
-    .const 'Sub' $P182 = "49_1271336383.463" 
+    .const 'Sub' $P182 = "49_1271948653.77811" 
     capture_lex $P182
-    .const 'Sub' $P166 = "44_1271336383.463" 
+    .const 'Sub' $P166 = "44_1271948653.77811" 
     capture_lex $P166
-    .const 'Sub' $P154 = "42_1271336383.463" 
+    .const 'Sub' $P154 = "42_1271948653.77811" 
     capture_lex $P154
-    .const 'Sub' $P147 = "40_1271336383.463" 
+    .const 'Sub' $P147 = "40_1271948653.77811" 
     capture_lex $P147
-    .const 'Sub' $P140 = "38_1271336383.463" 
+    .const 'Sub' $P140 = "38_1271948653.77811" 
     capture_lex $P140
-    .const 'Sub' $P133 = "36_1271336383.463" 
+    .const 'Sub' $P133 = "36_1271948653.77811" 
     capture_lex $P133
-    .const 'Sub' $P114 = "31_1271336383.463" 
+    .const 'Sub' $P114 = "31_1271948653.77811" 
     capture_lex $P114
-    .const 'Sub' $P101 = "28_1271336383.463" 
+    .const 'Sub' $P101 = "28_1271948653.77811" 
     capture_lex $P101
-    .const 'Sub' $P94 = "26_1271336383.463" 
+    .const 'Sub' $P94 = "26_1271948653.77811" 
     capture_lex $P94
-    .const 'Sub' $P82 = "24_1271336383.463" 
+    .const 'Sub' $P82 = "24_1271948653.77811" 
     capture_lex $P82
-    .const 'Sub' $P75 = "22_1271336383.463" 
+    .const 'Sub' $P75 = "22_1271948653.77811" 
     capture_lex $P75
-    .const 'Sub' $P63 = "20_1271336383.463" 
+    .const 'Sub' $P63 = "20_1271948653.77811" 
     capture_lex $P63
-    .const 'Sub' $P56 = "18_1271336383.463" 
+    .const 'Sub' $P56 = "18_1271948653.77811" 
     capture_lex $P56
-    .const 'Sub' $P46 = "15_1271336383.463" 
+    .const 'Sub' $P46 = "15_1271948653.77811" 
     capture_lex $P46
-    .const 'Sub' $P38 = "13_1271336383.463" 
+    .const 'Sub' $P38 = "13_1271948653.77811" 
     capture_lex $P38
-    .const 'Sub' $P15 = "12_1271336383.463" 
+    .const 'Sub' $P15 = "12_1271948653.77811" 
     capture_lex $P15
-    .const 'Sub' $P571 = "156_1271336383.463" 
+    .const 'Sub' $P571 = "156_1271948653.77811" 
     capture_lex $P571
     .return ($P571)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "obs"  :subid("12_1271336383.463") :method :outer("11_1271336383.463")
+.sub "obs"  :subid("12_1271948653.77811") :method :outer("11_1271948653.77811")
     .param pmc param_18
     .param pmc param_19
     .param pmc param_20 :optional
@@ -222,7 +222,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "ws"  :subid("13_1271336383.463") :method :outer("11_1271336383.463")
+.sub "ws"  :subid("13_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx39_tgt
     .local int rx39_pos
@@ -304,7 +304,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__ws"  :subid("14_1271336383.463") :method
+.sub "!PREFIX__ws"  :subid("14_1271948653.77811") :method
 .annotate "line", 3
     new $P41, "ResizablePMCArray"
     push $P41, ""
@@ -313,9 +313,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "normspace"  :subid("15_1271336383.463") :method :outer("11_1271336383.463")
+.sub "normspace"  :subid("15_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
-    .const 'Sub' $P52 = "17_1271336383.463" 
+    .const 'Sub' $P52 = "17_1271948653.77811" 
     capture_lex $P52
     .local string rx47_tgt
     .local int rx47_pos
@@ -349,7 +349,7 @@
 .annotate "line", 10
   # rx subrule "before" subtype=zerowidth negate=
     rx47_cur."!cursor_pos"(rx47_pos)
-    .const 'Sub' $P52 = "17_1271336383.463" 
+    .const 'Sub' $P52 = "17_1271948653.77811" 
     capture_lex $P52
     $P10 = rx47_cur."before"($P52)
     unless $P10, rx47_fail
@@ -377,7 +377,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__normspace"  :subid("16_1271336383.463") :method
+.sub "!PREFIX__normspace"  :subid("16_1271948653.77811") :method
 .annotate "line", 3
     new $P49, "ResizablePMCArray"
     push $P49, ""
@@ -386,7 +386,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block51"  :anon :subid("17_1271336383.463") :method :outer("15_1271336383.463")
+.sub "_block51"  :anon :subid("17_1271948653.77811") :method :outer("15_1271948653.77811")
 .annotate "line", 10
     .local string rx53_tgt
     .local int rx53_pos
@@ -454,7 +454,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arg"  :subid("18_1271336383.463") :method :outer("11_1271336383.463")
+.sub "arg"  :subid("18_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx57_tgt
     .local int rx57_pos
@@ -565,7 +565,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arg"  :subid("19_1271336383.463") :method
+.sub "!PREFIX__arg"  :subid("19_1271948653.77811") :method
 .annotate "line", 3
     new $P59, "ResizablePMCArray"
     push $P59, ""
@@ -576,7 +576,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arglist"  :subid("20_1271336383.463") :method :outer("11_1271336383.463")
+.sub "arglist"  :subid("20_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx64_tgt
     .local int rx64_pos
@@ -682,7 +682,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("21_1271336383.463") :method
+.sub "!PREFIX__arglist"  :subid("21_1271948653.77811") :method
 .annotate "line", 3
     new $P66, "ResizablePMCArray"
     push $P66, ""
@@ -691,7 +691,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "TOP"  :subid("22_1271336383.463") :method :outer("11_1271336383.463")
+.sub "TOP"  :subid("22_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx76_tgt
     .local int rx76_pos
@@ -764,7 +764,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__TOP"  :subid("23_1271336383.463") :method
+.sub "!PREFIX__TOP"  :subid("23_1271948653.77811") :method
 .annotate "line", 3
     $P78 = self."!PREFIX__!subrule"("nibbler", "")
     new $P79, "ResizablePMCArray"
@@ -774,7 +774,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "nibbler"  :subid("24_1271336383.463") :method :outer("11_1271336383.463")
+.sub "nibbler"  :subid("24_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx83_tgt
     .local int rx83_pos
@@ -942,7 +942,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__nibbler"  :subid("25_1271336383.463") :method
+.sub "!PREFIX__nibbler"  :subid("25_1271948653.77811") :method
 .annotate "line", 3
     new $P85, "ResizablePMCArray"
     push $P85, ""
@@ -951,7 +951,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "termish"  :subid("26_1271336383.463") :method :outer("11_1271336383.463")
+.sub "termish"  :subid("26_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx95_tgt
     .local int rx95_pos
@@ -1019,7 +1019,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__termish"  :subid("27_1271336383.463") :method
+.sub "!PREFIX__termish"  :subid("27_1271948653.77811") :method
 .annotate "line", 3
     new $P97, "ResizablePMCArray"
     push $P97, ""
@@ -1028,9 +1028,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantified_atom"  :subid("28_1271336383.463") :method :outer("11_1271336383.463")
+.sub "quantified_atom"  :subid("28_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
-    .const 'Sub' $P110 = "30_1271336383.463" 
+    .const 'Sub' $P110 = "30_1271948653.77811" 
     capture_lex $P110
     .local string rx102_tgt
     .local int rx102_pos
@@ -1093,7 +1093,7 @@
   alt108_1:
   # rx subrule "before" subtype=zerowidth negate=
     rx102_cur."!cursor_pos"(rx102_pos)
-    .const 'Sub' $P110 = "30_1271336383.463" 
+    .const 'Sub' $P110 = "30_1271948653.77811" 
     capture_lex $P110
     $P10 = rx102_cur."before"($P110)
     unless $P10, rx102_fail
@@ -1131,7 +1131,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantified_atom"  :subid("29_1271336383.463") :method
+.sub "!PREFIX__quantified_atom"  :subid("29_1271948653.77811") :method
 .annotate "line", 3
     $P104 = self."!PREFIX__!subrule"("atom", "")
     new $P105, "ResizablePMCArray"
@@ -1141,7 +1141,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block109"  :anon :subid("30_1271336383.463") :method :outer("28_1271336383.463")
+.sub "_block109"  :anon :subid("30_1271948653.77811") :method :outer("28_1271948653.77811")
 .annotate "line", 41
     .local string rx111_tgt
     .local int rx111_pos
@@ -1197,9 +1197,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "atom"  :subid("31_1271336383.463") :method :outer("11_1271336383.463")
+.sub "atom"  :subid("31_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
-    .const 'Sub' $P125 = "33_1271336383.463" 
+    .const 'Sub' $P125 = "33_1271948653.77811" 
     capture_lex $P125
     .local string rx115_tgt
     .local int rx115_pos
@@ -1259,7 +1259,7 @@
   rxquantg122_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx115_cur."!cursor_pos"(rx115_pos)
-    .const 'Sub' $P125 = "33_1271336383.463" 
+    .const 'Sub' $P125 = "33_1271948653.77811" 
     capture_lex $P125
     $P10 = rx115_cur."before"($P125)
     unless $P10, rx115_fail
@@ -1296,7 +1296,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__atom"  :subid("32_1271336383.463") :method
+.sub "!PREFIX__atom"  :subid("32_1271948653.77811") :method
 .annotate "line", 3
     $P117 = self."!PREFIX__!subrule"("metachar", "")
     new $P118, "ResizablePMCArray"
@@ -1307,7 +1307,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block124"  :anon :subid("33_1271336383.463") :method :outer("31_1271336383.463")
+.sub "_block124"  :anon :subid("33_1271948653.77811") :method :outer("31_1271948653.77811")
 .annotate "line", 47
     .local string rx126_tgt
     .local int rx126_pos
@@ -1362,7 +1362,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier"  :subid("34_1271336383.463") :method
+.sub "quantifier"  :subid("34_1271948653.77811") :method
 .annotate "line", 52
     $P130 = self."!protoregex"("quantifier")
     .return ($P130)
@@ -1370,7 +1370,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier"  :subid("35_1271336383.463") :method
+.sub "!PREFIX__quantifier"  :subid("35_1271948653.77811") :method
 .annotate "line", 52
     $P132 = self."!PREFIX__!protoregex"("quantifier")
     .return ($P132)
@@ -1378,7 +1378,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<*>"  :subid("36_1271336383.463") :method :outer("11_1271336383.463")
+.sub "quantifier:sym<*>"  :subid("36_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx134_tgt
     .local int rx134_pos
@@ -1457,7 +1457,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<*>"  :subid("37_1271336383.463") :method
+.sub "!PREFIX__quantifier:sym<*>"  :subid("37_1271948653.77811") :method
 .annotate "line", 3
     $P136 = self."!PREFIX__!subrule"("backmod", "*")
     new $P137, "ResizablePMCArray"
@@ -1467,7 +1467,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<+>"  :subid("38_1271336383.463") :method :outer("11_1271336383.463")
+.sub "quantifier:sym<+>"  :subid("38_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx141_tgt
     .local int rx141_pos
@@ -1546,7 +1546,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<+>"  :subid("39_1271336383.463") :method
+.sub "!PREFIX__quantifier:sym<+>"  :subid("39_1271948653.77811") :method
 .annotate "line", 3
     $P143 = self."!PREFIX__!subrule"("backmod", "+")
     new $P144, "ResizablePMCArray"
@@ -1556,7 +1556,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<?>"  :subid("40_1271336383.463") :method :outer("11_1271336383.463")
+.sub "quantifier:sym<?>"  :subid("40_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx148_tgt
     .local int rx148_pos
@@ -1635,7 +1635,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<?>"  :subid("41_1271336383.463") :method
+.sub "!PREFIX__quantifier:sym<?>"  :subid("41_1271948653.77811") :method
 .annotate "line", 3
     $P150 = self."!PREFIX__!subrule"("backmod", "?")
     new $P151, "ResizablePMCArray"
@@ -1645,7 +1645,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<**>"  :subid("42_1271336383.463") :method :outer("11_1271336383.463")
+.sub "quantifier:sym<**>"  :subid("42_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx155_tgt
     .local int rx155_pos
@@ -1834,7 +1834,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<**>"  :subid("43_1271336383.463") :method
+.sub "!PREFIX__quantifier:sym<**>"  :subid("43_1271948653.77811") :method
 .annotate "line", 3
     new $P157, "ResizablePMCArray"
     push $P157, "**"
@@ -1843,9 +1843,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backmod"  :subid("44_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backmod"  :subid("44_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
-    .const 'Sub' $P175 = "46_1271336383.463" 
+    .const 'Sub' $P175 = "46_1271948653.77811" 
     capture_lex $P175
     .local string rx167_tgt
     .local int rx167_pos
@@ -1915,7 +1915,7 @@
   alt173_2:
   # rx subrule "before" subtype=zerowidth negate=1
     rx167_cur."!cursor_pos"(rx167_pos)
-    .const 'Sub' $P175 = "46_1271336383.463" 
+    .const 'Sub' $P175 = "46_1271948653.77811" 
     capture_lex $P175
     $P10 = rx167_cur."before"($P175)
     if $P10, rx167_fail
@@ -1939,7 +1939,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backmod"  :subid("45_1271336383.463") :method
+.sub "!PREFIX__backmod"  :subid("45_1271948653.77811") :method
 .annotate "line", 3
     new $P169, "ResizablePMCArray"
     push $P169, ""
@@ -1948,7 +1948,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block174"  :anon :subid("46_1271336383.463") :method :outer("44_1271336383.463")
+.sub "_block174"  :anon :subid("46_1271948653.77811") :method :outer("44_1271948653.77811")
 .annotate "line", 71
     .local string rx176_tgt
     .local int rx176_pos
@@ -2004,7 +2004,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar"  :subid("47_1271336383.463") :method
+.sub "metachar"  :subid("47_1271948653.77811") :method
 .annotate "line", 73
     $P179 = self."!protoregex"("metachar")
     .return ($P179)
@@ -2012,7 +2012,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar"  :subid("48_1271336383.463") :method
+.sub "!PREFIX__metachar"  :subid("48_1271948653.77811") :method
 .annotate "line", 73
     $P181 = self."!PREFIX__!protoregex"("metachar")
     .return ($P181)
@@ -2020,7 +2020,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<ws>"  :subid("49_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<ws>"  :subid("49_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx183_tgt
     .local int rx183_pos
@@ -2076,7 +2076,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<ws>"  :subid("50_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<ws>"  :subid("50_1271948653.77811") :method
 .annotate "line", 3
     $P185 = self."!PREFIX__!subrule"("", "")
     new $P186, "ResizablePMCArray"
@@ -2086,7 +2086,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<[ ]>"  :subid("51_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<[ ]>"  :subid("51_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx189_tgt
     .local int rx189_pos
@@ -2158,7 +2158,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<[ ]>"  :subid("52_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<[ ]>"  :subid("52_1271948653.77811") :method
 .annotate "line", 3
     $P191 = self."!PREFIX__!subrule"("nibbler", "[")
     new $P192, "ResizablePMCArray"
@@ -2168,7 +2168,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<( )>"  :subid("53_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<( )>"  :subid("53_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx195_tgt
     .local int rx195_pos
@@ -2240,7 +2240,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<( )>"  :subid("54_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<( )>"  :subid("54_1271948653.77811") :method
 .annotate "line", 3
     $P197 = self."!PREFIX__!subrule"("nibbler", "(")
     new $P198, "ResizablePMCArray"
@@ -2250,7 +2250,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<'>"  :subid("55_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<'>"  :subid("55_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx201_tgt
     .local int rx201_pos
@@ -2314,7 +2314,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<'>"  :subid("56_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<'>"  :subid("56_1271948653.77811") :method
 .annotate "line", 3
     new $P203, "ResizablePMCArray"
     push $P203, "'"
@@ -2323,7 +2323,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<\">"  :subid("57_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<\">"  :subid("57_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx206_tgt
     .local int rx206_pos
@@ -2387,7 +2387,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<\">"  :subid("58_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<\">"  :subid("58_1271948653.77811") :method
 .annotate "line", 3
     new $P208, "ResizablePMCArray"
     push $P208, "\""
@@ -2396,7 +2396,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<.>"  :subid("59_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<.>"  :subid("59_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx211_tgt
     .local int rx211_pos
@@ -2468,7 +2468,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<.>"  :subid("60_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<.>"  :subid("60_1271948653.77811") :method
 .annotate "line", 3
     new $P213, "ResizablePMCArray"
     push $P213, "."
@@ -2477,7 +2477,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^>"  :subid("61_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<^>"  :subid("61_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx217_tgt
     .local int rx217_pos
@@ -2549,7 +2549,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^>"  :subid("62_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<^>"  :subid("62_1271948653.77811") :method
 .annotate "line", 3
     new $P219, "ResizablePMCArray"
     push $P219, "^"
@@ -2558,7 +2558,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^^>"  :subid("63_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<^^>"  :subid("63_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx223_tgt
     .local int rx223_pos
@@ -2630,7 +2630,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^^>"  :subid("64_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<^^>"  :subid("64_1271948653.77811") :method
 .annotate "line", 3
     new $P225, "ResizablePMCArray"
     push $P225, "^^"
@@ -2639,7 +2639,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$>"  :subid("65_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<$>"  :subid("65_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx229_tgt
     .local int rx229_pos
@@ -2711,7 +2711,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$>"  :subid("66_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<$>"  :subid("66_1271948653.77811") :method
 .annotate "line", 3
     new $P231, "ResizablePMCArray"
     push $P231, "$"
@@ -2720,7 +2720,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$$>"  :subid("67_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<$$>"  :subid("67_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx235_tgt
     .local int rx235_pos
@@ -2792,7 +2792,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$$>"  :subid("68_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<$$>"  :subid("68_1271948653.77811") :method
 .annotate "line", 3
     new $P237, "ResizablePMCArray"
     push $P237, "$$"
@@ -2801,7 +2801,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<:::>"  :subid("69_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<:::>"  :subid("69_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx241_tgt
     .local int rx241_pos
@@ -2878,7 +2878,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<:::>"  :subid("70_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<:::>"  :subid("70_1271948653.77811") :method
 .annotate "line", 3
     $P243 = self."!PREFIX__!subrule"("", ":::")
     new $P244, "ResizablePMCArray"
@@ -2888,7 +2888,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<::>"  :subid("71_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<::>"  :subid("71_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx248_tgt
     .local int rx248_pos
@@ -2965,7 +2965,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<::>"  :subid("72_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<::>"  :subid("72_1271948653.77811") :method
 .annotate "line", 3
     $P250 = self."!PREFIX__!subrule"("", "::")
     new $P251, "ResizablePMCArray"
@@ -2975,7 +2975,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<lwb>"  :subid("73_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<lwb>"  :subid("73_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx255_tgt
     .local int rx255_pos
@@ -3060,7 +3060,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<lwb>"  :subid("74_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<lwb>"  :subid("74_1271948653.77811") :method
 .annotate "line", 3
     new $P257, "ResizablePMCArray"
     push $P257, unicode:"\x{ab}"
@@ -3070,7 +3070,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<rwb>"  :subid("75_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<rwb>"  :subid("75_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx262_tgt
     .local int rx262_pos
@@ -3155,7 +3155,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<rwb>"  :subid("76_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<rwb>"  :subid("76_1271948653.77811") :method
 .annotate "line", 3
     new $P264, "ResizablePMCArray"
     push $P264, unicode:"\x{bb}"
@@ -3165,7 +3165,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<bs>"  :subid("77_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<bs>"  :subid("77_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx269_tgt
     .local int rx269_pos
@@ -3230,7 +3230,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<bs>"  :subid("78_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<bs>"  :subid("78_1271948653.77811") :method
 .annotate "line", 3
     $P271 = self."!PREFIX__!subrule"("backslash", "\\")
     new $P272, "ResizablePMCArray"
@@ -3240,7 +3240,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<mod>"  :subid("79_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<mod>"  :subid("79_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx275_tgt
     .local int rx275_pos
@@ -3298,7 +3298,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<mod>"  :subid("80_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<mod>"  :subid("80_1271948653.77811") :method
 .annotate "line", 3
     $P277 = self."!PREFIX__!subrule"("mod_internal", "")
     new $P278, "ResizablePMCArray"
@@ -3308,7 +3308,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<~>"  :subid("81_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<~>"  :subid("81_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx281_tgt
     .local int rx281_pos
@@ -3407,7 +3407,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<~>"  :subid("82_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<~>"  :subid("82_1271948653.77811") :method
 .annotate "line", 3
     $P283 = self."!PREFIX__!subrule"("", "~")
     new $P284, "ResizablePMCArray"
@@ -3417,7 +3417,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<{*}>"  :subid("83_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<{*}>"  :subid("83_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx288_tgt
     .local int rx288_pos
@@ -3584,7 +3584,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<{*}>"  :subid("84_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<{*}>"  :subid("84_1271948653.77811") :method
 .annotate "line", 3
     new $P290, "ResizablePMCArray"
     push $P290, "{*}"
@@ -3593,7 +3593,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<assert>"  :subid("85_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<assert>"  :subid("85_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx305_tgt
     .local int rx305_pos
@@ -3678,7 +3678,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<assert>"  :subid("86_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<assert>"  :subid("86_1271948653.77811") :method
 .annotate "line", 3
     $P307 = self."!PREFIX__!subrule"("assertion", "<")
     new $P308, "ResizablePMCArray"
@@ -3688,7 +3688,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<var>"  :subid("87_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<var>"  :subid("87_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx312_tgt
     .local int rx312_pos
@@ -3850,7 +3850,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<var>"  :subid("88_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<var>"  :subid("88_1271948653.77811") :method
 .annotate "line", 3
     new $P314, "ResizablePMCArray"
     push $P314, "$"
@@ -3860,7 +3860,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<PIR>"  :subid("89_1271336383.463") :method :outer("11_1271336383.463")
+.sub "metachar:sym<PIR>"  :subid("89_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx324_tgt
     .local int rx324_pos
@@ -3951,7 +3951,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<PIR>"  :subid("90_1271336383.463") :method
+.sub "!PREFIX__metachar:sym<PIR>"  :subid("90_1271948653.77811") :method
 .annotate "line", 3
     new $P326, "ResizablePMCArray"
     push $P326, ":PIR{{"
@@ -3960,7 +3960,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash"  :subid("91_1271336383.463") :method
+.sub "backslash"  :subid("91_1271948653.77811") :method
 .annotate "line", 120
     $P332 = self."!protoregex"("backslash")
     .return ($P332)
@@ -3968,7 +3968,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash"  :subid("92_1271336383.463") :method
+.sub "!PREFIX__backslash"  :subid("92_1271948653.77811") :method
 .annotate "line", 120
     $P334 = self."!PREFIX__!protoregex"("backslash")
     .return ($P334)
@@ -3976,7 +3976,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<w>"  :subid("93_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<w>"  :subid("93_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx336_tgt
     .local int rx336_pos
@@ -4048,7 +4048,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<w>"  :subid("94_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<w>"  :subid("94_1271948653.77811") :method
 .annotate "line", 3
     new $P338, "ResizablePMCArray"
     push $P338, "N"
@@ -4064,7 +4064,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<b>"  :subid("95_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<b>"  :subid("95_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx342_tgt
     .local int rx342_pos
@@ -4136,7 +4136,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<b>"  :subid("96_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<b>"  :subid("96_1271948653.77811") :method
 .annotate "line", 3
     new $P344, "ResizablePMCArray"
     push $P344, "B"
@@ -4146,7 +4146,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<e>"  :subid("97_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<e>"  :subid("97_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx348_tgt
     .local int rx348_pos
@@ -4218,7 +4218,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<e>"  :subid("98_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<e>"  :subid("98_1271948653.77811") :method
 .annotate "line", 3
     new $P350, "ResizablePMCArray"
     push $P350, "E"
@@ -4228,7 +4228,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<f>"  :subid("99_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<f>"  :subid("99_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx354_tgt
     .local int rx354_pos
@@ -4300,7 +4300,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<f>"  :subid("100_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<f>"  :subid("100_1271948653.77811") :method
 .annotate "line", 3
     new $P356, "ResizablePMCArray"
     push $P356, "F"
@@ -4310,7 +4310,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<h>"  :subid("101_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<h>"  :subid("101_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx360_tgt
     .local int rx360_pos
@@ -4382,7 +4382,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<h>"  :subid("102_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<h>"  :subid("102_1271948653.77811") :method
 .annotate "line", 3
     new $P362, "ResizablePMCArray"
     push $P362, "H"
@@ -4392,7 +4392,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<r>"  :subid("103_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<r>"  :subid("103_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx366_tgt
     .local int rx366_pos
@@ -4464,7 +4464,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<r>"  :subid("104_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<r>"  :subid("104_1271948653.77811") :method
 .annotate "line", 3
     new $P368, "ResizablePMCArray"
     push $P368, "R"
@@ -4474,7 +4474,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<t>"  :subid("105_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<t>"  :subid("105_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx372_tgt
     .local int rx372_pos
@@ -4546,7 +4546,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<t>"  :subid("106_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<t>"  :subid("106_1271948653.77811") :method
 .annotate "line", 3
     new $P374, "ResizablePMCArray"
     push $P374, "T"
@@ -4556,7 +4556,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<v>"  :subid("107_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<v>"  :subid("107_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx378_tgt
     .local int rx378_pos
@@ -4628,7 +4628,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<v>"  :subid("108_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<v>"  :subid("108_1271948653.77811") :method
 .annotate "line", 3
     new $P380, "ResizablePMCArray"
     push $P380, "V"
@@ -4638,7 +4638,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<o>"  :subid("109_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<o>"  :subid("109_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx384_tgt
     .local int rx384_pos
@@ -4744,7 +4744,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<o>"  :subid("110_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<o>"  :subid("110_1271948653.77811") :method
 .annotate "line", 3
     $P386 = self."!PREFIX__!subrule"("octints", "O[")
     $P387 = self."!PREFIX__!subrule"("octint", "O")
@@ -4760,7 +4760,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<x>"  :subid("111_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<x>"  :subid("111_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx395_tgt
     .local int rx395_pos
@@ -4866,7 +4866,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<x>"  :subid("112_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<x>"  :subid("112_1271948653.77811") :method
 .annotate "line", 3
     $P397 = self."!PREFIX__!subrule"("hexints", "X[")
     $P398 = self."!PREFIX__!subrule"("hexint", "X")
@@ -4882,7 +4882,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<c>"  :subid("113_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<c>"  :subid("113_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx406_tgt
     .local int rx406_pos
@@ -4961,7 +4961,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<c>"  :subid("114_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<c>"  :subid("114_1271948653.77811") :method
 .annotate "line", 3
     $P408 = self."!PREFIX__!subrule"("charspec", "C")
     $P409 = self."!PREFIX__!subrule"("charspec", "c")
@@ -4973,7 +4973,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<A>"  :subid("115_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<A>"  :subid("115_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx414_tgt
     .local int rx414_pos
@@ -5036,7 +5036,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<A>"  :subid("116_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<A>"  :subid("116_1271948653.77811") :method
 .annotate "line", 3
     $P416 = self."!PREFIX__!subrule"("", "A")
     new $P417, "ResizablePMCArray"
@@ -5046,7 +5046,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<z>"  :subid("117_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<z>"  :subid("117_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx420_tgt
     .local int rx420_pos
@@ -5109,7 +5109,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<z>"  :subid("118_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<z>"  :subid("118_1271948653.77811") :method
 .annotate "line", 3
     $P422 = self."!PREFIX__!subrule"("", "z")
     new $P423, "ResizablePMCArray"
@@ -5119,7 +5119,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Z>"  :subid("119_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<Z>"  :subid("119_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx426_tgt
     .local int rx426_pos
@@ -5182,7 +5182,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Z>"  :subid("120_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<Z>"  :subid("120_1271948653.77811") :method
 .annotate "line", 3
     $P428 = self."!PREFIX__!subrule"("", "Z")
     new $P429, "ResizablePMCArray"
@@ -5192,7 +5192,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Q>"  :subid("121_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<Q>"  :subid("121_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx432_tgt
     .local int rx432_pos
@@ -5255,7 +5255,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Q>"  :subid("122_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<Q>"  :subid("122_1271948653.77811") :method
 .annotate "line", 3
     $P434 = self."!PREFIX__!subrule"("", "Q")
     new $P435, "ResizablePMCArray"
@@ -5265,7 +5265,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<misc>"  :subid("123_1271336383.463") :method :outer("11_1271336383.463")
+.sub "backslash:sym<misc>"  :subid("123_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx438_tgt
     .local int rx438_pos
@@ -5322,7 +5322,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<misc>"  :subid("124_1271336383.463") :method
+.sub "!PREFIX__backslash:sym<misc>"  :subid("124_1271948653.77811") :method
 .annotate "line", 3
     new $P440, "ResizablePMCArray"
     push $P440, ""
@@ -5331,7 +5331,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion"  :subid("125_1271336383.463") :method
+.sub "assertion"  :subid("125_1271948653.77811") :method
 .annotate "line", 138
     $P443 = self."!protoregex"("assertion")
     .return ($P443)
@@ -5339,7 +5339,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion"  :subid("126_1271336383.463") :method
+.sub "!PREFIX__assertion"  :subid("126_1271948653.77811") :method
 .annotate "line", 138
     $P445 = self."!PREFIX__!protoregex"("assertion")
     .return ($P445)
@@ -5347,9 +5347,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<?>"  :subid("127_1271336383.463") :method :outer("11_1271336383.463")
+.sub "assertion:sym<?>"  :subid("127_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
-    .const 'Sub' $P454 = "129_1271336383.463" 
+    .const 'Sub' $P454 = "129_1271948653.77811" 
     capture_lex $P454
     .local string rx447_tgt
     .local int rx447_pos
@@ -5393,7 +5393,7 @@
     rx447_cur."!mark_push"(0, rx447_pos, $I10)
   # rx subrule "before" subtype=zerowidth negate=
     rx447_cur."!cursor_pos"(rx447_pos)
-    .const 'Sub' $P454 = "129_1271336383.463" 
+    .const 'Sub' $P454 = "129_1271948653.77811" 
     capture_lex $P454
     $P10 = rx447_cur."before"($P454)
     unless $P10, rx447_fail
@@ -5426,7 +5426,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<?>"  :subid("128_1271336383.463") :method
+.sub "!PREFIX__assertion:sym<?>"  :subid("128_1271948653.77811") :method
 .annotate "line", 3
     $P449 = self."!PREFIX__!subrule"("assertion", "?")
     new $P450, "ResizablePMCArray"
@@ -5437,7 +5437,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block453"  :anon :subid("129_1271336383.463") :method :outer("127_1271336383.463")
+.sub "_block453"  :anon :subid("129_1271948653.77811") :method :outer("127_1271948653.77811")
 .annotate "line", 140
     .local string rx455_tgt
     .local int rx455_pos
@@ -5493,9 +5493,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<!>"  :subid("130_1271336383.463") :method :outer("11_1271336383.463")
+.sub "assertion:sym<!>"  :subid("130_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
-    .const 'Sub' $P465 = "132_1271336383.463" 
+    .const 'Sub' $P465 = "132_1271948653.77811" 
     capture_lex $P465
     .local string rx458_tgt
     .local int rx458_pos
@@ -5539,7 +5539,7 @@
     rx458_cur."!mark_push"(0, rx458_pos, $I10)
   # rx subrule "before" subtype=zerowidth negate=
     rx458_cur."!cursor_pos"(rx458_pos)
-    .const 'Sub' $P465 = "132_1271336383.463" 
+    .const 'Sub' $P465 = "132_1271948653.77811" 
     capture_lex $P465
     $P10 = rx458_cur."before"($P465)
     unless $P10, rx458_fail
@@ -5572,7 +5572,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<!>"  :subid("131_1271336383.463") :method
+.sub "!PREFIX__assertion:sym<!>"  :subid("131_1271948653.77811") :method
 .annotate "line", 3
     $P460 = self."!PREFIX__!subrule"("assertion", "!")
     new $P461, "ResizablePMCArray"
@@ -5583,7 +5583,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block464"  :anon :subid("132_1271336383.463") :method :outer("130_1271336383.463")
+.sub "_block464"  :anon :subid("132_1271948653.77811") :method :outer("130_1271948653.77811")
 .annotate "line", 141
     .local string rx466_tgt
     .local int rx466_pos
@@ -5639,7 +5639,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<method>"  :subid("133_1271336383.463") :method :outer("11_1271336383.463")
+.sub "assertion:sym<method>"  :subid("133_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx469_tgt
     .local int rx469_pos
@@ -5705,7 +5705,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<method>"  :subid("134_1271336383.463") :method
+.sub "!PREFIX__assertion:sym<method>"  :subid("134_1271948653.77811") :method
 .annotate "line", 3
     $P471 = self."!PREFIX__!subrule"("assertion", ".")
     new $P472, "ResizablePMCArray"
@@ -5715,9 +5715,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<name>"  :subid("135_1271336383.463") :method :outer("11_1271336383.463")
+.sub "assertion:sym<name>"  :subid("135_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
-    .const 'Sub' $P483 = "137_1271336383.463" 
+    .const 'Sub' $P483 = "137_1271948653.77811" 
     capture_lex $P483
     .local string rx475_tgt
     .local int rx475_pos
@@ -5782,7 +5782,7 @@
 .annotate "line", 150
   # rx subrule "before" subtype=zerowidth negate=
     rx475_cur."!cursor_pos"(rx475_pos)
-    .const 'Sub' $P483 = "137_1271336383.463" 
+    .const 'Sub' $P483 = "137_1271948653.77811" 
     capture_lex $P483
     $P10 = rx475_cur."before"($P483)
     unless $P10, rx475_fail
@@ -5889,7 +5889,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<name>"  :subid("136_1271336383.463") :method
+.sub "!PREFIX__assertion:sym<name>"  :subid("136_1271948653.77811") :method
 .annotate "line", 3
     new $P477, "ResizablePMCArray"
     push $P477, ""
@@ -5898,7 +5898,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block482"  :anon :subid("137_1271336383.463") :method :outer("135_1271336383.463")
+.sub "_block482"  :anon :subid("137_1271948653.77811") :method :outer("135_1271948653.77811")
 .annotate "line", 150
     .local string rx484_tgt
     .local int rx484_pos
@@ -5954,9 +5954,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<[>"  :subid("138_1271336383.463") :method :outer("11_1271336383.463")
+.sub "assertion:sym<[>"  :subid("138_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
-    .const 'Sub' $P493 = "140_1271336383.463" 
+    .const 'Sub' $P493 = "140_1271948653.77811" 
     capture_lex $P493
     .local string rx488_tgt
     .local int rx488_pos
@@ -5991,7 +5991,7 @@
 .annotate "line", 158
   # rx subrule "before" subtype=zerowidth negate=
     rx488_cur."!cursor_pos"(rx488_pos)
-    .const 'Sub' $P493 = "140_1271336383.463" 
+    .const 'Sub' $P493 = "140_1271948653.77811" 
     capture_lex $P493
     $P10 = rx488_cur."before"($P493)
     unless $P10, rx488_fail
@@ -6029,7 +6029,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<[>"  :subid("139_1271336383.463") :method
+.sub "!PREFIX__assertion:sym<[>"  :subid("139_1271948653.77811") :method
 .annotate "line", 3
     new $P490, "ResizablePMCArray"
     push $P490, ""
@@ -6038,7 +6038,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block492"  :anon :subid("140_1271336383.463") :method :outer("138_1271336383.463")
+.sub "_block492"  :anon :subid("140_1271948653.77811") :method :outer("138_1271948653.77811")
 .annotate "line", 158
     .local string rx494_tgt
     .local int rx494_pos
@@ -6118,9 +6118,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "cclass_elem"  :subid("141_1271336383.463") :method :outer("11_1271336383.463")
+.sub "cclass_elem"  :subid("141_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
-    .const 'Sub' $P511 = "143_1271336383.463" 
+    .const 'Sub' $P511 = "143_1271948653.77811" 
     capture_lex $P511
     .local string rx500_tgt
     .local int rx500_pos
@@ -6223,7 +6223,7 @@
 .annotate "line", 164
   # rx subrule $P511 subtype=capture negate=
     rx500_cur."!cursor_pos"(rx500_pos)
-    .const 'Sub' $P511 = "143_1271336383.463" 
+    .const 'Sub' $P511 = "143_1271948653.77811" 
     capture_lex $P511
     $P10 = rx500_cur.$P511()
     unless $P10, rx500_fail
@@ -6304,7 +6304,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__cclass_elem"  :subid("142_1271336383.463") :method
+.sub "!PREFIX__cclass_elem"  :subid("142_1271948653.77811") :method
 .annotate "line", 3
     new $P502, "ResizablePMCArray"
     push $P502, ""
@@ -6315,13 +6315,13 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block510"  :anon :subid("143_1271336383.463") :method :outer("141_1271336383.463")
+.sub "_block510"  :anon :subid("143_1271948653.77811") :method :outer("141_1271948653.77811")
 .annotate "line", 164
-    .const 'Sub' $P526 = "146_1271336383.463" 
+    .const 'Sub' $P526 = "146_1271948653.77811" 
     capture_lex $P526
-    .const 'Sub' $P521 = "145_1271336383.463" 
+    .const 'Sub' $P521 = "145_1271948653.77811" 
     capture_lex $P521
-    .const 'Sub' $P517 = "144_1271336383.463" 
+    .const 'Sub' $P517 = "144_1271948653.77811" 
     capture_lex $P517
     .local string rx512_tgt
     .local int rx512_pos
@@ -6392,7 +6392,7 @@
     add rx512_pos, 1
   # rx subrule $P517 subtype=capture negate=
     rx512_cur."!cursor_pos"(rx512_pos)
-    .const 'Sub' $P517 = "144_1271336383.463" 
+    .const 'Sub' $P517 = "144_1271948653.77811" 
     capture_lex $P517
     $P10 = rx512_cur.$P517()
     unless $P10, rx512_fail
@@ -6403,7 +6403,7 @@
   alt515_1:
   # rx subrule $P521 subtype=capture negate=
     rx512_cur."!cursor_pos"(rx512_pos)
-    .const 'Sub' $P521 = "145_1271336383.463" 
+    .const 'Sub' $P521 = "145_1271948653.77811" 
     capture_lex $P521
     $P10 = rx512_cur.$P521()
     unless $P10, rx512_fail
@@ -6432,7 +6432,7 @@
     add rx512_pos, rx512_off, $I11
   # rx subrule $P526 subtype=capture negate=
     rx512_cur."!cursor_pos"(rx512_pos)
-    .const 'Sub' $P526 = "146_1271336383.463" 
+    .const 'Sub' $P526 = "146_1271948653.77811" 
     capture_lex $P526
     $P10 = rx512_cur.$P526()
     unless $P10, rx512_fail
@@ -6461,7 +6461,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block516"  :anon :subid("144_1271336383.463") :method :outer("143_1271336383.463")
+.sub "_block516"  :anon :subid("144_1271948653.77811") :method :outer("143_1271948653.77811")
 .annotate "line", 166
     .local string rx518_tgt
     .local int rx518_pos
@@ -6513,7 +6513,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block520"  :anon :subid("145_1271336383.463") :method :outer("143_1271336383.463")
+.sub "_block520"  :anon :subid("145_1271948653.77811") :method :outer("143_1271948653.77811")
 .annotate "line", 166
     .local string rx522_tgt
     .local int rx522_pos
@@ -6569,7 +6569,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block525"  :anon :subid("146_1271336383.463") :method :outer("143_1271336383.463")
+.sub "_block525"  :anon :subid("146_1271948653.77811") :method :outer("143_1271948653.77811")
 .annotate "line", 166
     .local string rx527_tgt
     .local int rx527_pos
@@ -6621,9 +6621,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_internal"  :subid("147_1271336383.463") :method :outer("11_1271336383.463")
+.sub "mod_internal"  :subid("147_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
-    .const 'Sub' $P543 = "149_1271336383.463" 
+    .const 'Sub' $P543 = "149_1271948653.77811" 
     capture_lex $P543
     .local string rx535_tgt
     .local int rx535_pos
@@ -6673,7 +6673,7 @@
   rxquantr541_loop:
   # rx subrule $P543 subtype=capture negate=
     rx535_cur."!cursor_pos"(rx535_pos)
-    .const 'Sub' $P543 = "149_1271336383.463" 
+    .const 'Sub' $P543 = "149_1271948653.77811" 
     capture_lex $P543
     $P10 = rx535_cur.$P543()
     unless $P10, rx535_fail
@@ -6775,7 +6775,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_internal"  :subid("148_1271336383.463") :method
+.sub "!PREFIX__mod_internal"  :subid("148_1271948653.77811") :method
 .annotate "line", 3
     $P537 = self."!PREFIX__!subrule"("mod_ident", ":")
     new $P538, "ResizablePMCArray"
@@ -6786,7 +6786,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block542"  :anon :subid("149_1271336383.463") :method :outer("147_1271336383.463")
+.sub "_block542"  :anon :subid("149_1271948653.77811") :method :outer("147_1271948653.77811")
 .annotate "line", 176
     .local string rx544_tgt
     .local int rx544_pos
@@ -6854,7 +6854,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident"  :subid("150_1271336383.463") :method
+.sub "mod_ident"  :subid("150_1271948653.77811") :method
 .annotate "line", 181
     $P552 = self."!protoregex"("mod_ident")
     .return ($P552)
@@ -6862,7 +6862,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident"  :subid("151_1271336383.463") :method
+.sub "!PREFIX__mod_ident"  :subid("151_1271948653.77811") :method
 .annotate "line", 181
     $P554 = self."!PREFIX__!protoregex"("mod_ident")
     .return ($P554)
@@ -6870,7 +6870,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ignorecase>"  :subid("152_1271336383.463") :method :outer("11_1271336383.463")
+.sub "mod_ident:sym<ignorecase>"  :subid("152_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx556_tgt
     .local int rx556_pos
@@ -6955,7 +6955,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ignorecase>"  :subid("153_1271336383.463") :method
+.sub "!PREFIX__mod_ident:sym<ignorecase>"  :subid("153_1271948653.77811") :method
 .annotate "line", 3
     new $P558, "ResizablePMCArray"
     push $P558, "i"
@@ -6964,7 +6964,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ratchet>"  :subid("154_1271336383.463") :method :outer("11_1271336383.463")
+.sub "mod_ident:sym<ratchet>"  :subid("154_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx564_tgt
     .local int rx564_pos
@@ -7049,7 +7049,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ratchet>"  :subid("155_1271336383.463") :method
+.sub "!PREFIX__mod_ident:sym<ratchet>"  :subid("155_1271948653.77811") :method
 .annotate "line", 3
     new $P566, "ResizablePMCArray"
     push $P566, "r"
@@ -7058,7 +7058,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<sigspace>"  :subid("156_1271336383.463") :method :outer("11_1271336383.463")
+.sub "mod_ident:sym<sigspace>"  :subid("156_1271948653.77811") :method :outer("11_1271948653.77811")
 .annotate "line", 3
     .local string rx572_tgt
     .local int rx572_pos
@@ -7143,7 +7143,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<sigspace>"  :subid("157_1271336383.463") :method
+.sub "!PREFIX__mod_ident:sym<sigspace>"  :subid("157_1271948653.77811") :method
 .annotate "line", 3
     new $P574, "ResizablePMCArray"
     push $P574, "s"
@@ -7153,7 +7153,7 @@
 ### .include 'gen/p6regex-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271336390.22432")
+.sub "_block11"  :anon :subid("10_1271948660.90108")
 .annotate "line", 0
     get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13" 
     capture_lex $P14
@@ -7167,9 +7167,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post90") :outer("10_1271336390.22432")
+.sub "" :load :init :subid("post90") :outer("10_1271948660.90108")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271336390.22432" 
+    .const 'Sub' $P12 = "10_1271948660.90108" 
     .local pmc block
     set block, $P12
     $P1570 = get_root_global ["parrot"], "P6metaclass"
@@ -7178,117 +7178,117 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block13"  :subid("11_1271336390.22432") :outer("10_1271336390.22432")
+.sub "_block13"  :subid("11_1271948660.90108") :outer("10_1271948660.90108")
 .annotate "line", 4
-    .const 'Sub' $P1536 = "89_1271336390.22432" 
+    .const 'Sub' $P1536 = "89_1271948660.90108" 
     capture_lex $P1536
-    .const 'Sub' $P1467 = "85_1271336390.22432" 
+    .const 'Sub' $P1467 = "85_1271948660.90108" 
     capture_lex $P1467
-    .const 'Sub' $P1399 = "83_1271336390.22432" 
+    .const 'Sub' $P1399 = "83_1271948660.90108" 
     capture_lex $P1399
-    .const 'Sub' $P1326 = "80_1271336390.22432" 
+    .const 'Sub' $P1326 = "80_1271948660.90108" 
     capture_lex $P1326
-    .const 'Sub' $P1312 = "79_1271336390.22432" 
+    .const 'Sub' $P1312 = "79_1271948660.90108" 
     capture_lex $P1312
-    .const 'Sub' $P1288 = "78_1271336390.22432" 
+    .const 'Sub' $P1288 = "78_1271948660.90108" 
     capture_lex $P1288
-    .const 'Sub' $P1270 = "77_1271336390.22432" 
+    .const 'Sub' $P1270 = "77_1271948660.90108" 
     capture_lex $P1270
-    .const 'Sub' $P1256 = "76_1271336390.22432" 
+    .const 'Sub' $P1256 = "76_1271948660.90108" 
     capture_lex $P1256
-    .const 'Sub' $P1243 = "75_1271336390.22432" 
+    .const 'Sub' $P1243 = "75_1271948660.90108" 
     capture_lex $P1243
-    .const 'Sub' $P1212 = "74_1271336390.22432" 
+    .const 'Sub' $P1212 = "74_1271948660.90108" 
     capture_lex $P1212
-    .const 'Sub' $P1181 = "73_1271336390.22432" 
+    .const 'Sub' $P1181 = "73_1271948660.90108" 
     capture_lex $P1181
-    .const 'Sub' $P1165 = "72_1271336390.22432" 
+    .const 'Sub' $P1165 = "72_1271948660.90108" 
     capture_lex $P1165
-    .const 'Sub' $P1149 = "71_1271336390.22432" 
+    .const 'Sub' $P1149 = "71_1271948660.90108" 
     capture_lex $P1149
-    .const 'Sub' $P1133 = "70_1271336390.22432" 
+    .const 'Sub' $P1133 = "70_1271948660.90108" 
     capture_lex $P1133
-    .const 'Sub' $P1117 = "69_1271336390.22432" 
+    .const 'Sub' $P1117 = "69_1271948660.90108" 
     capture_lex $P1117
-    .const 'Sub' $P1101 = "68_1271336390.22432" 
+    .const 'Sub' $P1101 = "68_1271948660.90108" 
     capture_lex $P1101
-    .const 'Sub' $P1085 = "67_1271336390.22432" 
+    .const 'Sub' $P1085 = "67_1271948660.90108" 
     capture_lex $P1085
-    .const 'Sub' $P1069 = "66_1271336390.22432" 
+    .const 'Sub' $P1069 = "66_1271948660.90108" 
     capture_lex $P1069
-    .const 'Sub' $P1045 = "65_1271336390.22432" 
+    .const 'Sub' $P1045 = "65_1271948660.90108" 
     capture_lex $P1045
-    .const 'Sub' $P1030 = "64_1271336390.22432" 
+    .const 'Sub' $P1030 = "64_1271948660.90108" 
     capture_lex $P1030
-    .const 'Sub' $P974 = "63_1271336390.22432" 
+    .const 'Sub' $P974 = "63_1271948660.90108" 
     capture_lex $P974
-    .const 'Sub' $P953 = "62_1271336390.22432" 
+    .const 'Sub' $P953 = "62_1271948660.90108" 
     capture_lex $P953
-    .const 'Sub' $P931 = "61_1271336390.22432" 
+    .const 'Sub' $P931 = "61_1271948660.90108" 
     capture_lex $P931
-    .const 'Sub' $P921 = "60_1271336390.22432" 
+    .const 'Sub' $P921 = "60_1271948660.90108" 
     capture_lex $P921
-    .const 'Sub' $P911 = "59_1271336390.22432" 
+    .const 'Sub' $P911 = "59_1271948660.90108" 
     capture_lex $P911
-    .const 'Sub' $P901 = "58_1271336390.22432" 
+    .const 'Sub' $P901 = "58_1271948660.90108" 
     capture_lex $P901
-    .const 'Sub' $P889 = "57_1271336390.22432" 
+    .const 'Sub' $P889 = "57_1271948660.90108" 
     capture_lex $P889
-    .const 'Sub' $P877 = "56_1271336390.22432" 
+    .const 'Sub' $P877 = "56_1271948660.90108" 
     capture_lex $P877
-    .const 'Sub' $P865 = "55_1271336390.22432" 
+    .const 'Sub' $P865 = "55_1271948660.90108" 
     capture_lex $P865
-    .const 'Sub' $P853 = "54_1271336390.22432" 
+    .const 'Sub' $P853 = "54_1271948660.90108" 
     capture_lex $P853
-    .const 'Sub' $P841 = "53_1271336390.22432" 
+    .const 'Sub' $P841 = "53_1271948660.90108" 
     capture_lex $P841
-    .const 'Sub' $P829 = "52_1271336390.22432" 
+    .const 'Sub' $P829 = "52_1271948660.90108" 
     capture_lex $P829
-    .const 'Sub' $P817 = "51_1271336390.22432" 
+    .const 'Sub' $P817 = "51_1271948660.90108" 
     capture_lex $P817
-    .const 'Sub' $P805 = "50_1271336390.22432" 
+    .const 'Sub' $P805 = "50_1271948660.90108" 
     capture_lex $P805
-    .const 'Sub' $P782 = "49_1271336390.22432" 
+    .const 'Sub' $P782 = "49_1271948660.90108" 
     capture_lex $P782
-    .const 'Sub' $P759 = "48_1271336390.22432" 
+    .const 'Sub' $P759 = "48_1271948660.90108" 
     capture_lex $P759
-    .const 'Sub' $P741 = "47_1271336390.22432" 
+    .const 'Sub' $P741 = "47_1271948660.90108" 
     capture_lex $P741
-    .const 'Sub' $P731 = "46_1271336390.22432" 
+    .const 'Sub' $P731 = "46_1271948660.90108" 
     capture_lex $P731
-    .const 'Sub' $P713 = "45_1271336390.22432" 
+    .const 'Sub' $P713 = "45_1271948660.90108" 
     capture_lex $P713
-    .const 'Sub' $P666 = "44_1271336390.22432" 
+    .const 'Sub' $P666 = "44_1271948660.90108" 
     capture_lex $P666
-    .const 'Sub' $P649 = "43_1271336390.22432" 
+    .const 'Sub' $P649 = "43_1271948660.90108" 
     capture_lex $P649
-    .const 'Sub' $P634 = "42_1271336390.22432" 
+    .const 'Sub' $P634 = "42_1271948660.90108" 
     capture_lex $P634
-    .const 'Sub' $P619 = "41_1271336390.22432" 
+    .const 'Sub' $P619 = "41_1271948660.90108" 
     capture_lex $P619
-    .const 'Sub' $P593 = "40_1271336390.22432" 
+    .const 'Sub' $P593 = "40_1271948660.90108" 
     capture_lex $P593
-    .const 'Sub' $P543 = "38_1271336390.22432" 
+    .const 'Sub' $P543 = "38_1271948660.90108" 
     capture_lex $P543
-    .const 'Sub' $P475 = "36_1271336390.22432" 
+    .const 'Sub' $P475 = "36_1271948660.90108" 
     capture_lex $P475
-    .const 'Sub' $P420 = "33_1271336390.22432" 
+    .const 'Sub' $P420 = "33_1271948660.90108" 
     capture_lex $P420
-    .const 'Sub' $P405 = "32_1271336390.22432" 
+    .const 'Sub' $P405 = "32_1271948660.90108" 
     capture_lex $P405
-    .const 'Sub' $P379 = "30_1271336390.22432" 
+    .const 'Sub' $P379 = "30_1271948660.90108" 
     capture_lex $P379
-    .const 'Sub' $P362 = "29_1271336390.22432" 
+    .const 'Sub' $P362 = "29_1271948660.90108" 
     capture_lex $P362
-    .const 'Sub' $P340 = "28_1271336390.22432" 
+    .const 'Sub' $P340 = "28_1271948660.90108" 
     capture_lex $P340
-    .const 'Sub' $P308 = "27_1271336390.22432" 
+    .const 'Sub' $P308 = "27_1271948660.90108" 
     capture_lex $P308
-    .const 'Sub' $P54 = "14_1271336390.22432" 
+    .const 'Sub' $P54 = "14_1271948660.90108" 
     capture_lex $P54
-    .const 'Sub' $P21 = "13_1271336390.22432" 
+    .const 'Sub' $P21 = "13_1271948660.90108" 
     capture_lex $P21
-    .const 'Sub' $P16 = "12_1271336390.22432" 
+    .const 'Sub' $P16 = "12_1271948660.90108" 
     capture_lex $P16
     get_global $P15, "@MODIFIERS"
     unless_null $P15, vivify_91
@@ -7296,23 +7296,23 @@
     set_global "@MODIFIERS", $P15
   vivify_91:
 .annotate "line", 6
-    .const 'Sub' $P16 = "12_1271336390.22432" 
+    .const 'Sub' $P16 = "12_1271948660.90108" 
     capture_lex $P16
     .lex "INIT", $P16
 .annotate "line", 479
-    .const 'Sub' $P21 = "13_1271336390.22432" 
+    .const 'Sub' $P21 = "13_1271948660.90108" 
     capture_lex $P21
     .lex "buildsub", $P21
 .annotate "line", 496
-    .const 'Sub' $P54 = "14_1271336390.22432" 
+    .const 'Sub' $P54 = "14_1271948660.90108" 
     capture_lex $P54
     .lex "capnames", $P54
 .annotate "line", 562
-    .const 'Sub' $P308 = "27_1271336390.22432" 
+    .const 'Sub' $P308 = "27_1271948660.90108" 
     capture_lex $P308
     .lex "backmod", $P308
 .annotate "line", 569
-    .const 'Sub' $P340 = "28_1271336390.22432" 
+    .const 'Sub' $P340 = "28_1271948660.90108" 
     capture_lex $P340
     .lex "subrule_alias", $P340
 .annotate "line", 4
@@ -7329,7 +7329,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "INIT"  :subid("12_1271336390.22432") :outer("11_1271336390.22432")
+.sub "INIT"  :subid("12_1271948660.90108") :outer("11_1271948660.90108")
 .annotate "line", 6
     new $P18, 'ExceptionHandler'
     set_addr $P18, control_17
@@ -7353,7 +7353,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "buildsub"  :subid("13_1271336390.22432") :outer("11_1271336390.22432")
+.sub "buildsub"  :subid("13_1271948660.90108") :outer("11_1271948660.90108")
     .param pmc param_24
     .param pmc param_25 :optional
     .param int has_param_25 :opt_flag
@@ -7430,19 +7430,19 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "capnames"  :subid("14_1271336390.22432") :outer("11_1271336390.22432")
+.sub "capnames"  :subid("14_1271948660.90108") :outer("11_1271948660.90108")
     .param pmc param_57
     .param pmc param_58
 .annotate "line", 496
-    .const 'Sub' $P283 = "25_1271336390.22432" 
+    .const 'Sub' $P283 = "25_1271948660.90108" 
     capture_lex $P283
-    .const 'Sub' $P220 = "22_1271336390.22432" 
+    .const 'Sub' $P220 = "22_1271948660.90108" 
     capture_lex $P220
-    .const 'Sub' $P178 = "20_1271336390.22432" 
+    .const 'Sub' $P178 = "20_1271948660.90108" 
     capture_lex $P178
-    .const 'Sub' $P136 = "18_1271336390.22432" 
+    .const 'Sub' $P136 = "18_1271948660.90108" 
     capture_lex $P136
-    .const 'Sub' $P69 = "15_1271336390.22432" 
+    .const 'Sub' $P69 = "15_1271948660.90108" 
     capture_lex $P69
     new $P56, 'ExceptionHandler'
     set_addr $P56, control_55
@@ -7498,21 +7498,21 @@
     set $S280, $P279
     iseq $I281, $S280, "quant"
     unless $I281, if_278_end
-    .const 'Sub' $P283 = "25_1271336390.22432" 
+    .const 'Sub' $P283 = "25_1271948660.90108" 
     capture_lex $P283
     $P283()
   if_278_end:
     goto if_215_end
   if_215:
 .annotate "line", 534
-    .const 'Sub' $P220 = "22_1271336390.22432" 
+    .const 'Sub' $P220 = "22_1271948660.90108" 
     capture_lex $P220
     $P220()
   if_215_end:
     goto if_168_end
   if_168:
 .annotate "line", 521
-    .const 'Sub' $P178 = "20_1271336390.22432" 
+    .const 'Sub' $P178 = "20_1271948660.90108" 
     capture_lex $P178
     $P178()
   if_168_end:
@@ -7532,7 +7532,7 @@
     unless $P130, loop165_done
     shift $P134, $P130
   loop165_redo:
-    .const 'Sub' $P136 = "18_1271336390.22432" 
+    .const 'Sub' $P136 = "18_1271948660.90108" 
     capture_lex $P136
     $P136($P134)
   loop165_next:
@@ -7551,7 +7551,7 @@
     goto if_64_end
   if_64:
 .annotate "line", 499
-    .const 'Sub' $P69 = "15_1271336390.22432" 
+    .const 'Sub' $P69 = "15_1271948660.90108" 
     capture_lex $P69
     $P69()
   if_64_end:
@@ -7575,9 +7575,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block282"  :anon :subid("25_1271336390.22432") :outer("14_1271336390.22432")
+.sub "_block282"  :anon :subid("25_1271948660.90108") :outer("14_1271948660.90108")
 .annotate "line", 551
-    .const 'Sub' $P294 = "26_1271336390.22432" 
+    .const 'Sub' $P294 = "26_1271948660.90108" 
     capture_lex $P294
 .annotate "line", 552
     $P284 = root_new ['parrot';'Hash']
@@ -7606,7 +7606,7 @@
     unless $P289, loop299_done
     shift $P292, $P289
   loop299_redo:
-    .const 'Sub' $P294 = "26_1271336390.22432" 
+    .const 'Sub' $P294 = "26_1271948660.90108" 
     capture_lex $P294
     $P294($P292)
   loop299_next:
@@ -7636,7 +7636,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block293"  :anon :subid("26_1271336390.22432") :outer("25_1271336390.22432")
+.sub "_block293"  :anon :subid("26_1271948660.90108") :outer("25_1271948660.90108")
     .param pmc param_295
 .annotate "line", 553
     .lex "$_", param_295
@@ -7656,11 +7656,11 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block219"  :anon :subid("22_1271336390.22432") :outer("14_1271336390.22432")
+.sub "_block219"  :anon :subid("22_1271948660.90108") :outer("14_1271948660.90108")
 .annotate "line", 534
-    .const 'Sub' $P260 = "24_1271336390.22432" 
+    .const 'Sub' $P260 = "24_1271948660.90108" 
     capture_lex $P260
-    .const 'Sub' $P232 = "23_1271336390.22432" 
+    .const 'Sub' $P232 = "23_1271948660.90108" 
     capture_lex $P232
 .annotate "line", 535
     new $P221, "Undef"
@@ -7695,7 +7695,7 @@
     unless $P227, loop248_done
     shift $P230, $P227
   loop248_redo:
-    .const 'Sub' $P232 = "23_1271336390.22432" 
+    .const 'Sub' $P232 = "23_1271948660.90108" 
     capture_lex $P232
     $P232($P230)
   loop248_next:
@@ -7734,7 +7734,7 @@
     unless $P255, loop273_done
     shift $P258, $P255
   loop273_redo:
-    .const 'Sub' $P260 = "24_1271336390.22432" 
+    .const 'Sub' $P260 = "24_1271948660.90108" 
     capture_lex $P260
     $P260($P258)
   loop273_next:
@@ -7764,7 +7764,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block231"  :anon :subid("23_1271336390.22432") :outer("22_1271336390.22432")
+.sub "_block231"  :anon :subid("23_1271948660.90108") :outer("22_1271948660.90108")
     .param pmc param_233
 .annotate "line", 541
     .lex "$_", param_233
@@ -7804,7 +7804,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block259"  :anon :subid("24_1271336390.22432") :outer("22_1271336390.22432")
+.sub "_block259"  :anon :subid("24_1271948660.90108") :outer("22_1271948660.90108")
     .param pmc param_261
 .annotate "line", 546
     .lex "$_", param_261
@@ -7844,9 +7844,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block177"  :anon :subid("20_1271336390.22432") :outer("14_1271336390.22432")
+.sub "_block177"  :anon :subid("20_1271948660.90108") :outer("14_1271948660.90108")
 .annotate "line", 521
-    .const 'Sub' $P196 = "21_1271336390.22432" 
+    .const 'Sub' $P196 = "21_1271948660.90108" 
     capture_lex $P196
 .annotate "line", 522
     new $P179, "Undef"
@@ -7889,7 +7889,7 @@
     unless $P191, loop212_done
     shift $P194, $P191
   loop212_redo:
-    .const 'Sub' $P196 = "21_1271336390.22432" 
+    .const 'Sub' $P196 = "21_1271948660.90108" 
     capture_lex $P196
     $P196($P194)
   loop212_next:
@@ -7909,7 +7909,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block195"  :anon :subid("21_1271336390.22432") :outer("20_1271336390.22432")
+.sub "_block195"  :anon :subid("21_1271948660.90108") :outer("20_1271948660.90108")
     .param pmc param_197
 .annotate "line", 529
     .lex "$_", param_197
@@ -7949,10 +7949,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block135"  :anon :subid("18_1271336390.22432") :outer("14_1271336390.22432")
+.sub "_block135"  :anon :subid("18_1271948660.90108") :outer("14_1271948660.90108")
     .param pmc param_138
 .annotate "line", 513
-    .const 'Sub' $P147 = "19_1271336390.22432" 
+    .const 'Sub' $P147 = "19_1271948660.90108" 
     capture_lex $P147
 .annotate "line", 514
     $P137 = root_new ['parrot';'Hash']
@@ -7975,7 +7975,7 @@
     unless $P142, loop160_done
     shift $P145, $P142
   loop160_redo:
-    .const 'Sub' $P147 = "19_1271336390.22432" 
+    .const 'Sub' $P147 = "19_1271948660.90108" 
     capture_lex $P147
     $P147($P145)
   loop160_next:
@@ -8005,7 +8005,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block146"  :anon :subid("19_1271336390.22432") :outer("18_1271336390.22432")
+.sub "_block146"  :anon :subid("19_1271948660.90108") :outer("18_1271948660.90108")
     .param pmc param_148
 .annotate "line", 515
     .lex "$_", param_148
@@ -8045,9 +8045,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block68"  :anon :subid("15_1271336390.22432") :outer("14_1271336390.22432")
+.sub "_block68"  :anon :subid("15_1271948660.90108") :outer("14_1271948660.90108")
 .annotate "line", 499
-    .const 'Sub' $P78 = "16_1271336390.22432" 
+    .const 'Sub' $P78 = "16_1271948660.90108" 
     capture_lex $P78
 .annotate "line", 500
     new $P70, "Undef"
@@ -8068,7 +8068,7 @@
     unless $P72, loop122_done
     shift $P76, $P72
   loop122_redo:
-    .const 'Sub' $P78 = "16_1271336390.22432" 
+    .const 'Sub' $P78 = "16_1271948660.90108" 
     capture_lex $P78
     $P78($P76)
   loop122_next:
@@ -8091,10 +8091,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block77"  :anon :subid("16_1271336390.22432") :outer("15_1271336390.22432")
+.sub "_block77"  :anon :subid("16_1271948660.90108") :outer("15_1271948660.90108")
     .param pmc param_80
 .annotate "line", 501
-    .const 'Sub' $P89 = "17_1271336390.22432" 
+    .const 'Sub' $P89 = "17_1271948660.90108" 
     capture_lex $P89
 .annotate "line", 502
     $P79 = root_new ['parrot';'Hash']
@@ -8117,7 +8117,7 @@
     unless $P84, loop109_done
     shift $P87, $P84
   loop109_redo:
-    .const 'Sub' $P89 = "17_1271336390.22432" 
+    .const 'Sub' $P89 = "17_1271948660.90108" 
     capture_lex $P89
     $P89($P87)
   loop109_next:
@@ -8166,7 +8166,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block88"  :anon :subid("17_1271336390.22432") :outer("16_1271336390.22432")
+.sub "_block88"  :anon :subid("17_1271948660.90108") :outer("16_1271948660.90108")
     .param pmc param_90
 .annotate "line", 503
     .lex "$_", param_90
@@ -8225,7 +8225,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backmod"  :subid("27_1271336390.22432") :outer("11_1271336390.22432")
+.sub "backmod"  :subid("27_1271948660.90108") :outer("11_1271948660.90108")
     .param pmc param_311
     .param pmc param_312
 .annotate "line", 562
@@ -8299,7 +8299,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "subrule_alias"  :subid("28_1271336390.22432") :outer("11_1271336390.22432")
+.sub "subrule_alias"  :subid("28_1271948660.90108") :outer("11_1271948660.90108")
     .param pmc param_343
     .param pmc param_344
 .annotate "line", 569
@@ -8343,7 +8343,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "arg"  :subid("29_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "arg"  :subid("29_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_365
 .annotate "line", 14
     new $P364, 'ExceptionHandler'
@@ -8399,10 +8399,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "arglist"  :subid("30_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "arglist"  :subid("30_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_382
 .annotate "line", 18
-    .const 'Sub' $P392 = "31_1271336390.22432" 
+    .const 'Sub' $P392 = "31_1271948660.90108" 
     capture_lex $P392
     new $P381, 'ExceptionHandler'
     set_addr $P381, control_380
@@ -8436,7 +8436,7 @@
     unless $P386, loop398_done
     shift $P390, $P386
   loop398_redo:
-    .const 'Sub' $P392 = "31_1271336390.22432" 
+    .const 'Sub' $P392 = "31_1271948660.90108" 
     capture_lex $P392
     $P392($P390)
   loop398_next:
@@ -8465,7 +8465,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block391"  :anon :subid("31_1271336390.22432") :outer("30_1271336390.22432")
+.sub "_block391"  :anon :subid("31_1271948660.90108") :outer("30_1271948660.90108")
     .param pmc param_393
 .annotate "line", 20
     .lex "$_", param_393
@@ -8478,7 +8478,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "TOP"  :subid("32_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "TOP"  :subid("32_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_408
 .annotate "line", 24
     new $P407, 'ExceptionHandler'
@@ -8520,14 +8520,14 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "nibbler"  :subid("33_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "nibbler"  :subid("33_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_423
     .param pmc param_424 :optional
     .param int has_param_424 :opt_flag
 .annotate "line", 30
-    .const 'Sub' $P458 = "35_1271336390.22432" 
+    .const 'Sub' $P458 = "35_1271948660.90108" 
     capture_lex $P458
-    .const 'Sub' $P432 = "34_1271336390.22432" 
+    .const 'Sub' $P432 = "34_1271948660.90108" 
     capture_lex $P432
     new $P422, 'ExceptionHandler'
     set_addr $P422, control_421
@@ -8548,7 +8548,7 @@
     set $S429, $P428
     iseq $I430, $S429, "open"
     unless $I430, if_427_end
-    .const 'Sub' $P432 = "34_1271336390.22432" 
+    .const 'Sub' $P432 = "34_1271948660.90108" 
     capture_lex $P432
     $P432()
   if_427_end:
@@ -8611,7 +8611,7 @@
     unless $P452, loop464_done
     shift $P456, $P452
   loop464_redo:
-    .const 'Sub' $P458 = "35_1271336390.22432" 
+    .const 'Sub' $P458 = "35_1271948660.90108" 
     capture_lex $P458
     $P458($P456)
   loop464_next:
@@ -8641,7 +8641,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block431"  :anon :subid("34_1271336390.22432") :outer("33_1271336390.22432")
+.sub "_block431"  :anon :subid("34_1271948660.90108") :outer("33_1271948660.90108")
 .annotate "line", 32
     $P433 = root_new ['parrot';'Hash']
     .lex "%old", $P433
@@ -8681,7 +8681,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block457"  :anon :subid("35_1271336390.22432") :outer("33_1271336390.22432")
+.sub "_block457"  :anon :subid("35_1271948660.90108") :outer("33_1271948660.90108")
     .param pmc param_459
 .annotate "line", 45
     .lex "$_", param_459
@@ -8696,10 +8696,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "termish"  :subid("36_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "termish"  :subid("36_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_478
 .annotate "line", 55
-    .const 'Sub' $P491 = "37_1271336390.22432" 
+    .const 'Sub' $P491 = "37_1271948660.90108" 
     capture_lex $P491
     new $P477, 'ExceptionHandler'
     set_addr $P477, control_476
@@ -8742,7 +8742,7 @@
     unless $P485, loop536_done
     shift $P489, $P485
   loop536_redo:
-    .const 'Sub' $P491 = "37_1271336390.22432" 
+    .const 'Sub' $P491 = "37_1271948660.90108" 
     capture_lex $P491
     $P491($P489)
   loop536_next:
@@ -8771,7 +8771,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block490"  :anon :subid("37_1271336390.22432") :outer("36_1271336390.22432")
+.sub "_block490"  :anon :subid("37_1271948660.90108") :outer("36_1271948660.90108")
     .param pmc param_493
 .annotate "line", 59
     new $P492, "Undef"
@@ -8898,10 +8898,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantified_atom"  :subid("38_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "quantified_atom"  :subid("38_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_546
 .annotate "line", 76
-    .const 'Sub' $P555 = "39_1271336390.22432" 
+    .const 'Sub' $P555 = "39_1271948660.90108" 
     capture_lex $P555
     new $P545, 'ExceptionHandler'
     set_addr $P545, control_544
@@ -8964,7 +8964,7 @@
     goto if_551_end
   if_551:
 .annotate "line", 78
-    .const 'Sub' $P555 = "39_1271336390.22432" 
+    .const 'Sub' $P555 = "39_1271948660.90108" 
     capture_lex $P555
     $P555()
   if_551_end:
@@ -9018,7 +9018,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block554"  :anon :subid("39_1271336390.22432") :outer("38_1271336390.22432")
+.sub "_block554"  :anon :subid("39_1271948660.90108") :outer("38_1271948660.90108")
 .annotate "line", 80
     new $P556, "Undef"
     .lex "$qast", $P556
@@ -9057,7 +9057,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "atom"  :subid("40_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "atom"  :subid("40_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_596
 .annotate "line", 91
     new $P595, 'ExceptionHandler'
@@ -9135,7 +9135,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<*>"  :subid("41_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "quantifier:sym<*>"  :subid("41_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_622
 .annotate "line", 101
     new $P621, 'ExceptionHandler'
@@ -9175,7 +9175,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<+>"  :subid("42_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "quantifier:sym<+>"  :subid("42_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_637
 .annotate "line", 106
     new $P636, 'ExceptionHandler'
@@ -9215,7 +9215,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<?>"  :subid("43_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "quantifier:sym<?>"  :subid("43_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_652
 .annotate "line", 111
     new $P651, 'ExceptionHandler'
@@ -9259,7 +9259,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<**>"  :subid("44_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "quantifier:sym<**>"  :subid("44_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_669
 .annotate "line", 117
     new $P668, 'ExceptionHandler'
@@ -9399,7 +9399,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<ws>"  :subid("45_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<ws>"  :subid("45_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_716
 .annotate "line", 131
     new $P715, 'ExceptionHandler'
@@ -9451,7 +9451,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<[ ]>"  :subid("46_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<[ ]>"  :subid("46_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_734
 .annotate "line", 140
     new $P733, 'ExceptionHandler'
@@ -9483,7 +9483,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<( )>"  :subid("47_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<( )>"  :subid("47_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_744
 .annotate "line", 144
     new $P743, 'ExceptionHandler'
@@ -9531,7 +9531,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<'>"  :subid("48_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<'>"  :subid("48_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_762
 .annotate "line", 151
     new $P761, 'ExceptionHandler'
@@ -9587,7 +9587,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<\">"  :subid("49_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<\">"  :subid("49_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_785
 .annotate "line", 158
     new $P784, 'ExceptionHandler'
@@ -9643,7 +9643,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<.>"  :subid("50_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<.>"  :subid("50_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_808
 .annotate "line", 165
     new $P807, 'ExceptionHandler'
@@ -9674,7 +9674,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^>"  :subid("51_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<^>"  :subid("51_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_820
 .annotate "line", 170
     new $P819, 'ExceptionHandler'
@@ -9705,7 +9705,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^^>"  :subid("52_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<^^>"  :subid("52_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_832
 .annotate "line", 175
     new $P831, 'ExceptionHandler'
@@ -9736,7 +9736,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$>"  :subid("53_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<$>"  :subid("53_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_844
 .annotate "line", 180
     new $P843, 'ExceptionHandler'
@@ -9767,7 +9767,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$$>"  :subid("54_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<$$>"  :subid("54_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_856
 .annotate "line", 185
     new $P855, 'ExceptionHandler'
@@ -9798,7 +9798,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<:::>"  :subid("55_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<:::>"  :subid("55_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_868
 .annotate "line", 190
     new $P867, 'ExceptionHandler'
@@ -9829,7 +9829,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<lwb>"  :subid("56_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<lwb>"  :subid("56_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_880
 .annotate "line", 195
     new $P879, 'ExceptionHandler'
@@ -9860,7 +9860,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<rwb>"  :subid("57_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<rwb>"  :subid("57_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_892
 .annotate "line", 200
     new $P891, 'ExceptionHandler'
@@ -9891,7 +9891,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<bs>"  :subid("58_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<bs>"  :subid("58_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_904
 .annotate "line", 205
     new $P903, 'ExceptionHandler'
@@ -9923,7 +9923,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<mod>"  :subid("59_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<mod>"  :subid("59_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_914
 .annotate "line", 209
     new $P913, 'ExceptionHandler'
@@ -9955,7 +9955,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<assert>"  :subid("60_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<assert>"  :subid("60_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_924
 .annotate "line", 213
     new $P923, 'ExceptionHandler'
@@ -9987,7 +9987,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<~>"  :subid("61_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<~>"  :subid("61_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_934
 .annotate "line", 217
     new $P933, 'ExceptionHandler'
@@ -10049,7 +10049,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<{*}>"  :subid("62_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<{*}>"  :subid("62_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_956
 .annotate "line", 230
     new $P955, 'ExceptionHandler'
@@ -10110,7 +10110,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<var>"  :subid("63_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<var>"  :subid("63_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_977
 .annotate "line", 237
     new $P976, 'ExceptionHandler'
@@ -10270,7 +10270,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<PIR>"  :subid("64_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "metachar:sym<PIR>"  :subid("64_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1033
 .annotate "line", 257
     new $P1032, 'ExceptionHandler'
@@ -10309,7 +10309,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<w>"  :subid("65_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "backslash:sym<w>"  :subid("65_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1048
 .annotate "line", 265
     new $P1047, 'ExceptionHandler'
@@ -10375,7 +10375,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<b>"  :subid("66_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "backslash:sym<b>"  :subid("66_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1072
 .annotate "line", 271
     new $P1071, 'ExceptionHandler'
@@ -10418,7 +10418,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<e>"  :subid("67_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "backslash:sym<e>"  :subid("67_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1088
 .annotate "line", 277
     new $P1087, 'ExceptionHandler'
@@ -10461,7 +10461,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<f>"  :subid("68_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "backslash:sym<f>"  :subid("68_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1104
 .annotate "line", 283
     new $P1103, 'ExceptionHandler'
@@ -10504,7 +10504,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<h>"  :subid("69_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "backslash:sym<h>"  :subid("69_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1120
 .annotate "line", 289
     new $P1119, 'ExceptionHandler'
@@ -10547,7 +10547,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<r>"  :subid("70_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "backslash:sym<r>"  :subid("70_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1136
 .annotate "line", 295
     new $P1135, 'ExceptionHandler'
@@ -10590,7 +10590,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<t>"  :subid("71_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "backslash:sym<t>"  :subid("71_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1152
 .annotate "line", 301
     new $P1151, 'ExceptionHandler'
@@ -10633,7 +10633,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<v>"  :subid("72_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "backslash:sym<v>"  :subid("72_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1168
 .annotate "line", 307
     new $P1167, 'ExceptionHandler'
@@ -10676,7 +10676,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<o>"  :subid("73_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "backslash:sym<o>"  :subid("73_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1184
 .annotate "line", 314
     new $P1183, 'ExceptionHandler'
@@ -10759,7 +10759,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<x>"  :subid("74_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "backslash:sym<x>"  :subid("74_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1215
 .annotate "line", 323
     new $P1214, 'ExceptionHandler'
@@ -10842,7 +10842,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<c>"  :subid("75_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "backslash:sym<c>"  :subid("75_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1246
 .annotate "line", 332
     new $P1245, 'ExceptionHandler'
@@ -10877,7 +10877,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<misc>"  :subid("76_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "backslash:sym<misc>"  :subid("76_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1259
 .annotate "line", 336
     new $P1258, 'ExceptionHandler'
@@ -10910,7 +10910,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<?>"  :subid("77_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "assertion:sym<?>"  :subid("77_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1273
 .annotate "line", 342
     new $P1272, 'ExceptionHandler'
@@ -10970,7 +10970,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<!>"  :subid("78_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "assertion:sym<!>"  :subid("78_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1291
 .annotate "line", 352
     new $P1290, 'ExceptionHandler'
@@ -11038,7 +11038,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<method>"  :subid("79_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "assertion:sym<method>"  :subid("79_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1315
 .annotate "line", 365
     new $P1314, 'ExceptionHandler'
@@ -11081,12 +11081,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<name>"  :subid("80_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "assertion:sym<name>"  :subid("80_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1329
 .annotate "line", 372
-    .const 'Sub' $P1387 = "82_1271336390.22432" 
+    .const 'Sub' $P1387 = "82_1271948660.90108" 
     capture_lex $P1387
-    .const 'Sub' $P1351 = "81_1271336390.22432" 
+    .const 'Sub' $P1351 = "81_1271948660.90108" 
     capture_lex $P1351
     new $P1328, 'ExceptionHandler'
     set_addr $P1328, control_1327
@@ -11182,7 +11182,7 @@
     unless $P1378, loop1392_done
     shift $P1385, $P1378
   loop1392_redo:
-    .const 'Sub' $P1387 = "82_1271336390.22432" 
+    .const 'Sub' $P1387 = "82_1271948660.90108" 
     capture_lex $P1387
     $P1387($P1385)
   loop1392_next:
@@ -11222,7 +11222,7 @@
     goto if_1346_end
   if_1346:
 .annotate "line", 379
-    .const 'Sub' $P1351 = "81_1271336390.22432" 
+    .const 'Sub' $P1351 = "81_1271948660.90108" 
     capture_lex $P1351
     $P1351()
   if_1346_end:
@@ -11263,7 +11263,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1386"  :anon :subid("82_1271336390.22432") :outer("80_1271336390.22432")
+.sub "_block1386"  :anon :subid("82_1271948660.90108") :outer("80_1271948660.90108")
     .param pmc param_1388
 .annotate "line", 401
     .lex "$_", param_1388
@@ -11275,7 +11275,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1350"  :anon :subid("81_1271336390.22432") :outer("80_1271336390.22432")
+.sub "_block1350"  :anon :subid("81_1271948660.90108") :outer("80_1271948660.90108")
 .annotate "line", 380
     new $P1352, "Undef"
     .lex "$regexsym", $P1352
@@ -11306,10 +11306,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<[>"  :subid("83_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "assertion:sym<[>"  :subid("83_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1402
 .annotate "line", 407
-    .const 'Sub' $P1437 = "84_1271336390.22432" 
+    .const 'Sub' $P1437 = "84_1271948660.90108" 
     capture_lex $P1437
     new $P1401, 'ExceptionHandler'
     set_addr $P1401, control_1400
@@ -11401,7 +11401,7 @@
     islt $I1435, $N1432, $N1434
     unless $I1435, loop1460_done
   loop1460_redo:
-    .const 'Sub' $P1437 = "84_1271336390.22432" 
+    .const 'Sub' $P1437 = "84_1271948660.90108" 
     capture_lex $P1437
     $P1437()
   loop1460_next:
@@ -11429,7 +11429,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1436"  :anon :subid("84_1271336390.22432") :outer("83_1271336390.22432")
+.sub "_block1436"  :anon :subid("84_1271948660.90108") :outer("83_1271948660.90108")
 .annotate "line", 421
     new $P1438, "Undef"
     .lex "$ast", $P1438
@@ -11480,12 +11480,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "cclass_elem"  :subid("85_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "cclass_elem"  :subid("85_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1470
 .annotate "line", 434
-    .const 'Sub' $P1495 = "87_1271336390.22432" 
+    .const 'Sub' $P1495 = "87_1271948660.90108" 
     capture_lex $P1495
-    .const 'Sub' $P1479 = "86_1271336390.22432" 
+    .const 'Sub' $P1479 = "86_1271948660.90108" 
     capture_lex $P1479
     new $P1469, 'ExceptionHandler'
     set_addr $P1469, control_1468
@@ -11534,7 +11534,7 @@
     unless $P1489, loop1520_done
     shift $P1493, $P1489
   loop1520_redo:
-    .const 'Sub' $P1495 = "87_1271336390.22432" 
+    .const 'Sub' $P1495 = "87_1271948660.90108" 
     capture_lex $P1495
     $P1495($P1493)
   loop1520_next:
@@ -11558,7 +11558,7 @@
     goto if_1475_end
   if_1475:
 .annotate "line", 437
-    .const 'Sub' $P1479 = "86_1271336390.22432" 
+    .const 'Sub' $P1479 = "86_1271948660.90108" 
     capture_lex $P1479
     $P1479()
   if_1475_end:
@@ -11590,10 +11590,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1494"  :anon :subid("87_1271336390.22432") :outer("85_1271336390.22432")
+.sub "_block1494"  :anon :subid("87_1271948660.90108") :outer("85_1271948660.90108")
     .param pmc param_1496
 .annotate "line", 441
-    .const 'Sub' $P1502 = "88_1271336390.22432" 
+    .const 'Sub' $P1502 = "88_1271948660.90108" 
     capture_lex $P1502
     .lex "$_", param_1496
 .annotate "line", 442
@@ -11622,7 +11622,7 @@
 .annotate "line", 442
     goto if_1498_end
   if_1498:
-    .const 'Sub' $P1502 = "88_1271336390.22432" 
+    .const 'Sub' $P1502 = "88_1271948660.90108" 
     capture_lex $P1502
     $P1515 = $P1502()
     set $P1497, $P1515
@@ -11633,7 +11633,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1501"  :anon :subid("88_1271336390.22432") :outer("87_1271336390.22432")
+.sub "_block1501"  :anon :subid("88_1271948660.90108") :outer("87_1271948660.90108")
 .annotate "line", 443
     new $P1503, "Undef"
     .lex "$a", $P1503
@@ -11697,7 +11697,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1478"  :anon :subid("86_1271336390.22432") :outer("85_1271336390.22432")
+.sub "_block1478"  :anon :subid("86_1271948660.90108") :outer("85_1271948660.90108")
 .annotate "line", 438
     new $P1480, "Undef"
     .lex "$name", $P1480
@@ -11725,7 +11725,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "mod_internal"  :subid("89_1271336390.22432") :method :outer("11_1271336390.22432")
+.sub "mod_internal"  :subid("89_1271948660.90108") :method :outer("11_1271948660.90108")
     .param pmc param_1539
 .annotate "line", 472
     new $P1538, 'ExceptionHandler'

Modified: branches/runcore_purge/ext/nqp-rx/src/stage0/Regex-s0.pir
==============================================================================
--- branches/runcore_purge/ext/nqp-rx/src/stage0/Regex-s0.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/ext/nqp-rx/src/stage0/Regex-s0.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -295,7 +295,7 @@
     parrotclass = getattribute $P0, 'parrotclass'
     cur = new parrotclass
 
-    .local pmc from, pos, target, debug
+    .local pmc from, target, debug
 
     from = getattribute self, '$!pos'
     setattribute cur, '$!from', from

Modified: branches/runcore_purge/include/parrot/charset.h
==============================================================================
--- branches/runcore_purge/include/parrot/charset.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/include/parrot/charset.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -34,19 +34,17 @@
 #define PARROT_UNICODE_CHARSET Parrot_unicode_charset_ptr
 
 typedef STRING *(*charset_get_graphemes_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset, UINTVAL count);
-typedef STRING *(*charset_get_graphemes_inplace_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset, UINTVAL count, STRING *dest_string);
-typedef void (*charset_set_graphemes_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset, UINTVAL replace_count, STRING *insert_string);
 
-typedef STRING * (*charset_to_charset_t)(PARROT_INTERP, STRING *source_string, STRING *dest);
-typedef STRING * (*charset_from_unicode_t)(PARROT_INTERP, STRING *source_string, STRING *dest);
+typedef STRING * (*charset_to_charset_t)(PARROT_INTERP, STRING *source_string);
+typedef STRING * (*charset_from_unicode_t)(PARROT_INTERP, STRING *source_string);
 typedef STRING* (*charset_compose_t)(PARROT_INTERP, STRING *source_string);
 typedef STRING* (*charset_decompose_t)(PARROT_INTERP, STRING *source_string);
-typedef void (*charset_upcase_t)(PARROT_INTERP, STRING *source_string);
-typedef void (*charset_downcase_t)(PARROT_INTERP, STRING *source_string);
-typedef void (*charset_titlecase_t)(PARROT_INTERP, STRING *source_string);
-typedef void (*charset_upcase_first_t)(PARROT_INTERP, STRING *source_string);
-typedef void (*charset_downcase_first_t)(PARROT_INTERP, STRING *source_string);
-typedef void (*charset_titlecase_first_t)(PARROT_INTERP, STRING *source_string);
+typedef STRING* (*charset_upcase_t)(PARROT_INTERP, const STRING *source_string);
+typedef STRING* (*charset_downcase_t)(PARROT_INTERP, const STRING *source_string);
+typedef STRING* (*charset_titlecase_t)(PARROT_INTERP, const STRING *source_string);
+typedef STRING* (*charset_upcase_first_t)(PARROT_INTERP, const STRING *source_string);
+typedef STRING* (*charset_downcase_first_t)(PARROT_INTERP, const STRING *source_string);
+typedef STRING* (*charset_titlecase_first_t)(PARROT_INTERP, const STRING *source_string);
 typedef INTVAL (*charset_compare_t)(PARROT_INTERP, const STRING *lhs, const STRING *rhs);
 typedef INTVAL (*charset_index_t)(PARROT_INTERP, STRING *source_string, STRING *search_string, UINTVAL offset);
 typedef INTVAL (*charset_rindex_t)(PARROT_INTERP, STRING *source_string, STRING *search_string, UINTVAL offset);
@@ -73,7 +71,7 @@
 typedef STRING *(*charset_string_from_codepoint_t)(PARROT_INTERP, UINTVAL codepoint);
 typedef size_t (*charset_compute_hash_t)(PARROT_INTERP, const STRING *, size_t seed);
 
-typedef STRING* (*charset_converter_t)(PARROT_INTERP, STRING *src, STRING *dst);
+typedef STRING* (*charset_converter_t)(PARROT_INTERP, STRING *src);
 
 /* HEADERIZER BEGIN: src/string/charset.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
@@ -86,7 +84,7 @@
 PARROT_EXPORT
 PARROT_CAN_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
-STRING* Parrot_charset_name(SHIM_INTERP, INTVAL number_of_charset);
+STRING * Parrot_charset_name(SHIM_INTERP, INTVAL number_of_charset);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -137,18 +135,19 @@
 PARROT_EXPORT
 PARROT_CAN_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
-CHARSET * Parrot_load_charset(PARROT_INTERP, ARGIN(const char *charsetname))
+const CHARSET * Parrot_load_charset(PARROT_INTERP,
+    ARGIN(const char *charsetname))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
 INTVAL Parrot_make_default_charset(SHIM_INTERP,
     SHIM(const char *charsetname),
-    ARGIN(CHARSET *charset))
+    ARGIN(const CHARSET *charset))
         __attribute__nonnull__(3);
 
 PARROT_EXPORT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
 PARROT_MALLOC
 CHARSET * Parrot_new_charset(PARROT_INTERP)
         __attribute__nonnull__(1);
@@ -164,7 +163,7 @@
 PARROT_EXPORT
 void Parrot_register_charset_converter(PARROT_INTERP,
     ARGIN(const CHARSET *lhs),
-    ARGIN(CHARSET *rhs),
+    ARGIN(const CHARSET *rhs),
     ARGIN(charset_converter_t func))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
@@ -214,8 +213,6 @@
 struct _charset {
     const char *name;
     charset_get_graphemes_t get_graphemes;
-    charset_get_graphemes_inplace_t get_graphemes_inplace;
-    charset_set_graphemes_t set_graphemes;
     charset_to_charset_t to_charset;
     charset_compose_t compose;
     charset_decompose_t decompose;
@@ -238,8 +235,6 @@
 };
 
 #define CHARSET_GET_GRAPEMES(interp, source, offset, count) ((source)->charset)->get_graphemes((interp), (source), (offset), (count))
-#define CHARSET_GET_GRAPHEMES_INPLACE(interp, source, dest, offset, count) ((source)->charset)->get_graphemes((interp), (source), (dest), (offset), (count))
-#define CHARSET_SET_GRAPHEMES(interp, source, offset, replace_count, insert) ((source)->charset)->set_graphemes((interp), (source), (offset), (replace_count), (insert))
 #define CHARSET_TO_UNICODE(interp, source, dest) ((source)->charset)->to_unicode((interp), (source), (dest))
 #define CHARSET_COMPOSE(interp, source) ((source)->charset)->compose((interp), (source))
 #define CHARSET_DECOMPOSE(interp, source) ((source)->charset)->decompose((interp), (source))
@@ -262,16 +257,10 @@
 #define CHARSET_TO_ENCODING(interp, source) ((source)->encoding)->to_encoding((interp), (source))
 #define CHARSET_COPY_TO_ENCODING(interp, source) ((source)->encoding)->copy_to_encoding((interp), (source))
 #define CHARSET_GET_CODEPOINT(interp, source, offset) ((source)->encoding)->get_codepoint((interp), (source), (offset))
-#define CHARSET_SET_CODEPOINT(interp, source, offset, codepoint) ((source)->encoding)->set_codepoint((interp), (source), (offset), (codepoint))
 #define CHARSET_GET_BYTE(interp, source, offset) ((source)->encoding)->get_byte((interp), (source), (offset))
 #define CHARSET_SET_BYTE(interp, source, offset, value) ((source)->encoding)->set_byte((interp), (source), (offset), (value))
 #define CHARSET_GET_CODEPOINTS(interp, source, offset, count) ((source)->encoding)->get_codepoints((interp), (source), (offset), (count))
-#define CHARSET_GET_CODEPOINTS_INPLACE(interp, source, dest, offset, count) ((source)->encoding)->get_codepoints_inplace((interp), (source), (dest), (offset), (count))
 #define CHARSET_GET_BYTES(interp, source, offset, count) ((source)->encoding)->get_bytes((interp), (source), (offset), (count))
-#define CHARSET_GET_BYTES_INPLACE(interp, source, offset, count, dest) ((source)->encoding)->get_bytes((interp), (source), (offset), (count), (dest))
-#define CHARSET_SET_CODEPOINTS(interp, source, offset, count, newdata) ((source)->encoding)->set_codepoints((interp), (source), (offset), (count), (newdata))
-#define CHARSET_SET_BYTES(interp, source, offset, count, newdata) ((source)->encoding)->set_bytes((interp), (source), (offset), (count), (newdata))
-#define CHARSET_BECOME_ENCODING(interp, source) ((source)->encoding)->become_encoding((interp), (source))
 #define CHARSET_CODEPOINTS(interp, source) ((source)->encoding)->codepoints((interp), (source))
 #define CHARSET_BYTES(interp, source) ((source)->encoding)->bytes((interp), (source))
 

Modified: branches/runcore_purge/include/parrot/encoding.h
==============================================================================
--- branches/runcore_purge/include/parrot/encoding.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/include/parrot/encoding.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -15,20 +15,14 @@
 
 #include "parrot/parrot.h"
 
-typedef STRING * (*encoding_to_encoding_t)(PARROT_INTERP, NOTNULL(STRING *src), NULLOK(STRING *dest));
+typedef STRING * (*encoding_to_encoding_t)(PARROT_INTERP, NOTNULL(const STRING *src));
 typedef UINTVAL (*encoding_get_codepoint_t)(PARROT_INTERP, const STRING *src, UINTVAL offset);
-typedef void (*encoding_set_codepoint_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL codepoint);
 typedef UINTVAL (*encoding_get_byte_t)(PARROT_INTERP, const STRING *src, UINTVAL offset);
 typedef void (*encoding_set_byte_t)(PARROT_INTERP, const STRING *src, UINTVAL offset, UINTVAL count);
 typedef STRING *(*encoding_get_codepoints_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL count);
 typedef STRING *(*encoding_get_bytes_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL count);
-typedef STRING *(*encoding_get_codepoints_inplace_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL count, STRING *dest_string);
-typedef STRING *(*encoding_get_bytes_inplace_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL count, STRING *dest_string);
-typedef void (*encoding_set_codepoints_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL count, STRING *new_bytes);
-typedef void (*encoding_set_bytes_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL count, STRING *new_bytes);
-typedef void (*encoding_become_encoding_t)(PARROT_INTERP, STRING *src);
-typedef UINTVAL (*encoding_codepoints_t)(PARROT_INTERP, STRING *src);
-typedef UINTVAL (*encoding_bytes_t)(PARROT_INTERP, STRING *src);
+typedef UINTVAL (*encoding_codepoints_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef UINTVAL (*encoding_bytes_t)(PARROT_INTERP, ARGIN(const STRING *src));
 typedef UINTVAL (*encoding_find_cclass_t)(PARROT_INTERP, STRING *s, const INTVAL *typetable, INTVAL flags, UINTVAL offset, UINTVAL count);
 typedef size_t (*encoding_hash_t)(PARROT_INTERP, const STRING *s, size_t hashval);
 
@@ -44,16 +38,10 @@
     UINTVAL max_bytes_per_codepoint;
     encoding_to_encoding_t              to_encoding;
     encoding_get_codepoint_t            get_codepoint;
-    encoding_set_codepoint_t            set_codepoint;
     encoding_get_byte_t                 get_byte;
     encoding_set_byte_t                 set_byte;
     encoding_get_codepoints_t           get_codepoints;
-    encoding_get_codepoints_inplace_t   get_codepoints_inplace;
     encoding_get_bytes_t                get_bytes;
-    encoding_get_bytes_inplace_t        get_bytes_inplace;
-    encoding_set_codepoints_t           set_codepoints;
-    encoding_set_bytes_t                set_bytes;
-    encoding_become_encoding_t          become_encoding;
     encoding_codepoints_t               codepoints;
     encoding_bytes_t                    bytes;
     encoding_iter_init_t                iter_init;
@@ -208,26 +196,14 @@
     ((src)->encoding)->max_bytes_per_codepoint
 #define ENCODING_GET_CODEPOINT(i, src, offset) \
     ((src)->encoding)->get_codepoint((i), (src), (offset))
-#define ENCODING_SET_CODEPOINT(i, src, offset, codepoint) \
-    ((src)->encoding)->set_codepoint((i), (src), (offset), (codepoint))
 #define ENCODING_GET_BYTE(i, src, offset) \
     ((src)->encoding)->get_byte((i), (src), (offset))
 #define ENCODING_SET_BYTE(i, src, offset, value) \
     ((src)->encoding)->set_byte((i), (src), (offset), (value))
 #define ENCODING_GET_CODEPOINTS(i, src, offset, count) \
     ((src)->encoding)->get_codepoints((i), (src), (offset), (count))
-#define ENCODING_GET_CODEPOINTS_INPLACE(i, src, offset, count, dest) \
-    ((src)->encoding)->get_codepoints_inplace((i), (src), (offset), (count), (dest))
 #define ENCODING_GET_BYTES(i, src, offset, count) \
     ((src)->encoding)->get_bytes((i), (src), (offset), (count))
-#define ENCODING_GET_BYTES_INPLACE(i, src, offset, count, dest) \
-    ((src)->encoding)->get_bytes_inplace((i), (src), (offset), (count), (dest))
-#define ENCODING_SET_CODEPOINTS(i, src, offset, count, newdata) \
-    ((src)->encoding)->set_codepoints((i), (src), (offset), (count), (newdata))
-#define ENCODING_SET_BYTES(i, src, offset, count, newdata) \
-    ((src)->encoding)->set_bytes((i), (src), (offset), (count), (newdata))
-#define ENCODING_BECOME_ENCODING(i, src) \
-    ((src)->encoding)->become_encoding((i), (src))
 #define ENCODING_CODEPOINTS(i, src) \
     ((src)->encoding)->codepoints((i), (src))
 #define ENCODING_BYTES(i, src) \

Modified: branches/runcore_purge/include/parrot/io.h
==============================================================================
--- branches/runcore_purge/include/parrot/io.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/include/parrot/io.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -453,14 +453,17 @@
         FUNC_MODIFIES(*filehandle)
         FUNC_MODIFIES(*buf);
 
+PARROT_WARN_UNUSED_RESULT
 size_t Parrot_io_read_buffer(PARROT_INTERP,
     ARGMOD(PMC *filehandle),
-    ARGIN(STRING **buf))
+    ARGMOD(STRING **buf))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
-        FUNC_MODIFIES(*filehandle);
+        FUNC_MODIFIES(*filehandle)
+        FUNC_MODIFIES(*buf);
 
+PARROT_WARN_UNUSED_RESULT
 size_t Parrot_io_readline_buffer(PARROT_INTERP,
     ARGMOD(PMC *filehandle),
     ARGOUT(STRING **buf))
@@ -646,7 +649,7 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 INTVAL Parrot_io_parse_open_flags(PARROT_INTERP,
-    ARGIN_NULLOK(STRING *mode_str))
+    ARGIN_NULLOK(const STRING *mode_str))
         __attribute__nonnull__(1);
 
 PARROT_EXPORT

Modified: branches/runcore_purge/include/parrot/packfile.h
==============================================================================
--- branches/runcore_purge/include/parrot/packfile.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/include/parrot/packfile.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -269,7 +269,7 @@
 typedef struct PackFile_Debug {
     PackFile_Segment        base;
     opcode_t                num_mappings;
-    PackFile_DebugFilenameMapping **mappings;
+    PackFile_DebugFilenameMapping *mappings;
     PackFile_ByteCode      *code;   /* where this segment belongs to */
 } PackFile_Debug;
 
@@ -581,7 +581,7 @@
 PARROT_CAN_RETURN_NULL
 PackFile_Segment * PackFile_find_segment(PARROT_INTERP,
     ARGIN_NULLOK(PackFile_Directory *dir),
-    ARGIN(STRING *name),
+    ARGIN(const STRING *name),
     int sub_dir)
         __attribute__nonnull__(1)
         __attribute__nonnull__(3);

Modified: branches/runcore_purge/include/parrot/string_funcs.h
==============================================================================
--- branches/runcore_purge/include/parrot/string_funcs.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/include/parrot/string_funcs.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -27,48 +27,31 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
 PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-STRING * Parrot_str_append(PARROT_INTERP,
-    ARGMOD_NULLOK(STRING *a),
-    ARGIN_NULLOK(STRING *b))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*a);
-
-PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 STRING * Parrot_str_bitwise_and(PARROT_INTERP,
     ARGIN_NULLOK(const STRING *s1),
-    ARGIN_NULLOK(const STRING *s2),
-    ARGOUT_NULLOK(STRING **dest))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*dest);
+    ARGIN_NULLOK(const STRING *s2))
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 STRING * Parrot_str_bitwise_not(PARROT_INTERP,
-    ARGIN_NULLOK(const STRING *s),
-    ARGOUT_NULLOK(STRING **dest))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*dest);
+    ARGIN_NULLOK(const STRING *s))
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 STRING * Parrot_str_bitwise_or(PARROT_INTERP,
     ARGIN_NULLOK(const STRING *s1),
-    ARGIN_NULLOK(const STRING *s2),
-    ARGOUT_NULLOK(STRING **dest))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*dest);
+    ARGIN_NULLOK(const STRING *s2))
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 STRING * Parrot_str_bitwise_xor(PARROT_INTERP,
     ARGIN_NULLOK(const STRING *s1),
-    ARGIN_NULLOK(const STRING *s2),
-    ARGOUT_NULLOK(STRING **dest))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*dest);
+    ARGIN_NULLOK(const STRING *s2))
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -84,21 +67,17 @@
 PARROT_CAN_RETURN_NULL
 STRING* Parrot_str_change_charset(PARROT_INTERP,
     ARGMOD_NULLOK(STRING *src),
-    INTVAL charset_nr,
-    ARGOUT_NULLOK(STRING *dest))
+    INTVAL charset_nr)
         __attribute__nonnull__(1)
-        FUNC_MODIFIES(*src)
-        FUNC_MODIFIES(*dest);
+        FUNC_MODIFIES(*src);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 STRING* Parrot_str_change_encoding(PARROT_INTERP,
     ARGIN_NULLOK(STRING *src),
-    INTVAL encoding_nr,
-    ARGOUT_NULLOK(STRING *dest))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*dest);
+    INTVAL encoding_nr)
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
@@ -108,12 +87,6 @@
         FUNC_MODIFIES(*s);
 
 PARROT_EXPORT
-void Parrot_str_chopn_inplace(PARROT_INTERP, ARGMOD(STRING *s), INTVAL n)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 INTVAL Parrot_str_compare(PARROT_INTERP,
     ARGIN_NULLOK(const STRING *s1),
@@ -130,8 +103,7 @@
 PARROT_CANNOT_RETURN_NULL
 STRING * Parrot_str_concat(PARROT_INTERP,
     ARGIN_NULLOK(STRING *a),
-    ARGIN_NULLOK(STRING *b),
-    UINTVAL Uflags)
+    ARGIN_NULLOK(STRING *b))
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
@@ -149,11 +121,6 @@
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
-void Parrot_str_downcase_inplace(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 INTVAL Parrot_str_equal(PARROT_INTERP,
     ARGIN_NULLOK(const STRING *s1),
@@ -264,10 +231,8 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-INTVAL Parrot_str_length(PARROT_INTERP, ARGMOD(STRING *s))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*s);
+INTVAL Parrot_str_length(SHIM_INTERP, ARGIN(const STRING *s))
+        __attribute__nonnull__(2);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -286,14 +251,6 @@
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-STRING * Parrot_str_new_COW(PARROT_INTERP, ARGMOD(STRING *s))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
@@ -332,8 +289,7 @@
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
-void Parrot_str_pin(PARROT_INTERP, ARGMOD(STRING *s))
-        __attribute__nonnull__(1)
+void Parrot_str_pin(SHIM_INTERP, ARGMOD(STRING *s))
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*s);
 
@@ -347,42 +303,15 @@
 
 PARROT_EXPORT
 PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
 STRING * Parrot_str_replace(PARROT_INTERP,
-    ARGIN(STRING *src),
+    ARGIN(const STRING *src),
     INTVAL offset,
     INTVAL length,
-    ARGIN(STRING *rep),
-    ARGOUT_NULLOK(STRING **d))
+    ARGIN(const STRING *rep))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*d);
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-STRING * Parrot_str_resize(PARROT_INTERP, ARGMOD(STRING *s), UINTVAL addlen)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-STRING * Parrot_str_reuse_COW(SHIM_INTERP,
-    ARGMOD(STRING *s),
-    ARGOUT(STRING *d))
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*s)
-        FUNC_MODIFIES(*d);
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-STRING * Parrot_str_set(PARROT_INTERP,
-    ARGIN_NULLOK(STRING *dest),
-    ARGMOD(STRING *src))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*src);
+        __attribute__nonnull__(5);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -398,11 +327,8 @@
 STRING * Parrot_str_substr(PARROT_INTERP,
     ARGIN_NULLOK(STRING *src),
     INTVAL offset,
-    INTVAL length,
-    ARGOUT_NULLOK(STRING **d),
-    int replace_dest)
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*d);
+    INTVAL length)
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
@@ -411,11 +337,6 @@
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
-void Parrot_str_titlecase_inplace(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 char * Parrot_str_to_cstring(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
@@ -460,29 +381,12 @@
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
-void Parrot_str_upcase_inplace(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
-void Parrot_str_write_COW(PARROT_INTERP, ARGMOD(STRING *s))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
 PARROT_PURE_FUNCTION
 PARROT_CANNOT_RETURN_NULL
 const char * Parrot_string_cstring(SHIM_INTERP, ARGIN(const STRING *str))
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_PURE_FUNCTION
-UINTVAL string_capacity(SHIM_INTERP, ARGIN(const STRING *s))
-        __attribute__nonnull__(2);
-
-PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 STRING * string_chr(PARROT_INTERP, UINTVAL character)
@@ -546,6 +450,12 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
+STRING* Parrot_str_clone(PARROT_INTERP, ARGIN(const STRING *s))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
 STRING * Parrot_str_from_int_base(PARROT_INTERP,
     ARGOUT(char *tc),
     HUGEINTVAL num,
@@ -565,8 +475,6 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*tc);
 
-#define ASSERT_ARGS_Parrot_str_append __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_bitwise_and __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_bitwise_not __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -585,9 +493,6 @@
 #define ASSERT_ARGS_Parrot_str_chopn __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(s))
-#define ASSERT_ARGS_Parrot_str_chopn_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_Parrot_str_compare __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_compose __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -599,8 +504,6 @@
     , PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_Parrot_str_downcase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_str_downcase_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_equal __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_escape __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -638,16 +541,12 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(ar))
 #define ASSERT_ARGS_Parrot_str_length __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(s))
+       PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_Parrot_str_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_new_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(buffer))
-#define ASSERT_ARGS_Parrot_str_new_COW __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_Parrot_str_new_from_buffer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(buffer))
@@ -660,8 +559,7 @@
 #define ASSERT_ARGS_Parrot_str_not_equal __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_pin __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(s))
+       PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_Parrot_str_repeat __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(s))
@@ -669,23 +567,12 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src) \
     , PARROT_ASSERT_ARG(rep))
-#define ASSERT_ARGS_Parrot_str_resize __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(s))
-#define ASSERT_ARGS_Parrot_str_reuse_COW __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(s) \
-    , PARROT_ASSERT_ARG(d))
-#define ASSERT_ARGS_Parrot_str_set __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_Parrot_str_split __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_substr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_titlecase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_str_titlecase_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_to_cstring __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_to_hashval __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -703,15 +590,8 @@
     , PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_Parrot_str_upcase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_str_upcase_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_str_write_COW __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_Parrot_string_cstring __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(str))
-#define ASSERT_ARGS_string_capacity __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_string_chr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_string_increment __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -730,6 +610,9 @@
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_string_to_cstring_nullable __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_Parrot_str_clone __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_Parrot_str_from_int_base __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(tc))

Modified: branches/runcore_purge/include/parrot/string_primitives.h
==============================================================================
--- branches/runcore_purge/include/parrot/string_primitives.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/include/parrot/string_primitives.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -36,12 +36,11 @@
 PARROT_EXPORT
 Parrot_UInt4 string_unescape_one(PARROT_INTERP,
     ARGMOD(UINTVAL *offset),
-    ARGMOD(STRING *string))
+    ARGIN(const STRING *string))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
-        FUNC_MODIFIES(*offset)
-        FUNC_MODIFIES(*string);
+        FUNC_MODIFIES(*offset);
 
 #define ASSERT_ARGS_Parrot_char_digit_value __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_str_dup_remove_quotes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\

Modified: branches/runcore_purge/include/parrot/sub.h
==============================================================================
--- branches/runcore_purge/include/parrot/sub.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/include/parrot/sub.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -172,13 +172,6 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
 PARROT_EXPORT
-PARROT_MALLOC
-PARROT_CANNOT_RETURN_NULL
-PMC * new_ret_continuation_pmc(PARROT_INTERP,
-    ARGIN_NULLOK(opcode_t *address))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
 void Parrot_capture_lex(PARROT_INTERP, ARGMOD(PMC *sub_pmc))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
@@ -219,11 +212,6 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-void invalidate_retc_context(PARROT_INTERP, ARGMOD(PMC *cont))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*cont);
-
 void mark_context_start(void);
 void Parrot_continuation_check(PARROT_INTERP, ARGIN(const PMC *pmc))
         __attribute__nonnull__(1)
@@ -262,8 +250,6 @@
     ARGIN_NULLOK(opcode_t *pc))
         __attribute__nonnull__(1);
 
-#define ASSERT_ARGS_new_ret_continuation_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_capture_lex __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(sub_pmc))
@@ -283,9 +269,6 @@
 #define ASSERT_ARGS_parrot_new_closure __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(sub_pmc))
-#define ASSERT_ARGS_invalidate_retc_context __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(cont))
 #define ASSERT_ARGS_mark_context_start __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_Parrot_continuation_check __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \

Modified: branches/runcore_purge/lib/Parrot/Configure/Options/Conf.pm
==============================================================================
--- branches/runcore_purge/lib/Parrot/Configure/Options/Conf.pm	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/lib/Parrot/Configure/Options/Conf.pm	Sat Apr 24 00:51:33 2010	(r45948)
@@ -102,6 +102,7 @@
    --without-gmp        Build parrot without GMP support
    --without-opengl     Build parrot without OpenGL support (GL/GLU/GLUT)
    --without-pcre       Build parrot without pcre support
+   --without-zlib       Build parrot without zlib support
 
 ICU Options:
 

Modified: branches/runcore_purge/lib/Parrot/Configure/Options/Conf/Shared.pm
==============================================================================
--- branches/runcore_purge/lib/Parrot/Configure/Options/Conf/Shared.pm	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/lib/Parrot/Configure/Options/Conf/Shared.pm	Sat Apr 24 00:51:33 2010	(r45948)
@@ -79,6 +79,7 @@
     without-opengl
     without-pcre
     without-threads
+    without-zlib
     yacc
 };
 

Modified: branches/runcore_purge/lib/Parrot/Configure/Options/Test/Prepare.pm
==============================================================================
--- branches/runcore_purge/lib/Parrot/Configure/Options/Test/Prepare.pm	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/lib/Parrot/Configure/Options/Test/Prepare.pm	Sat Apr 24 00:51:33 2010	(r45948)
@@ -78,6 +78,8 @@
                 ? qq|$secondlevel-$number|
                 : $number;
             $steps_tests_complex{$category}{$class}{$final}++;
+
+            return;
         }
     } # END wanted()
     finddepth( \&wanted, ( $steps_dir ) );

Modified: branches/runcore_purge/lib/Parrot/Configure/Step/List.pm
==============================================================================
--- branches/runcore_purge/lib/Parrot/Configure/Step/List.pm	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/lib/Parrot/Configure/Step/List.pm	Sat Apr 24 00:51:33 2010	(r45948)
@@ -53,6 +53,7 @@
     auto::readline
     auto::pcre
     auto::opengl
+    auto::zlib
     auto::gettext
     auto::snprintf
     auto::perldoc

Modified: branches/runcore_purge/lib/Parrot/Distribution.pm
==============================================================================
--- branches/runcore_purge/lib/Parrot/Distribution.pm	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/lib/Parrot/Distribution.pm	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2009, Parrot Foundation.
+# Copyright (C) 2004-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -248,13 +248,13 @@
                 # and make a hash out of the directories
                 my %dirs =
                     map { ( ( File::Spec->splitpath($_) )[1] => 1 ) }
-                    grep { m|(?i)(?:$filter_ext)| } $self->_dist_files;
+                    grep { m/(?i)(?:$filter_ext)/ } $self->_dist_files;
 
                 # Filter out ignored directories
                 # and return the results
                 my @dirs = sort
                     map  { $self->directory_with_name($_) }
-                    grep { !m|(?:$filter_dir)| }
+                    grep { !m/(?:$filter_dir)/ }
                     keys %dirs;
                 return @dirs;
             };
@@ -281,7 +281,7 @@
                     }
                 }
 
-                print 'WARNING: ' . __FILE__ . ':' . __LINE__ . ' File not found: ' . $name . "\n";
+                print '# WARNING: ' . __FILE__ . ':' . __LINE__ . ' File not found: ' . $name . "\n";
                 return;
             };
 
@@ -293,7 +293,7 @@
                 # and return a sorted list of filenames
                 my @files = sort
                     map  { $self->file_with_name($_) }
-                    grep { m|(?i)(?:$filter_ext)| }
+                    grep { m/(?i)(?:$filter_ext)/ }
                     $self->_dist_files;
                 return @files;
             };
@@ -334,7 +334,7 @@
     # and return a sorted list of filenames
     my @files = sort
         map  { $self->file_with_name($_) }
-        grep { m|[/\\]makefiles[/\\][a-z]+\.in$| }
+        grep { m{[/\\]makefiles[/\\][a-z]+\.in$} }
         $self->_dist_files;
     return @files;
 }

Modified: branches/runcore_purge/lib/Parrot/Pmc2c/PMCEmitter.pm
==============================================================================
--- branches/runcore_purge/lib/Parrot/Pmc2c/PMCEmitter.pm	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/lib/Parrot/Pmc2c/PMCEmitter.pm	Sat Apr 24 00:51:33 2010	(r45948)
@@ -570,7 +570,7 @@
         vt->base_type    = entry;
         vt->whoami       = string_make(interp, "$classname", @{[length($classname)]},
                                        "ascii", PObj_constant_FLAG|PObj_external_FLAG);
-        vt->provides_str = Parrot_str_append(interp, vt->provides_str,
+        vt->provides_str = Parrot_str_concat(interp, vt->provides_str,
             string_make(interp, "$provides", @{[length($provides)]}, "ascii",
             PObj_constant_FLAG|PObj_external_FLAG));
 

Copied: branches/runcore_purge/ports/fedora/2.3.0/parrot.desk.in.tar.gz (from r45947, trunk/ports/fedora/2.3.0/parrot.desk.in.tar.gz)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: branches/runcore_purge/ports/fedora/2.3.0/parrot.patch (from r45947, trunk/ports/fedora/2.3.0/parrot.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/runcore_purge/ports/fedora/2.3.0/parrot.patch	Sat Apr 24 00:51:33 2010	(r45948, copy of r45947, trunk/ports/fedora/2.3.0/parrot.patch)
@@ -0,0 +1,19 @@
+--- lib/Parrot/Install.pm	2009-06-01 09:29:57.000000000 +0200
++++ lib/Parrot/Install.pm	2009-06-03 08:41:22.000000000 +0200
+@@ -220,6 +220,16 @@
+         else {
+             next unless -e $src;
+             next if $^O eq 'cygwin' and -e "$src.exe"; # stat works, copy not
++            if (-l $src) { 
++                # check if the system supports symbolic linking 
++                use Config; 
++                if ($Config{d_symlink} && $Config{d_readlink}) { 
++                # copy as symbolic link 
++                    symlink(readlink($src), $dest); 
++                    print "$dest\n"; 
++                    next; 
++                } 
++            } 
+             copy( $src, $dest ) or die "Error: couldn't copy $src to $dest: $!\n";
+             print "$dest\n";
+         }

Copied: branches/runcore_purge/ports/fedora/2.3.0/parrot.spec (from r45947, trunk/ports/fedora/2.3.0/parrot.spec)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/runcore_purge/ports/fedora/2.3.0/parrot.spec	Sat Apr 24 00:51:33 2010	(r45948, copy of r45947, trunk/ports/fedora/2.3.0/parrot.spec)
@@ -0,0 +1,379 @@
+Name:           parrot
+Version:        2.3.0
+Release:        1%{?dist}
+Summary:        a virtual machine
+License:        Artistic 2.0
+Group:          Development/Libraries
+URL:            http://www.parrot.org/
+
+Source0:        ftp://ftp.parrot.org/pub/parrot/releases/stable/%{version}/parrot-%{version}.tar.gz
+Source1:        %{name}.desk.in.tar.gz
+
+Patch0:         parrot.patch
+#
+# see for upstream:       https://trac.parrot.org/parrot/ticket/509
+# patched file:           lib/Parrot/Install.pm
+# is to have the symlink:    libparrot.so  ->  libparrot.so.%{version}
+# Without this %{_libdir}/libparrot.so would not be a symbolic link to
+# %{_libdir}/libparrot.so.%{version}  
+
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires:  readline-devel
+BuildRequires:  ncurses-devel
+BuildRequires:  gmp-devel
+BuildRequires:  gdbm-devel
+BuildRequires:  libicu-devel
+BuildRequires:  perl(Test::Harness)
+BuildRequires:  perl(Test::Simple)
+BuildRequires:  ctags
+BuildRequires:  openssl-devel
+BuildRequires:  flex
+BuildRequires:  bison
+# Needed to generate the Parrot PDF book
+BuildRequires:  perl(Pod::PseudoPod::LaTeX), texlive-latex
+# Needed to desktop-file-install usage
+BuildRequires:  desktop-file-utils
+ 
+
+%package docs
+Summary:        Parrot Virtual Machine documentation
+Group:          Documentation
+Requires:       perl(strict)
+Requires:       perl(warnings)
+# Provides the executable in the desktop file (xdg-open)
+Requires:       xdg-utils
+BuildArch:      noarch
+
+#--
+
+%package devel
+Summary:        Parrot Virtual Machine development headers and libraries
+Group:          Development/Libraries
+Requires:       %{name} = %{version}-%{release}
+Requires:       pkgconfig
+
+#--
+
+%package tools
+Summary:        Parrot Virtual Machine development for languages
+Group:          Development/Libraries
+Requires:       %{name} = %{version}-%{release}
+Requires:       perl(Pod::Simple)
+Requires:       perl(File::Which) >= 0.05
+Requires:       perl(Parrot::OpLib::core)
+# It is necessary to have installed the package "perl-Perl-Critic" to install
+# the parrot-tools
+Provides:       perl(Parrot::Pmc2c::MethodEmitter) = %{version}
+Provides:       perl(Parrot::Pmc2c::PCCMETHOD_BITS) = %{version}
+Provides:       perl(Parrot::Pmc2c::PMCEmitter) = %{version}
+Provides:       perl(Parrot::OpLib::core) = %{version}
+
+
+%description
+Parrot is a virtual machine designed to efficiently compile and execute
+bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6,
+as well as variety of other languages.
+
+#--
+
+%description docs
+Documentation in text-, POD- and HTML-format (docs/html-subdirectory) and also
+examples about the Parrot Virtual Machine.
+
+#--
+
+%description devel
+Parrot Virtual Machine development headers and libraries.
+
+#--
+
+%description tools
+Parrot Virtual Machine development files for building languages.
+
+
+%prep
+%setup -q
+%patch0 -p0
+
+
+cat << \EOF > %{name}-prov
+#!/bin/sh
+%{__perl_provides} $* | %{__sed} -e '/perl(A)/d' -e '/perl(B)/d' \
+                            -e '/perl(DB)/d' -e '/perl(Parrot::OpLib::core)/d'
+EOF
+
+%global __perl_provides %{_builddir}/%{name}-%{version}/%{name}-prov
+chmod +x %{__perl_provides}
+
+
+%build
+%ifarch %{ix86} x86_64
+    RPM_OPT_FLAGS="$RPM_OPT_FLAGS -maccumulate-outgoing-args"
+%else
+# The PowerPC-architecture do not build with the '-maccumulate-outgoing-args'
+# option.
+    RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
+%endif
+
+# there are problems in this version with the optimize="-O2" option on ppc64
+%ifarch ppc64
+    RPM_OPT_FLAGS=`echo "$RPM_OPT_FLAGS" | %{__perl} -pi -e 's/-O2//'`
+%endif
+
+%{__perl} Configure.pl \
+    --prefix=%{_usr} \
+    --libdir=%{_libdir} \
+    --sysconfdir=%{_sysconfdir} \
+    --infodir=%{_datadir}/info \
+    --mandir=%{_mandir} \
+    --cc="%{__cc}" \
+    --cxx=%{__cxx} \
+    --optimize="$RPM_OPT_FLAGS" \
+    --parrot_is_shared \
+    --disable-rpath \
+    --pkgconfigdir=pkgconfig \
+    --lex=%{_bindir}/flex
+
+# The LD_LIBRARY_PATH hack is needed for "miniparrot"
+# to find his parrot-library in "blib/lib" 
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+
+# pbc_to_exe would not build if %{_smp_mflags} would used
+make
+make html pdf
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+# The LD_LIBRARY_PATH hack is needed for the command "pbc_to_exe parrot-nqp.pbc"
+# to find his parrot-library in "blib/lib" 
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+
+make install DESTDIR=$RPM_BUILD_ROOT
+
+# Creating man-pages
+%{__install} -d $RPM_BUILD_ROOT%{_mandir}/man1
+for var in 'parrot docs/running.pod' 'parrot_debugger src/parrot_debugger.c' \
+           'pbc_disassemble src/pbc_disassemble.c' 'pbc_dump src/pbc_dump.c' \
+           'pbc_merge src/pbc_merge.c' 'pbc_to_exe tools/dev/pbc_to_exe.pir' \
+           'parrot_config tools/build/parrot_config_c.pl' \
+           'parrot-nqp compilers/nqp/README.pod'
+do
+    MAN_NAME=`echo $var | %{__perl} -na -e 'print $F[0]'`
+    MAN_SOURCE=`echo $var | %{__perl} -na -e 'print $F[1]'`
+    pod2man --section=1 --name=$MAN_NAME $MAN_SOURCE | %{__gzip} -c > $RPM_BUILD_ROOT%{_mandir}/man1/${MAN_NAME}.1.gz
+done
+
+# Drop the docs so rpm can pick them up itself.
+rm -rf $RPM_BUILD_ROOT%{_defaultdocdir}/%{name}
+
+# Force permissions on doc directories.
+find docs examples -type d -exec chmod 755 {} \;
+find docs examples -type f -exec chmod 644 {} \;
+
+
+%define RPM_PAR_LIB_DIR $RPM_BUILD_ROOT%{_libdir}/%{name}/%{version}/
+
+
+# Force permissions on shared versioned libs so they get stripped.
+# The parrot-install-script don't set the permissions right
+# With changed permissions the dependencies will be found
+find %{RPM_PAR_LIB_DIR}dynext -type f -name '*.so' -exec chmod 755 {} \;
+
+# Remove module that should be install instead (perl(File::Which))
+rm -rf %{RPM_PAR_LIB_DIR}tools/lib/File
+
+
+# Added to reduce output errors when using rpmlint
+
+# Force permission on perl-scripts in the "tools" subdirctory
+find %{RPM_PAR_LIB_DIR}tools -type f -name "*.pl" -exec chmod 755 {} \; \
+    -exec %{__sed} -i -e '1 s&#! perl&#!/usr/bin/perl&' {} \;
+# Set path to parrot binary and Force permission
+find %{RPM_PAR_LIB_DIR}tools/dev -type f -name "pbc_to_exe.pir" \
+    -exec %{__sed} -i -e '1 s&#! parrot&#!/usr/bin/parrot&' {} \; \
+    -exec chmod 755 {} \;
+
+# Remove doc-files with zero-length
+find docs/html -type f -size 0 -exec rm -f {} \;
+find docs -wholename 'docs/doc-prep' -type f -size 0 -exec rm -f {} \;
+
+# Set path for installed programs in docs package
+find examples/json -type f -name "*.pir" \
+    -exec %{__sed} -i -e '1 s&#!../../parrot&#!/usr/bin/parrot&' {} \;
+find examples -type f -path 'examples/*/*/setup.pir' \
+    -exec %{__sed} -i -e '1 s&#! ../../../parrot&#!/usr/bin/parrot&' {} \;
+find examples -type f \( -name '*.pl' -o \
+                         -wholename 'examples/pir/befunge/t/basic.t' -o  \
+                         -path 'examples/languages/*/harness'               \) \
+    -exec %{__sed} -i -e '1 s&#! perl&#!/usr/bin/perl&' {} \;
+find examples -type f -name "*.py" \
+    -exec %{__sed} -i -e '1 s&#! python&#!/usr/bin/python&' {} \;
+find examples -type f -name "*.rb" \
+    -exec %{__sed} -i -e '1 s&#! ruby&#!/usr/bin/ruby&' {} \;
+
+find examples -type f \( -name "*.pir" -o \
+                         -wholename 'examples/shootout/random.pasm' \)  \
+    -exec %{__sed} -i -e '1 s&#!./parrot&#!/usr/bin/parrot&' {} \;
+
+find examples -wholename 'examples/languages/abc/t/01-tests.t' \
+    -exec %{__sed} -i -e '1 s&#!perl&#!/usr/bin/perl&' {} \;
+find examples -wholename 'examples/shootout/revcomp.pir' \
+    -exec %{__sed} -i -e '1 s&#!parrot&#!/usr/bin/parrot&' {} \;
+
+find examples -wholename 'examples/languages/abc/t/harness' \
+    -exec %{__perl} -pi -e 's/\r$//' {} \;
+
+#install desktop file
+%{__mkdir} ${RPM_BUILD_ROOT}%{_datadir}/applications/
+%{__tar} xzf %{SOURCE1} parrot_html.desk.in --to-stdout | %{__sed} "s|@DOCDIR@|%{_docdir}/%{name}-docs-%{version}|g" > ${RPM_BUILD_ROOT}%{_datadir}/applications/parrot_html.desktop
+%{__tar} xzf %{SOURCE1} parrot_pdf.desk.in --to-stdout | %{__sed} "s|@DOCDIR@|%{_docdir}/%{name}-docs-%{version}|g" > ${RPM_BUILD_ROOT}%{_datadir}/applications/parrot_pdf.desktop
+
+desktop-file-install --delete-original --add-category="Documentation"  \
+    --dir=${RPM_BUILD_ROOT}%{_datadir}/applications                    \
+    ${RPM_BUILD_ROOT}%{_datadir}/applications/parrot_html.desktop
+desktop-file-install --delete-original --add-category="Documentation"  \
+    --dir=${RPM_BUILD_ROOT}%{_datadir}/applications                    \
+    ${RPM_BUILD_ROOT}%{_datadir}/applications/parrot_pdf.desktop
+
+
+%check
+# 'make fulltest' is done by default; it take a lot of time
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+FULL='full'
+%{?_without_fulltest: FULL=''}
+%{?!_without_tests: make ${FULL}test}
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
+%doc RESPONSIBLE_PARTIES TODO LICENSE
+%{_bindir}/parrot
+%{_libdir}/parrot/
+%exclude %{_libdir}/parrot/%{version}/tools
+%exclude %{_libdir}/parrot/%{version}/VERSION
+%{_libdir}/libparrot.so.*
+%{_mandir}/man1/parrot.1.gz
+
+%files docs
+%defattr(-,root,root,-)
+%doc docs examples
+%{_datadir}/applications/parrot_html.desktop
+%{_datadir}/applications/parrot_pdf.desktop
+
+%files devel
+%defattr(-,root,root,-)
+%{_bindir}/parrot_config
+%{_bindir}/parrot_debugger
+%{_bindir}/parrot_nci_thunk_gen
+%{_bindir}/parrot-nqp
+%{_bindir}/pbc_disassemble
+%{_bindir}/pbc_merge
+%{_bindir}/pbc_to_exe
+%{_bindir}/pbc_dump
+%{_bindir}/tapir
+%{_includedir}/parrot
+%{_libdir}/libparrot.so
+%exclude %{_libdir}/libparrot.a
+%{_libdir}/pkgconfig/*
+%{_mandir}/man1/parrot_config.1.gz
+%{_mandir}/man1/parrot_debugger.1.gz
+%{_mandir}/man1/pbc_disassemble.1.gz
+%{_mandir}/man1/pbc_merge.1.gz
+%{_mandir}/man1/pbc_to_exe.1.gz
+%{_mandir}/man1/pbc_dump.1.gz
+%{_mandir}/man1/parrot-nqp.1.gz
+
+%files tools
+%defattr(-,root,root,-)
+# Files for building languages
+%{_libdir}/parrot/%{version}/tools/*
+%{_libdir}/parrot/%{version}/VERSION
+%{_usr}/src/parrot/*
+
+
+%changelog
+* Tue Apr 20 2010 Gerd Pokorra <gp at zimt.uni-siegen.de> 2.3.0-1
+- updated to 2.3.0
+- add desktop files to access the documentation for reading
+- add the tapir binary
+
+* Tue Mar 16 2010 Gerd Pokorra <gp at zimt.uni-siegen.de> 2.2.0-1
+- add the parrot_nci_thunk_gen binary
+
+* Wed Jan 20 2010 Gerd Pokorra <gp at zimt.uni-siegen.de> 2.0.0-1
+- new upstream version
+- add the parrot-nqp binary, with generating of the man-page
+
+* Fri Aug 21 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.5.0-1
+- add man pages
+
+* Sat Aug 1 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.4.0-9
+- include the necessary module Parrot::OpLib::core
+- change the place of header files to /usr/include/parrot/<version>
+- install the files /usr/src/parrot/*
+- add the new disable-rpath configure option
+
+* Wed Mar 25 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.0.0-6
+- add a list of changes from Lubomir Rintel
+- add filtering Provides
+- change requires for docs-subpackage
+- enable test suite
+- change the group of the subpackage "-docs" to Documentation
+- put the main-documentation from the docs-package to the main package
+- LICENSE file added
+- add Provides-lines
+- add patch for the file "tools/dev/install_files.pl"
+- add commands to reduce output of errors when using rpmlint
+- define RPM_PAR_LIB_DIR added
+- add subpackage "tools"
+- exclude tools directory from main-package
+- added make html
+
+* Sun Mar 22 2009 Fabien Georget <fabien.georget at gmail.com> 1.0.0-4
+- add tools
+
+* Sun Mar 22 2009 David Fetter <david at fetter.org> 1.0.0-3
+- Removed wrong prefix from pkgconfig per Christoph Wickert
+- Changed i386 to ix86 per Christoph Wickert
+
+* Tue Mar 17 2009 Allison Randal <allison at parrot.org> 1.0.0
+- updated to 1.0.0
+
+* Tue Jan 23 2009 Reini Urban <rurban at x-ray.at> 0.9.0
+- added parrot_utils to devel
+
+* Tue Dec 16 2008 Whiteknight <wknight8111 at gmail.com> 0.8.2
+- updated to 0.8.2
+
+* Wed Feb 20 2008 Patrick Michaud <pmichaud at pobox.com> 0.5.3
+- Update to 0.5.3.
+
+* Sat Mar 10 2007 Steven Pritchard <steve at kspei.com> 0.4.9-1
+- Update to 0.4.9.
+- BuildRequires ncurses-devel.
+- For some reason now I need to force -lm too.
+- Remove some files/directories that shouldn't be included.
+- Override lib_dir and make various substitutions to try to fix multilib.
+- Remove rpath use from Makefile.
+- Fix a pod error in src/ops/experimental.ops.
+- Enable "make test" since t/doc/pod.t won't fail now.
+- Force permissions on shared libraries so rpmbuild strips them.
+- Fix URL, description, summary, etc.
+- Add post/postun.
+- Move parrot-config to the devel sub-package.
+- Force permissions on the doc directories.
+- Add -lcurses to get readline detection to work.
+- Add BuildRequires libicu-devel.
+
+* Tue Mar 18 2003 Steve Fink <sfink at foxglove.localdomain> 0.0.11
+- first .spec file created

Deleted: branches/runcore_purge/ports/fedora/parrot.patch
==============================================================================
--- branches/runcore_purge/ports/fedora/parrot.patch	Sat Apr 24 00:51:33 2010	(r45947)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,38 +0,0 @@
---- tools/dev/install_files.pl	2009-07-13 10:26:40.000000000 +0200
-+++ tools/dev/install_files.pl	2009-07-13 13:37:49.000000000 +0200
-@@ -163,7 +163,7 @@
-             # libdir as it is typically done with automake installed packages.
-             # If there is a use case to make this configurable we'll add a
-             # seperate --pkgconfigdir option.
--            $filehash->{DestDirs} = ['pkgconfig', $parrotdir];
-+            $filehash->{DestDirs} = ['pkgconfig'];
-             return($filehash);
-         },
-     },
---- config/gen/makefiles/parrot_pc.in	2009-06-06 16:33:32.000000000 +0200
-+++ config/gen/makefiles/parrot_pc.in.new	2009-07-13 23:09:45.000000000 +0200
-@@ -7,4 +7,4 @@
- Description: virtual machine to execute bytecode for interpreted languages
- Version: @VERSION@
- Libs: -L${libdir} -lparrot @icu_shared@ @libs@
--Cflags: -I${includedir}
-+Cflags: -I${includedir}@versiondir@
---- lib/Parrot/Install.pm	2009-06-01 09:29:57.000000000 +0200
-+++ lib/Parrot/Install.pm	2009-06-03 08:41:22.000000000 +0200
-@@ -220,6 +220,16 @@
-         else {
-             next unless -e $src;
-             next if $^O eq 'cygwin' and -e "$src.exe"; # stat works, copy not
-+            if (-l $src) { 
-+                # check if the system supports symbolic linking 
-+                use Config; 
-+                if ($Config{d_symlink} && $Config{d_readlink}) { 
-+                # copy as symbolic link 
-+                    symlink(readlink($src), $dest); 
-+                    print "$dest\n"; 
-+                    next; 
-+                } 
-+            } 
-             copy( $src, $dest ) or die "Error: couldn't copy $src to $dest: $!\n";
-             print "$dest\n";
-         }

Deleted: branches/runcore_purge/ports/fedora/parrot.spec.fedora
==============================================================================
--- branches/runcore_purge/ports/fedora/parrot.spec.fedora	Sat Apr 24 00:51:33 2010	(r45947)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,356 +0,0 @@
-Name:           parrot
-Version:        2.0.0
-Release:        1%{?dist}
-Summary:        a virtual machine
-License:        Artistic 2.0
-Group:          Development/Libraries
-URL:            http://www.parrot.org/
-
-Source0:        ftp://ftp.parrot.org/pub/parrot/releases/stable/%{version}/parrot-%{version}.tar.gz
-
-Patch0:         parrot.patch
-# patched file:           tools/dev/install_files.pl
-# It is responsible to have no subdirectory under pkgconfig.
-#
-# patched file:           config/gen/makefiles/parrot_pc.in
-# So "pkg-config parrot --cflags" works correct
-#
-# see for upstream:       https://trac.parrot.org/parrot/ticket/509
-# patched file:           lib/Parrot/Install.pm
-# is to have the symlink:    libparrot.so  ->  libparrot.so.%{version}
-# Without this %{_libdir}/libparrot.so would not be a symbolic link to
-# %{_libdir}/libparrot.so.%{version}  
-
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires:  readline-devel
-BuildRequires:  ncurses-devel
-BuildRequires:  gmp-devel
-BuildRequires:  gdbm-devel
-BuildRequires:  libicu-devel
-BuildRequires:  perl(Test::Harness)
-BuildRequires:  perl(Test::Simple)
-BuildRequires:  ctags
-BuildRequires:  openssl-devel
-BuildRequires:  flex
-BuildRequires:  bison
- 
-
-%package docs
-Summary:        Parrot Virtual Machine documentation
-Group:          Documentation
-Requires:       perl(strict)
-Requires:       perl(warnings)
-BuildArch:      noarch
-
-#--
-
-%package devel
-Summary:        Parrot Virtual Machine development headers and libraries
-Group:          Development/Libraries
-Requires:       %{name} = %{version}-%{release}
-Requires:       pkgconfig
-
-#--
-
-%package tools
-Summary:        Parrot Virtual Machine development for languages
-Group:          Development/Libraries
-Requires:       %{name} = %{version}-%{release}
-Requires:       perl(Pod::Simple)
-Requires:       perl(File::Which) >= 0.05
-Requires:       perl(Parrot::OpLib::core)
-# It is necessary to have installed the package "perl-Perl-Critic" to install
-# the parrot-tools
-Provides:       perl(Parrot::Pmc2c::MethodEmitter) = %{version}
-Provides:       perl(Parrot::Pmc2c::PCCMETHOD_BITS) = %{version}
-Provides:       perl(Parrot::Pmc2c::PMCEmitter) = %{version}
-Provides:       perl(Parrot::OpLib::core) = %{version}
-
-
-%description
-Parrot is a virtual machine designed to efficiently compile and execute
-bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6,
-as well as variety of other languages.
-
-#--
-
-%description docs
-Documentation in text-, POD- and HTML-format (docs/html-subdirectory) and also
-examples about the Parrot Virtual Machine.
-
-#--
-
-%description devel
-Parrot Virtual Machine development headers and libraries.
-
-#--
-
-%description tools
-Parrot Virtual Machine development files for building languages.
-
-
-%prep
-%setup -q
-%patch0 -p0
-
-
-cat << \EOF > %{name}-prov
-#!/bin/sh
-%{__perl_provides} $* | %{__sed} -e '/perl(A)/d' -e '/perl(B)/d' \
-                            -e '/perl(DB)/d' -e '/perl(Parrot::OpLib::core)/d'
-EOF
-
-%global __perl_provides %{_builddir}/%{name}-%{version}/%{name}-prov
-chmod +x %{__perl_provides}
-
-
-%build
-%ifarch %{ix86} x86_64
-    RPM_OPT_FLAGS="$RPM_OPT_FLAGS -maccumulate-outgoing-args"
-%else
-# The PowerPC-architecture do not build with the '-maccumulate-outgoing-args'
-# option.
-    RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
-%endif
-
-%{__perl} Configure.pl \
-    --prefix=%{_usr} \
-    --libdir=%{_libdir} \
-    --sysconfdir=%{_sysconfdir} \
-    --infodir=%{_datadir}/info \
-    --mandir=%{_mandir} \
-    --cc="%{__cc}" \
-    --cxx=%{__cxx} \
-    --optimize="$RPM_OPT_FLAGS" \
-    --parrot_is_shared \
-    --disable-rpath \
-    --lex=%{_bindir}/flex
-
-# The LD_LIBRARY_PATH hack is needed for "miniparrot"
-# to find his parrot-library in "blib/lib" 
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-
-# pbc_to_exe would not build if %{_smp_mflags} would used
-make
-make parrot_utils
-make installable
-make html
-
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-# The LD_LIBRARY_PATH hack is needed for the command "pbc_to_exe parrot-nqp.pbc"
-# to find his parrot-library in "blib/lib" 
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-
-# install-dev: Same as 'install' taget but also install support for 
-#              language development 
-make install-dev DESTDIR=$RPM_BUILD_ROOT
-
-# Creating man-pages
-%{__install} -d $RPM_BUILD_ROOT%{_mandir}/man1
-for var in 'parrot docs/running.pod' 'parrot_debugger src/parrot_debugger.c' \
-           'pbc_disassemble src/pbc_disassemble.c' 'pbc_dump src/pbc_dump.c' \
-           'pbc_merge src/pbc_merge.c' 'pbc_to_exe tools/dev/pbc_to_exe.pir' \
-           'parrot_config tools/build/parrot_config_c.pl' \
-           'parrot-nqp compilers/nqp/README.pod'
-do
-    MAN_NAME=`echo $var | %{__perl} -na -e 'print $F[0]'`
-    MAN_SOURCE=`echo $var | %{__perl} -na -e 'print $F[1]'`
-    pod2man --section=1 --name=$MAN_NAME $MAN_SOURCE | %{__gzip} -c > $RPM_BUILD_ROOT%{_mandir}/man1/${MAN_NAME}.1.gz
-done
-
-# Drop the docs so rpm can pick them up itself.
-rm -rf $RPM_BUILD_ROOT%{_defaultdocdir}/%{name}
-
-# Force permissions on doc directories.
-find docs examples -type d -exec chmod 755 {} \;
-find docs examples -type f -exec chmod 644 {} \;
-
-
-%define RPM_PAR_LIB_DIR $RPM_BUILD_ROOT%{_libdir}/%{name}/%{version}/
-
-
-# Force permissions on shared versioned libs so they get stripped.
-# The parrot-install-script don't set the permissions right
-# With changed permissions the dependencies will be found
-find %{RPM_PAR_LIB_DIR}dynext -type f -name '*.so' -exec chmod 755 {} \;
-
-# Remove module that should be install instead (perl(File::Which))
-rm -rf %{RPM_PAR_LIB_DIR}tools/lib/File
-
-
-# Added to reduce output errors when using rpmlint
-
-# Force permission on perl-scripts in the "tools" subdirctory
-find %{RPM_PAR_LIB_DIR}tools -type f -name "*.pl" -exec chmod 755 {} \; \
-    -exec %{__sed} -i -e '1 s&#! perl&#!/usr/bin/perl&' {} \;
-# Set path to parrot binary and Force permission
-find %{RPM_PAR_LIB_DIR}tools/dev -type f -name "pbc_to_exe.pir" \
-    -exec %{__sed} -i -e '1 s&#! parrot&#!/usr/bin/parrot&' {} \; \
-    -exec chmod 755 {} \;
-
-# Remove doc-files with zero-length
-find docs/html -type f -size 0 -exec rm -f {} \;
-find docs -wholename 'docs/doc-prep' -type f -size 0 -exec rm -f {} \;
-
-# Set path for installed programs in docs package
-find examples/json -type f -name "*.pir" \
-    -exec %{__sed} -i -e '1 s&#!../../parrot&#!/usr/bin/parrot&' {} \;
-find examples -type f -path 'examples/*/*/setup.pir' \
-    -exec %{__sed} -i -e '1 s&#! ../../../parrot&#!/usr/bin/parrot&' {} \;
-find examples -type f \( -name '*.pl' -o \
-                         -wholename 'examples/pir/befunge/t/basic.t' -o  \
-                         -path 'examples/languages/*/harness'               \) \
-    -exec %{__sed} -i -e '1 s&#! perl&#!/usr/bin/perl&' {} \;
-find examples -type f -name "*.py" \
-    -exec %{__sed} -i -e '1 s&#! python&#!/usr/bin/python&' {} \;
-find examples -type f -name "*.rb" \
-    -exec %{__sed} -i -e '1 s&#! ruby&#!/usr/bin/ruby&' {} \;
-
-find examples -type f \( -name "*.pir" -o \
-                         -wholename 'examples/shootout/random.pasm' \)  \
-    -exec %{__sed} -i -e '1 s&#!./parrot&#!/usr/bin/parrot&' {} \;
-
-find examples -wholename 'examples/languages/abc/t/01-tests.t' \
-    -exec %{__sed} -i -e '1 s&#!perl&#!/usr/bin/perl&' {} \;
-find examples -wholename 'examples/shootout/revcomp.pir' \
-    -exec %{__sed} -i -e '1 s&#!parrot&#!/usr/bin/parrot&' {} \;
-
-find examples -wholename 'examples/languages/abc/t/harness' \
-    -exec %{__perl} -pi -e 's/\r$//' {} \;
-
-
-%check
-# 'make fulltest' is done by default; it take a lot of time
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-FULL='full'
-%{?_without_fulltest: FULL=''}
-%{?!_without_tests: make ${FULL}test}
-
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%files
-%defattr(-,root,root,-)
-%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
-%doc RESPONSIBLE_PARTIES TODO LICENSE
-%{_bindir}/parrot
-%{_libdir}/parrot/
-%exclude %{_libdir}/parrot/%{version}/tools
-%exclude %{_libdir}/parrot/%{version}/VERSION
-%{_libdir}/libparrot.so.*
-%{_mandir}/man1/parrot.1.gz
-
-%files docs
-%defattr(-,root,root,-)
-%doc docs examples
-
-%files devel
-%defattr(-,root,root,-)
-%{_bindir}/parrot_config
-%{_bindir}/parrot_debugger
-%{_bindir}/parrot-nqp
-%{_bindir}/pbc_disassemble
-%{_bindir}/pbc_merge
-%{_bindir}/pbc_to_exe
-%{_bindir}/pbc_dump
-%{_includedir}/parrot
-%{_libdir}/libparrot.so
-%exclude %{_libdir}/libparrot.a
-%{_libdir}/pkgconfig/*
-%{_mandir}/man1/parrot_config.1.gz
-%{_mandir}/man1/parrot_debugger.1.gz
-%{_mandir}/man1/pbc_disassemble.1.gz
-%{_mandir}/man1/pbc_merge.1.gz
-%{_mandir}/man1/pbc_to_exe.1.gz
-%{_mandir}/man1/pbc_dump.1.gz
-%{_mandir}/man1/parrot-nqp.1.gz
-
-%files tools
-%defattr(-,root,root,-)
-# Files for building languages
-%{_libdir}/parrot/%{version}/tools/*
-%{_libdir}/parrot/%{version}/VERSION
-%{_usr}/src/parrot/*
-
-
-%changelog
-* Wed Jan 20 2010 Gerd Pokorra <gp at zimt.uni-siegen.de> 2.0.0-1
-- new upstream version
-- add the parrot-nqp binary, with generating of the man-page
-
-* Sat Aug 22 2009 Tomas Mraz <tmraz at redhat.com> 1.5.0-2
-- rebuilt with new openssl
-
-* Fri Aug 21 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.5.0-1
-- add man pages
-
-* Sat Aug 1 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.4.0-9
-- include the necessary module Parrot::OpLib::core
-- change the place of header files to /usr/include/parrot/<version>
-- install the files /usr/src/parrot/*
-- add the new disable-rpath configure option
-
-* Wed Mar 25 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.0.0-6
-- add a list of changes from Lubomir Rintel
-- add filtering Provides
-- change requires for docs-subpackage
-- enable test suite
-- change the group of the subpackage "-docs" to Documentation
-- put the main-documentation from the docs-package to the main package
-- LICENSE file added
-- change 'make install' to 'make install-dev' to also install support for development (tools)
-- add Provides-lines
-- add patch for the file "tools/dev/install_files.pl"
-- add commands to reduce output of errors when using rpmlint
-- define RPM_PAR_LIB_DIR added
-- add subpackage "tools"
-- exclude tools directory from main-package
-- added make html
-
-* Sun Mar 22 2009 Fabien Georget <fabien.georget at gmail.com> 1.0.0-4
-- add tools
-
-* Sun Mar 22 2009 David Fetter <david at fetter.org> 1.0.0-3
-- Removed wrong prefix from pkgconfig per Christoph Wickert
-- Changed i386 to ix86 per Christoph Wickert
-
-* Tue Mar 17 2009 Allison Randal <allison at parrot.org> 1.0.0
-- updated to 1.0.0
-
-* Tue Jan 23 2009 Reini Urban <rurban at x-ray.at> 0.9.0
-- added make installable
-- added parrot_utils to devel
-
-* Tue Dec 16 2008 Whiteknight <wknight8111 at gmail.com> 0.8.2
-- updated to 0.8.2
-
-* Wed Feb 20 2008 Patrick Michaud <pmichaud at pobox.com> 0.5.3
-- Update to 0.5.3.
-
-* Sat Mar 10 2007 Steven Pritchard <steve at kspei.com> 0.4.9-1
-- Update to 0.4.9.
-- BuildRequires ncurses-devel.
-- For some reason now I need to force -lm too.
-- Remove some files/directories that shouldn't be included.
-- Override lib_dir and make various substitutions to try to fix multilib.
-- Remove rpath use from Makefile.
-- Fix a pod error in src/ops/experimental.ops.
-- Enable "make test" since t/doc/pod.t won't fail now.
-- Force permissions on shared libraries so rpmbuild strips them.
-- Fix URL, description, summary, etc.
-- Add post/postun.
-- Move parrot-config to the devel sub-package.
-- Force permissions on the doc directories.
-- Add -lcurses to get readline detection to work.
-- Add BuildRequires libicu-devel.
-
-* Tue Mar 18 2003 Steve Fink <sfink at foxglove.localdomain> 0.0.11
-- first .spec file created

Copied: branches/runcore_purge/ports/suse/2.2.0/parrot.diff (from r45947, trunk/ports/suse/2.2.0/parrot.diff)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/runcore_purge/ports/suse/2.2.0/parrot.diff	Sat Apr 24 00:51:33 2010	(r45948, copy of r45947, trunk/ports/suse/2.2.0/parrot.diff)
@@ -0,0 +1,47 @@
+--- ./src/packfile.c.orig	2010-03-16 05:15:34.000000000 +0000
++++ ./src/packfile.c	2010-03-17 13:44:10.000000000 +0000
+@@ -4442,8 +4442,7 @@ PackFile_Annotations_add_group(PARROT_IN
+ 
+     /* Allocate extra space for the group in the groups array. */
+     if (self->groups)
+-        self->groups =
+-            self->groups = mem_gc_realloc_n_typed_zeroed(interp, self->groups,
++	self->groups = mem_gc_realloc_n_typed_zeroed(interp, self->groups,
+                 1 + self->num_groups, self->num_groups, PackFile_Annotations_Group *);
+     else
+         self->groups = mem_gc_allocate_n_typed(interp,
+--- ./src/pmc.c.orig	2010-03-16 05:15:34.000000000 +0000
++++ ./src/pmc.c	2010-03-17 13:32:50.000000000 +0000
+@@ -584,7 +584,7 @@ Parrot_pmc_new_init_int(PARROT_INTERP, I
+     if (!PMC_IS_NULL(classobj) && PObj_is_class_TEST(classobj)) {
+         PMC *initial = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
+         VTABLE_set_integer_native(interp, initial, init);
+-        VTABLE_instantiate(interp, classobj, initial);
++        return VTABLE_instantiate(interp, classobj, initial);
+     }
+     else {
+         PMC * const pmc = get_new_pmc_header(interp, base_type, 0);
+--- ./tools/dev/pbc_to_exe.pir.orig	2010-03-17 14:04:34.000000000 +0000
++++ ./tools/dev/pbc_to_exe.pir	2010-03-17 14:05:34.000000000 +0000
+@@ -510,10 +510,11 @@ END_OF_FUNCTION
+     .param int install :optional
+ 
+     $P0 = '_config'()
+-    .local string cc, ccflags, cc_o_out, osname, build_dir, slash
++    .local string cc, ccflags, optimize, cc_o_out, osname, build_dir, slash
+     .local string installed, includepath, versiondir
+     cc        = $P0['cc']
+     ccflags   = $P0['ccflags']
++    optimize  = $P0['optimize']
+     cc_o_out  = $P0['cc_o_out']
+     osname    = $P0['osname']
+     build_dir = $P0['build_dir']
+@@ -547,6 +548,8 @@ END_OF_FUNCTION
+     compile .= pathquote
+     compile .= ' '
+     compile .= ccflags
++    compile .= ' '
++    compile .= optimize
+     compile .= ' -c '
+     compile .= cfile
+ 

Copied: branches/runcore_purge/ports/suse/2.2.0/parrot.spec (from r45947, trunk/ports/suse/2.2.0/parrot.spec)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/runcore_purge/ports/suse/2.2.0/parrot.spec	Sat Apr 24 00:51:33 2010	(r45948, copy of r45947, trunk/ports/suse/2.2.0/parrot.spec)
@@ -0,0 +1,226 @@
+#
+# spec file for package parrot (Version 2.2.0)
+#
+# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
+
+
+
+Name:           parrot
+Version:        2.2.0
+Release:        1.10
+%define pversion 2_2_0
+Summary:        Parrot Virtual Machine
+License:        Artistic 2.0
+Group:          Development/Libraries
+Url:            http://www.parrot.org/
+Source0:        parrot-%{version}.tar.bz2
+Patch0:         parrot.diff
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+BuildRequires:  readline-devel
+BuildRequires:  ncurses-devel
+BuildRequires:  gmp-devel
+BuildRequires:  gdbm-devel
+BuildRequires:  libicu-devel
+%if ! 0%{?suse_version}
+BuildRequires:  perl-Test-Harness
+%endif
+
+%package docs
+Summary:        Parrot Virtual Machine documentation
+License:        Artistic 2.0
+Group:          Development/Libraries
+%if ! 0%{?suse_version}
+BuildRequires:  /usr/bin/perldoc
+%endif
+
+%package -n libparrot%pversion
+
+
+Summary:        Parrot Virtual Machine Library
+License:        Artistic 2.0
+Group:          Development/Libraries
+
+%package devel
+Summary:        Parrot Virtual Machine development headers and libraries
+License:        Artistic 2.0
+Group:          Development/Libraries
+Requires:       %{name} = %{version}
+Requires:       readline-devel
+Requires:       ncurses-devel
+Requires:       gmp-devel
+Requires:       gdbm-devel
+Requires:       libicu-devel
+%if ! 0%{?suse_version}
+Requires:       %{_libdir}/pkgconfig
+%endif
+
+%description
+Parrot is a virtual machine designed to efficiently compile and execute
+bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6,
+as well as variety of other languages.
+
+%description -n libparrot%pversion
+Parrot is a virtual machine designed to efficiently compile and execute
+bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6,
+as well as variety of other languages.
+
+%description docs
+Documentation in text-, POD- and HTML-format (docs/html-subdirectory) and also
+examples about the Parrot Virtual Machine
+
+%description devel
+Parrot Virtual Machine development headers and libraries.
+
+%prep
+%setup -q
+%patch0
+%{__perl} -pi -e 's,"lib/,"%{_lib}/, if (/CONST_STRING\(interp,/)' \
+    src/library.c
+%{__perl} -pi -e "s,'/usr/lib','%{_libdir}',;s,runtime/lib/,runtime/%{_lib}/," \
+    tools/dev/install_files.pl
+%{__perl} -pi -e "s,'/usr/lib','%{_libdir}',;s,runtime/lib/,runtime/%{_lib}/," \
+    tools/dev/install_dev_files.pl
+
+%build
+if test "%{_vendor}" = "suse"
+then
+    LIBS='-lncurses -lm -lrt'
+else
+    LIBS='-lcurses -lm -lrt'
+fi
+OPTIMIZE="$RPM_OPT_FLAGS -fno-strict-aliasing"
+OPTIMIZE="$RPM_OPT_FLAGS"
+%ifarch %ix86 %x86_64
+OPTIMIZE="$OPTIMIZE -maccumulate-outgoing-args"
+%endif
+%ifarch ppc ia64
+OPTIMIZE="-O0"
+%endif
+%{__perl} Configure.pl \
+    --prefix=%{_usr} \
+    --libdir=%{_libdir} \
+    --sysconfdir=%{_sysconfdir} \
+    --infodir=%{_datadir}/info \
+    --mandir=%{_mandir} \
+    --cc="%{__cc}" \
+    --cxx=%{__cxx} \
+    --optimize="$OPTIMIZE" \
+    --parrot_is_shared \
+    --disable-rpath \
+    --lex=/usr/bin/flex \
+    --yacc=/usr/bin/yacc \
+    --libs="$LIBS"
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+make
+make parrot_utils
+make installable
+make html
+
+%install
+rm -rf $RPM_BUILD_ROOT
+mkdir $RPM_BUILD_ROOT
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+make install-dev DESTDIR=$RPM_BUILD_ROOT
+PARROT_LIB=%{_libdir}`./parrot_config versiondir`
+PARROT_INC=%{_includedir}`./parrot_config versiondir`
+wd=`pwd`
+for i in $RPM_BUILD_ROOT$PARROT_LIB/tools/build/* ; do
+    perl -pi -e "s@$wd/include@$PARROT_INC at g" $i
+    perl -pi -e "s@$wd/src/pmc@$PARROT_INC/pmc at g" $i
+    perl -pi -e "s@(-Wl,)?-L$wd/blib/lib@@" $i
+    perl -pi -e "s@$wd@$PARROT_LIB at g" $i
+done
+perl -pi -e 's@^(use lib ..FindBin::Bin/\.\./)\.\."@$1lib"@' $RPM_BUILD_ROOT$PARROT_LIB/tools/build/dynpmc.pl
+# Drop the docs so rpm can pick them up itself.
+rm -rf $RPM_BUILD_ROOT%{_usr}/share/doc/parrot    # necessary for SuSE
+#rm -rf $RPM_BUILD_ROOT/%{_docdir}/parrot         # for Solaris?
+# Force permissions on doc directories.
+find docs examples -type d -exec chmod 755 {} \;
+find docs examples -type f -exec chmod 644 {} \;
+# Force permissions on shared libs so they get stripped.
+find $RPM_BUILD_ROOT%{_libdir} -type f \( -name '*.so' -o -name '*.so.*' \) \
+    -exec chmod 755 {} \;
+# make libparrot.so a symlink
+(cd $RPM_BUILD_ROOT%{_libdir} ; ln -fs libparrot.so.* libparrot.so)
+
+%check
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+# make test < /dev/null
+# %{?_with_fulltest:make fulltest < /dev/null}
+# make test || :
+# %{?_with_fulltest:make fulltest || :}
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -n libparrot%pversion -p /sbin/ldconfig
+
+%postun -n libparrot%pversion -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%exclude %{_bindir}/parrot_config
+%exclude %{_bindir}/parrot_debugger
+%exclude %{_bindir}/pbc_*
+%{_bindir}/*
+
+%files -n libparrot%pversion
+%defattr(-,root,root,-)
+%dir %{_libdir}/parrot
+%dir %{_libdir}/parrot/*
+%{_libdir}/parrot/*/[^st]*
+%{_libdir}/libparrot.so.*
+
+%files docs
+%defattr(-,root,root,-)
+%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
+%doc RESPONSIBLE_PARTIES TODO
+%doc docs examples
+
+%files devel
+%defattr(-,root,root,-)
+%{_bindir}/parrot_config
+%{_bindir}/parrot_debugger
+%{_bindir}/pbc_disassemble
+%{_bindir}/pbc_merge
+%{_bindir}/pbc_to_exe
+%{_bindir}/pbc_dump
+%{_includedir}/parrot
+%{_libdir}/libparrot.so
+%{_libdir}/libparrot.a
+%{_libdir}/pkgconfig/*
+%{_libdir}/parrot/*/[st]*
+%{_usrsrc}/parrot
+
+%changelog
+* Wed Mar 17 2010 mls at suse.de
+- update to parrot-2.2.0
+  * Most internal allocations now use the GC
+  * RNG non-randomness fixes
+  * Elimination of much dead code
+* Fri Feb 19 2010 mls at suse.de
+- update to parrot-2.1.1
+* Fri Oct 23 2009 mls at suse.de
+- update to October version
+* Mon Sep 21 2009 mls at suse.de
+- update to September version
+* Thu Aug 27 2009 mls at suse.de
+- update to August version
+* Fri Jun 26 2009 mls at suse.de
+- update to June version
+* Thu Apr 23 2009 mls at suse.de
+- update to April version
+* Fri Apr  3 2009 mls at suse.de
+- initial revision

Deleted: branches/runcore_purge/ports/suse/parrot.spec.suse
==============================================================================
--- branches/runcore_purge/ports/suse/parrot.spec.suse	Sat Apr 24 00:51:33 2010	(r45947)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,244 +0,0 @@
-Name:           parrot
-Version:        1.1.0
-Release:        1%{dist}
-Summary:        Parrot Virtual Machine
-License:        Artistic 2.0
-Group:          Development/Libraries
-URL:            http://www.parrot.org/
-Source0:        ftp://ftp.parrot.org/pub/parrot/releases/stable/%{version}/parrot-%{version}.tar.gz
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires:  readline-devel
-BuildRequires:  ncurses-devel
-BuildRequires:  gmp-devel
-BuildRequires:  gdbm-devel
-BuildRequires:  libicu-devel
-BuildRequires:  perl-Test-Harness
-
-%package docs
-Summary:        Parrot Virtual Machine documentation
-License:        Artistic 2.0
-Group:          Development/Libraries
-BuildRequires:  /usr/bin/perldoc
-
-%package devel
-Summary:        Parrot Virtual Machine development headers and libraries
-License:        Artistic 2.0
-Group:          Development/Libraries
-Requires:       %{name} = %{version}-%{release}
-Requires:       %{_libdir}/pkgconfig
-
-%description
-Parrot is a virtual machine designed to efficiently compile and execute
-bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6,
-as well as variety of other languages.
-
-%description docs
-Documentation in text-, POD- and HTML-format (docs/html-subdirectory) and also
-examples about the Parrot Virtual Machine
-
-%description devel
-Parrot Virtual Machine development headers and libraries.
-
-%prep
-%setup -q
-
-%{__perl} -pi -e 's,"lib/,"%{_lib}/, if (/CONST_STRING\(interp,/)' \
-    src/library.c
-%{__perl} -pi -e "s,'/usr/lib','%{_libdir}',;s,runtime/lib/,runtime/%{_lib}/," \
-    tools/dev/install_files.pl
-
-%build
-
-%ifarch i386 x86_64
-%{__perl} Configure.pl \
-    --prefix=%{_usr} \
-    --libdir=%{_libdir} \
-    --sysconfdir=%{_sysconfdir} \
-    --infodir=%{_datadir}/info \
-    --mandir=%{_mandir} \
-    --cc="%{__cc}" \
-    --cxx=%{__cxx} \
-    --optimize="$RPM_OPT_FLAGS -maccumulate-outgoing-args" \
-    --parrot_is_shared \
-    --lex=/usr/bin/flex \
-    --yacc=/usr/bin/yacc \
-    --libs="-lncurses -lm"
-%else
-# PowerPC
-%{__perl} Configure.pl \
-    --prefix=%{_usr} \
-    --libdir=%{_libdir}
-%endif
-
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-make
-make parrot_utils
-make installable
-make html
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-make install DESTDIR=$RPM_BUILD_ROOT
-
-# Drop the docs so rpm can pick them up itself.
-rm -rf $RPM_BUILD_ROOT%{_usr}/share/doc/parrot    # necessary for SuSE
-#rm -rf $RPM_BUILD_ROOT/%{_docdir}/parrot         # for Solaris?
-
-# Force permissions on doc directories.
-find docs examples -type d -exec chmod 755 {} \;
-find docs examples -type f -exec chmod 644 {} \;
-
-# Force permissions on shared libs so they get stripped.
-find $RPM_BUILD_ROOT%{_libdir} -type f \( -name '*.so' -o -name '*.so.*' \) \
-    -exec chmod 755 {} \;
-
-# These files *probably* aren't needed.
-rm -rf $RPM_BUILD_ROOT%{_usr}/config \
-    $RPM_BUILD_ROOT%{_includedir}/src \
-    $RPM_BUILD_ROOT%{_usr}/src \
-    $RPM_BUILD_ROOT%{_usr}/tools
-
-%check
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-# make test < /dev/null
-# %{?_with_fulltest:make fulltest < /dev/null}
-# make test || :
-# %{?_with_fulltest:make fulltest || :}
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%files
-%defattr(-,root,root,-)
-%exclude %{_bindir}/parrot_config
-%exclude %{_bindir}/parrot_debugger
-%exclude %{_bindir}/pbc_*
-%{_bindir}/*
-%{_libdir}/parrot
-%{_libdir}/libparrot.so.*
-
-%files docs
-%defattr(-,root,root,-)
-%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
-%doc RESPONSIBLE_PARTIES TODO
-%doc docs examples
-
-%files devel
-%defattr(-,root,root,-)
-%{_bindir}/parrot_config
-%{_bindir}/parrot_debugger
-%{_bindir}/pbc_disassemble
-%{_bindir}/pbc_merge
-%{_bindir}/pbc_to_exe
-%{_bindir}/pbc_dump
-%{_includedir}/parrot
-%{_libdir}/libparrot.so
-%{_libdir}/libparrot.a
-%{_libdir}/pkgconfig/*
-
-%changelog
-* Tue Apr 21 2009 Francois Perrad <francois.perrad at gadz.org> 1.1.0
-- updated to 1.1.0
-
-* Tue Mar 17 2009 Allison Randal <allison at parrot.org> 1.0.0
-- updated to 1.0.0
-
-* Tue Jan 23 2009 Reini Urban <rurban at x-ray.at> 0.9.0
-- added make installable, perl6 is still not installable
-- added parrot_utils to devel
-- fixed Source0 url
-
-* Tue Jan 23 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 0.9.0
-- added make html
-- make reallyinstall => make install
-
-* Tue Jan 20 2009 chromatic <chromatic at wgz.org> 0.9.0
-- updated to 0.9.0
-
-* Tue Dec 16 2008 Whiteknight <wknight8111 at gmail.com> 0.8.2
-- updated to 0.8.2
-
-* Tue Nov 18 2008 chromatic <chromatic at parrot.org> 0.8.1
-- updated to 0.8.1
-
-* Tue Oct 21 2008 particle <particle at parrot.org> 0.8.0
-- updated to 0.8.0
-
-* Tue Sep 16 2008 pmichaud <pmichaud at pobox.com> 0.7.1
-- updated to 0.7.1
-
-* Wed Sep  3 2008 chromatic <chromatic at wgz.org> 0.7.0
-- install parrot_config (not parrot-config)
-
-* Tue Jun 17 2008 Nuno Carvalho <smash at cpan.org> 0.6.3
-- updated to 0.6.3
-
-* Tue May 20 2008 chromatic <chromatic at wgz.org>> 0.6.2
-- updated to 0.6.2
-
-* Mon Apr 28 2008 chromatic <chromatic at wgz.org> 0.6.1
-- minor fixes; tested with Fedora 7, 8, and 9-beta
-
-* Tue Mar 18 2008 Bernhard Schmalhofer <Bernhard.Schmalhofer at gmx.de> 0.6.0
-- Update to 0.5.3.
-
-* Wed Feb 20 2008 Patrick Michaud <pmichaud at pobox.com> 0.5.3
-- Update to 0.5.3.
-
-* Tue Jan 15 2008 Bob Rogers <rogers at rgrjr.dyndns.org> 0.5.2
-- Update to 0.5.2.
-
-* Tue Dec 18 2007 Jonathan Worthington <jnthn at jnthn.net> 0.5.1
-- Update to 0.5.1.
-
-* Tue Nov 20 2007 chromatic <chromatic at wgz.org> 0.5.0
-- Update to 0.5.0.
-
-* Fri May 25 2007 David Fetter <david at fetter.org> 0.4.12-1
-- Update to 0.4.12.
-
-* Wed Apr 18 2007 Steven Pritchard <steve at kspei.com> 0.4.11-1
-- Update to 0.4.11.
-
-* Wed Mar 21 2007 Steven Pritchard <steve at kspei.com> 0.4.10-1
-- Update to 0.4.10.
-
-* Sat Mar 10 2007 Steven Pritchard <steve at kspei.com> 0.4.9-1
-- Update to 0.4.9.
-- BR ncurses-devel.
-- For some reason now I need to force -lm too.
-- Remove some files/directories that shouldn't be included.
-
-* Wed Jan 17 2007 Steven Pritchard <steve at kspei.com> 0.4.8-1
-- Attempt update to 0.4.8.
-
-* Fri Jun 30 2006 Steven Pritchard <steve at kspei.com> 0.4.5-5
-- Override lib_dir and make various substitutions to try to fix multilib.
-- Remove rpath use from Makefile.
-- Fix a pod error in src/ops/experimental.ops.
-- Enable "make test" since t/doc/pod.t won't fail now.
-
-* Wed Jun 28 2006 Steven Pritchard <steve at kspei.com> 0.4.5-4
-- Force permissions on shared libraries so rpmbuild strips them.
-
-* Wed Jun 28 2006 Steven Pritchard <steve at kspei.com> 0.4.5-3
-- Fix URL, description, summary, etc.
-- Add post/postun.
-- Move parrot-config to the devel sub-package.
-- Force permissions on the doc directories.
-
-* Tue Jun 27 2006 Steven Pritchard <steve at kspei.com> 0.4.5-2
-- Add -lcurses to get readline detection to work.
-- BR libicu-devel.
-
-* Tue Jun 27 2006 Steven Pritchard <steve at kspei.com> 0.4.5-1
-- Initial packaging attempt.
-
-* Tue Mar 18 2003 Steve Fink <sfink at foxglove.localdomain> 0.0.11
-- first .spec file created

Deleted: branches/runcore_purge/runtime/parrot/library/SQLite3.pir
==============================================================================
--- branches/runcore_purge/runtime/parrot/library/SQLite3.pir	Sat Apr 24 00:51:33 2010	(r45947)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,135 +0,0 @@
-# Copyright (C) 2008-2009, Parrot Foundation.
-# $Id$
-
-.namespace ['SQLite3']
-
-.const int SQLITE_OK         =   0   # Successful result
-# beginning-of-error-codes
-.const int SQLITE_ERROR      =   1   # SQL error or missing database
-.const int SQLITE_INTERNAL   =   2   # Internal logic error in SQLite
-.const int SQLITE_PERM       =   3   # Access permission denied
-.const int SQLITE_ABORT      =   4   # Callback routine requested an abort
-.const int SQLITE_BUSY       =   5   # The database file is locked
-.const int SQLITE_LOCKED     =   6   # A table in the database is locked
-.const int SQLITE_NOMEM      =   7   # A malloc() failed
-.const int SQLITE_READONLY   =   8   # Attempt to write a readonly database
-.const int SQLITE_INTERRUPT  =   9   # Operation terminated by sqlite3_interrupt()
-.const int SQLITE_IOERR      =  10   # Some kind of disk I/O error occurred
-.const int SQLITE_CORRUPT    =  11   # The database disk image is malformed
-.const int SQLITE_NOTFOUND   =  12   # NOT USED. Table or record not found
-.const int SQLITE_FULL       =  13   # Insertion failed because database is full
-.const int SQLITE_CANTOPEN   =  14   # Unable to open the database file
-.const int SQLITE_PROTOCOL   =  15   # NOT USED. Database lock protocol error
-.const int SQLITE_EMPTY      =  16   # Database is empty
-.const int SQLITE_SCHEMA     =  17   # The database schema changed
-.const int SQLITE_TOOBIG     =  18   # String or BLOB exceeds size limit
-.const int SQLITE_CONSTRAINT =  19   # Abort due to constraint violation
-.const int SQLITE_MISMATCH   =  20   # Data type mismatch
-.const int SQLITE_MISUSE     =  21   # Library used incorrectly
-.const int SQLITE_NOLFS      =  22   # Uses OS features not supported on host
-.const int SQLITE_AUTH       =  23   # Authorization denied
-.const int SQLITE_FORMAT     =  24   # Auxiliary database format error
-.const int SQLITE_RANGE      =  25   # 2nd parameter to sqlite3_bind out of range
-.const int SQLITE_NOTADB     =  26   # File opened that is not a database file
-.const int SQLITE_ROW        =  100  # sqlite3_step() has another row ready
-.const int SQLITE_DONE       =  101  # sqlite3_step() has finished executing
-
-.sub '_sqlite_init' :load
-    .local pmc libname
-    .local pmc function
-    .local pmc sqlite_funcs
-
-    libname = loadlib 'libsqlite3'
-    set_global '_sqlite3', libname
-
-    sqlite_funcs = new 'ResizableStringArray'
-    push sqlite_funcs, 'step'
-    push sqlite_funcs, 'ip'
-    push sqlite_funcs, 'finalize'
-    push sqlite_funcs, 'ip'
-    push sqlite_funcs, 'close'
-    push sqlite_funcs, 'ip'
-    push sqlite_funcs, 'errmsg'
-    push sqlite_funcs, 'tp'
-    push sqlite_funcs, 'errcode'
-    push sqlite_funcs, 'ip'
-    push sqlite_funcs, 'bind_int'
-    push sqlite_funcs, 'ipii'
-    push sqlite_funcs, 'bind_double'
-    push sqlite_funcs, 'ipid'
-    push sqlite_funcs, 'bind_text'
-    push sqlite_funcs, 'ipitii'
-    push sqlite_funcs, 'column_name'
-    push sqlite_funcs, 'tpi'
-    push sqlite_funcs, 'column_count'
-    push sqlite_funcs, 'ip'
-    push sqlite_funcs, 'column_type'
-    push sqlite_funcs, 'ipi'
-    push sqlite_funcs, 'column_int'
-    push sqlite_funcs, 'ipi'
-    push sqlite_funcs, 'column_double'
-    push sqlite_funcs, 'lpi'
-    push sqlite_funcs, 'column_text'
-    push sqlite_funcs, 'tpi'
-
-    function  = dlfunc libname, 'sqlite3_open', 'itV'
-    set_global 'open_raw', function
-
-    function  = dlfunc libname, 'sqlite3_prepare_v2', 'iptiVp'
-    set_global 'prepare_raw', function
-
-    .local pmc list_iter
-    list_iter = iter sqlite_funcs
-    .local string func_name, signature
-    .local pmc    function
-
-  list_loop:
-    unless list_iter goto done
-    func_name = shift list_iter
-    signature = shift list_iter
-    $S0 = concat 'sqlite3_', func_name
-    function  = dlfunc libname, $S0, signature
-    set_global func_name, function
-    goto list_loop
-
-  done:
-
-.end
-
-.sub 'open'
-  .param string connectstr
-  .local pmc dbhandle
-  .local pmc open_raw
-  .local int rc
-
-  open_raw = get_global 'open_raw'
-  dbhandle = new 'Pointer'
-  rc = open_raw(connectstr, dbhandle)
-
-  .return(dbhandle)
-.end
-
-.sub 'prepare'
-  .param pmc dbhandle
-  .param string psstr
-  .local int psstrlen
-  .local pmc pshandle
-  .local pmc dummy
-  .local pmc prepare_raw
-  .local int rc
-
-  prepare_raw = get_global 'prepare_raw'
-
-  pshandle = new 'Pointer'
-  dummy = new 'Pointer'
-  psstrlen = length psstr
-  rc = prepare_raw(dbhandle, psstr, psstrlen, pshandle, dummy)
-
-  .return(pshandle)
-.end
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/runcore_purge/runtime/parrot/library/TAP/Formatter.pir
==============================================================================
--- branches/runcore_purge/runtime/parrot/library/TAP/Formatter.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/runtime/parrot/library/TAP/Formatter.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -11,6 +11,12 @@
 
 See L<http://search.cpan.org/~andya/Test-Harness/>
 
+=head3 Class TAP;Formatter;Base
+
+Base class for harness output delegates
+
+=over 4
+
 =cut
 
 .namespace ['TAP';'Formatter';'Base']
@@ -31,6 +37,10 @@
     setattribute self, 'verbosity', $P0
 .end
 
+=item process_args
+
+=cut
+
 .sub 'process_args' :method
     .param pmc opts
     $I0 = exists opts['verbose']
@@ -74,6 +84,10 @@
   L7:
 .end
 
+=item verbose
+
+=cut
+
 .sub 'verbose' :method
     $P0 = getattribute self, 'verbosity'
     $I0 = $P0
@@ -81,6 +95,10 @@
     .return ($I0)
 .end
 
+=item quiet
+
+=cut
+
 .sub 'quiet' :method
     $P0 = getattribute self, 'verbosity'
     $I0 = $P0
@@ -88,6 +106,10 @@
     .return ($I0)
 .end
 
+=item really_quiet
+
+=cut
+
 .sub 'really_quiet' :method
     $P0 = getattribute self, 'verbosity'
     $I0 = $P0
@@ -95,6 +117,10 @@
     .return ($I0)
 .end
 
+=item silent
+
+=cut
+
 .sub 'silent' :method
     $P0 = getattribute self, 'verbosity'
     $I0 = $P0
@@ -102,6 +128,10 @@
     .return ($I0)
 .end
 
+=item prepare
+
+=cut
+
 .sub 'prepare' :method
     .param pmc tests
     .local int longest
@@ -119,6 +149,10 @@
     setattribute self, '_longest', $P0
 .end
 
+=item _format_name
+
+=cut
+
 .sub '_format_name' :method
     .param string name
     $P0 = getattribute self, '_longest'
@@ -137,6 +171,10 @@
     die "Unimplemented."
 .end
 
+=item summary
+
+=cut
+
 .sub 'summary' :method
     .param pmc aggregate
     $I0 = self.'silent'()
@@ -257,12 +295,20 @@
   L1:
 .end
 
+=item _output
+
+=cut
+
 .sub '_output' :method
     .param pmc args :slurpy
     $S0 = join '', args
     print $S0
 .end
 
+=item _failure_output
+
+=cut
+
 .sub '_failure_output' :method
     .param pmc args :slurpy
     self.'_output'(args :flat)
@@ -345,6 +391,15 @@
     .return (range)
 .end
 
+=back
+
+=head3 Class TAP;Formatter;Session
+
+Abstract base class for harness output delegate
+
+=over 4
+
+=cut
 
 .namespace ['TAP';'Formatter';'Session']
 
@@ -356,7 +411,7 @@
     $P0.'add_attribute'('show_count')
 .end
 
-.sub 'init' :vtable
+.sub 'init' :vtable :nsentry
     $P0 = getattribute self, 'show_count'
     unless null $P0 goto L1
     $P0 = new 'Boolean'
@@ -365,19 +420,35 @@
   L1:
 .end
 
+=item header
+
+=cut
+
 .sub 'header' :method
     # nothing
 .end
 
+=item result
+
+=cut
+
 .sub 'result' :method
     .param pmc result
     # nothing
 .end
 
+=item close_test
+
+=cut
+
 .sub 'close_test' :method
     # nothing
 .end
 
+=item clear_for_close
+
+=cut
+
 .sub 'clear_for_close' :method
     # nothing
 .end
@@ -483,6 +554,15 @@
   L1:
 .end
 
+=back
+
+=head3 Class TAP;Formatter;Console
+
+Harness output delegate for default console output
+
+=over 4
+
+=cut
 
 .namespace ['TAP';'Formatter';'Console']
 
@@ -490,6 +570,10 @@
     $P0 = subclass ['TAP';'Formatter';'Base'], ['TAP';'Formatter';'Console']
 .end
 
+=item open_test
+
+=cut
+
 .sub 'open_test' :method
     .param string test
     .param pmc parser
@@ -507,10 +591,18 @@
     .return ($P0)
 .end
 
+=item _set_colors
+
+=cut
+
 .sub '_set_colors' :method
     .param pmc colors :slurpy
 .end
 
+=item _output_success
+
+=cut
+
 .sub '_output_success' :method
     .param string msg
     self.'_set_colors'('green')
@@ -518,6 +610,10 @@
     self.'_set_colors'('reset')
 .end
 
+=item _failure_output
+
+=cut
+
 .sub '_failure_output' :method
     .param pmc args :slurpy
     self.'_set_colors'('red')
@@ -526,6 +622,15 @@
     self.'_set_colors'('reset')
 .end
 
+=back
+
+=head3 Class TAP;Formatter;Console;Session
+
+Harness output delegate for default console output
+
+=over 4
+
+=cut
 
 .namespace ['TAP';'Formatter';'Console';'Session']
 
@@ -548,6 +653,10 @@
     $P0(self)
 .end
 
+=item _get_output_result
+
+=cut
+
 .sub '_get_output_result' :method
     .param pmc result
     .local pmc formatter
@@ -556,6 +665,10 @@
     formatter.'_output'($S0)
 .end
 
+=item header
+
+=cut
+
 .sub 'header' :method
     .local pmc formatter
     formatter = getattribute self, 'formatter'
@@ -569,6 +682,10 @@
   L1:
 .end
 
+=item result
+
+=cut
+
 .sub 'result' :method
     .param pmc result
     .local pmc formatter
@@ -652,6 +769,10 @@
   L2:
 .end
 
+=item close_test
+
+=cut
+
 .sub 'close_test' :method
     .local pmc formatter
     formatter = getattribute self, 'formatter'
@@ -690,6 +811,10 @@
   L1:
 .end
 
+=item clear_for_close
+
+=cut
+
 .sub 'clear_for_close' :method
     .local pmc parser, formatter, name, plan, output
     .local string tests_run, pretty
@@ -711,6 +836,8 @@
     formatter.'_output'("\r", $S0)
 .end
 
+=back
+
 =head1 AUTHOR
 
 Francois Perrad

Modified: branches/runcore_purge/runtime/parrot/library/TAP/Harness.pir
==============================================================================
--- branches/runcore_purge/runtime/parrot/library/TAP/Harness.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/runtime/parrot/library/TAP/Harness.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -13,6 +13,13 @@
 See L<http://search.cpan.org/~andya/Test-Harness/>
 end L<http://search.cpan.org/~wonko/TAP-Harness-Archive/>.
 
+=head3 Class TAP;Harness
+
+This is a simple test harness which allows tests to be run and results
+automatically aggregated and output to STDOUT.
+
+=over 4
+
 =cut
 
 .namespace ['TAP';'Harness']
@@ -43,6 +50,10 @@
     setattribute self, 'ok_callbacks', $P0
 .end
 
+=item process_args
+
+=cut
+
 .sub 'process_args' :method
     .param pmc opts
     setattribute self, 'opts', opts
@@ -68,12 +79,20 @@
   L3:
 .end
 
+=item formatter
+
+=cut
+
 .sub 'formatter' :method
     .param pmc formatter
     setattribute self, 'formatter', formatter
 .end
 
-.sub 'runtests' :method
+=item runtests
+
+=cut
+
+.sub 'runtests' :method :nsentry
     .param pmc tests
     $P0 = getattribute self, 'formatter'
     unless null $P0 goto L1
@@ -212,6 +231,19 @@
   L1:
 .end
 
+=back
+
+=head3 Class TAP';Harness;Archive
+
+This module is a direct subclass of C<TAP;Harness> and behaves
+in exactly the same way except for one detail. In addition to
+outputting a running progress of the tests and an ending summary
+it can also capture all of the raw TAP from the individual test
+files or streams into an archive file (C<.tar.gz>).
+
+=over 4
+
+=cut
 
 .namespace ['TAP';'Harness';'Archive']
 
@@ -223,11 +255,19 @@
     $P0.'add_attribute'('archive_extra_props')
 .end
 
+=item archive
+
+=cut
+
 .sub 'archive' :method
     .param pmc archive
     setattribute self, 'archive_file', archive
 .end
 
+=item extra_files
+
+=cut
+
 .sub 'extra_files' :method
     .param pmc extra_files
     $I0 = does extra_files, 'array'
@@ -237,6 +277,10 @@
     setattribute self, 'archive_extra_files', extra_files
 .end
 
+=item extra_props
+
+=cut
+
 .sub 'extra_props' :method
     .param pmc extra_props
     $I0 = does extra_props, 'hash'
@@ -246,6 +290,10 @@
     setattribute self, 'archive_extra_props', extra_props
 .end
 
+=item runtests
+
+=cut
+
 .sub 'runtests' :method
     .param pmc files
     $P0 = getattribute self, 'archive_file'
@@ -291,8 +339,7 @@
     cmd .= " *"
     system(cmd)
     chdir(current_dir)
-    cmd = "gzip --best " . $S0
-    system(cmd)
+    gzip($S0)
     rmtree(dir)
     .return (aggregate)
 .end
@@ -358,6 +405,7 @@
     .return ($S0)
 .end
 
+=back
 
 =head1 AUTHOR
 

Modified: branches/runcore_purge/runtime/parrot/library/TAP/Parser.pir
==============================================================================
--- branches/runcore_purge/runtime/parrot/library/TAP/Parser.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/runtime/parrot/library/TAP/Parser.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -11,6 +11,12 @@
 
 See L<http://search.cpan.org/~andya/Test-Harness/>
 
+=head3 Class TAP;Parser;Result
+
+Base class for TAP::Parser output objects
+
+=over 4
+
 =cut
 
 .namespace ['TAP';'Parser';'Result']
@@ -22,12 +28,20 @@
     $P0.'add_attribute'('explanation')
 .end
 
+=item get_string
+
+=cut
+
 .sub 'get_string' :vtable :method
     $P0 = getattribute self, 'raw'
     $S0 = $P0
     .return ($S0)
 .end
 
+=item type
+
+=cut
+
 .sub 'type' :method
     $S0 = typeof self
     $P0 = split ';', $S0
@@ -36,6 +50,10 @@
     .return ($S0)
 .end
 
+=item has_todo
+
+=cut
+
 .sub 'has_todo' :method
     $P0 = getattribute self, 'directive'
     unless null $P0 goto L1
@@ -46,6 +64,10 @@
     .return ($I0)
 .end
 
+=item has_skip
+
+=cut
+
 .sub 'has_skip' :method
     $P0 = getattribute self, 'directive'
     unless null $P0 goto L1
@@ -56,6 +78,10 @@
     .return ($I0)
 .end
 
+=item has_directive
+
+=cut
+
 .sub 'has_directive' :method
     $I0 = self.'has_todo'()
     if $I0 goto L1
@@ -64,6 +90,13 @@
     .return ($I0)
 .end
 
+=back
+
+=head3 Class TAP;Parser;Result;Bailout
+
+=over 4
+
+=cut
 
 .namespace ['TAP';'Parser';'Result';'Bailout']
 
@@ -71,11 +104,20 @@
     $P0 = subclass ['TAP';'Parser';'Result'], ['TAP';'Parser';'Result';'Bailout']
 .end
 
+=item bailout
+
+=cut
+
 .sub 'bailout' :method
     $P0 = getattribute self, 'explanation'
     .return ($P0)
 .end
 
+=back
+
+=head3 Class TAP;Parser;Result;Comment
+
+=cut
 
 .namespace ['TAP';'Parser';'Result';'Comment']
 
@@ -84,6 +126,9 @@
     $P0.'add_attribute'('comment')
 .end
 
+=head3 Class TAP;Parser;Result;Plan
+
+=cut
 
 .namespace ['TAP';'Parser';'Result';'Plan']
 
@@ -93,6 +138,11 @@
     $P0.'add_attribute'('tests_planned')
 .end
 
+=head3 Class TAP;Parser;Result;Test
+
+=over 4
+
+=cut
 
 .namespace ['TAP';'Parser';'Result';'Test']
 
@@ -104,6 +154,10 @@
     $P0.'add_attribute'('unplanned')
 .end
 
+=item get_string
+
+=cut
+
 .sub 'get_string' :vtable :method
     $P0 = getattribute self, 'ok'
     $S0 = $P0
@@ -133,6 +187,10 @@
     .return ($S0)
 .end
 
+=item is_ok
+
+=cut
+
 .sub 'is_ok' :method
     $P0 = getattribute self, 'unplanned'
     if null $P0 goto L1
@@ -146,6 +204,10 @@
     .return ($I0)
 .end
 
+=item is_actual_ok
+
+=cut
+
 .sub 'is_actual_ok' :method
     $P0 = getattribute self, 'ok'
     $S0 = $P0
@@ -154,6 +216,10 @@
     .return ($I0)
 .end
 
+=item todo_passed
+
+=cut
+
 .sub 'todo_passed' :method
     $I0 = self.'has_todo'()
     unless $I0 goto L1
@@ -162,6 +228,10 @@
     .return ($I0)
 .end
 
+=item is_unplanned
+
+=cut
+
 .sub 'is_unplanned' :method
     $I0 = 0
     $P0 = getattribute self, 'unplanned'
@@ -171,6 +241,11 @@
     .return ($I0)
 .end
 
+=back
+
+=head3 Class TAP;Parser;Result;Unknown
+
+=cut
 
 .namespace ['TAP';'Parser';'Result';'Unknown']
 
@@ -178,6 +253,9 @@
     $P0 = subclass ['TAP';'Parser';'Result'], ['TAP';'Parser';'Result';'Unknown']
 .end
 
+=head3 Class TAP;Parser;Result;Version
+
+=cut
 
 .namespace ['TAP';'Parser';'Result';'Version']
 
@@ -186,6 +264,14 @@
     $P0.'add_attribute'('version')
 .end
 
+=head3 Class TAP;Parser;Grammar
+
+C<TAP;Parser;Grammar> tokenizes lines and constructs C<TAP;Parser;Result>
+subclasses to represent the tokens.
+
+=over 4
+
+=cut
 
 .namespace ['TAP';'Parser';'Grammar']
 
@@ -212,6 +298,10 @@
     .return (str)
 .end
 
+=item tokenize
+
+=cut
+
 .sub 'tokenize' :method
     .param string line
     .local pmc result
@@ -430,6 +520,16 @@
     .return (result)
 .end
 
+=back
+
+=head3 Class TAP;Base
+
+Base class that provides common functionality to C<TAP;Parser>
+and C<TAP;Harness> ie. callback support.
+
+=over 4
+
+=cut
 
 .namespace ['TAP';'Base']
 
@@ -439,6 +539,10 @@
     $P0.'add_attribute'('ok_callbacks')
 .end
 
+=item callback
+
+=cut
+
 .sub 'callback' :method
     .param string event
     .param pmc callback
@@ -458,6 +562,10 @@
     $P0[event] = callback
 .end
 
+=item _has_callback
+
+=cut
+
 .sub '_has_callback' :method
     $P0 = getattribute self, 'code_for'
     if null $P0 goto L1
@@ -466,6 +574,10 @@
     .return (0)
 .end
 
+=item _callback_for
+
+=cut
+
 .sub '_callback_for' :method
     .param string event
     null $P1
@@ -478,6 +590,10 @@
     .return ($P1)
 .end
 
+=item _make_callback
+
+=cut
+
 .sub '_make_callback' :method
     .param string event
     .param pmc args :slurpy
@@ -492,6 +608,15 @@
     .return ()
 .end
 
+=back
+
+=head3 Class TAP;Parser
+
+C<TAP;Parser> is designed to produce a proper parse of TAP output.
+
+=over 4
+
+=cut
 
 .namespace ['TAP';'Parser']
 
@@ -558,56 +683,100 @@
     setattribute self, 'ok_callbacks', $P0
 .end
 
+=item start_time
+
+=cut
+
 .sub 'start_time' :method
     $P0 = getattribute self, 'start_time'
     .return ($P0)
 .end
 
+=item end_time
+
+=cut
+
 .sub 'end_time' :method
     $P0 = getattribute self, 'end_time'
     .return ($P0)
 .end
 
+=item skipped
+
+=cut
+
 .sub 'skipped' :method :nsentry
     $P0 = getattribute self, 'skipped'
     .return ($P0)
 .end
 
+=item todo
+
+=cut
+
 .sub 'todo' :method :nsentry
     $P0 = getattribute self, 'todo'
     .return ($P0)
 .end
 
+=item passed
+
+=cut
+
 .sub 'passed' :method :nsentry
     $P0 = getattribute self, 'passed'
     .return ($P0)
 .end
 
+=item failed
+
+=cut
+
 .sub 'failed' :method :nsentry
     $P0 = getattribute self, 'failed'
     .return ($P0)
 .end
 
+=item todo_passed
+
+=cut
+
 .sub 'todo_passed' :method :nsentry
     $P0 = getattribute self, 'todo_passed'
     .return ($P0)
 .end
 
+=item parse_errors
+
+=cut
+
 .sub 'parse_errors' :method :nsentry
     $P0 = getattribute self, 'parse_errors'
     .return ($P0)
 .end
 
+=item tests_run
+
+=cut
+
 .sub 'tests_run' :method :nsentry
     $P0 = getattribute self, 'tests_run'
     .return ($P0)
 .end
 
+=item tests_planned
+
+=cut
+
 .sub 'tests_planned' :method :nsentry
     $P0 = getattribute self, 'tests_planned'
     .return ($P0)
 .end
 
+=item merge
+
+=cut
+
 .sub 'merge' :method :nsentry
     .param int val
     $P0 = new 'Boolean'
@@ -615,6 +784,10 @@
     setattribute self, 'merge', $P0
 .end
 
+=item ignore_exit
+
+=cut
+
 .sub 'ignore_exit' :method :nsentry
     .param int val
     $P0 = new 'Boolean'
@@ -622,6 +795,10 @@
     setattribute self, 'ignore_exit', $P0
 .end
 
+=item exit
+
+=cut
+
 .sub 'exit' :method :nsentry
     $P0 = getattribute self, 'ignore_exit'
     if null $P0 goto L1
@@ -636,6 +813,10 @@
     .return ($I0)
 .end
 
+=item has_problems
+
+=cut
+
 .sub 'has_problems' :method
     $P0 = getattribute self, 'failed'
     $I0 = elements $P0
@@ -655,6 +836,10 @@
     .return ($I0)
 .end
 
+=item _add_error
+
+=cut
+
 .sub '_add_error' :method
     .param pmc args :slurpy
     $P0 = getattribute self, 'parse_errors'
@@ -663,16 +848,28 @@
     push $P0, $P1
 .end
 
+=item is_good_plan
+
+=cut
+
 .sub 'is_good_plan' :method
     $P0 = getattribute self, 'good_plan'
     .return ($P0)
 .end
 
+=item spool
+
+=cut
+
 .sub 'spool' :method
     .param pmc spool
     setattribute self, 'spool', spool
 .end
 
+=item delete_spool
+
+=cut
+
 .sub 'delete_spool' :method
     $P0 = getattribute self, 'spool'
     null $P1
@@ -680,11 +877,19 @@
     .return ($P0)
 .end
 
+=item pragma
+
+=cut
+
 .sub 'pragma' :method
     .param string name
     .return (1)
 .end
 
+=item tap
+
+=cut
+
 .sub 'tap' :method
     .param string tap
     $P0 = new 'StringHandle'
@@ -693,6 +898,10 @@
     setattribute self, 'stream', $P0
 .end
 
+=item file
+
+=cut
+
 .sub 'file' :method
     .param string filename
     $P0 = new 'FileHandle'
@@ -739,6 +948,10 @@
     .return ($S0)
 .end
 
+=item exec
+
+=cut
+
 .sub 'exec' :method
     .param pmc cmds :slurpy
     .local string cmd
@@ -767,6 +980,10 @@
     rethrow ex
 .end
 
+=item run
+
+=cut
+
 .sub 'run' :method
     .const 'Sub' $P0 = 'next'
     $P0 = newclosure $P0
@@ -775,6 +992,10 @@
     unless null $P1 goto L1
 .end
 
+=item next
+
+=cut
+
 .sub 'next' :method :nsentry :lex
     .local pmc stream, spool
     stream = getattribute self, 'stream'
@@ -1126,6 +1347,16 @@
   L5:
 .end
 
+=back
+
+=head3 Class TAP;Parser;Aggregator
+
+C<TAP;Parser;Aggregator> collects parser objects and allows
+reporting/querying their aggregate results.
+
+=over 4
+
+=cut
 
 .namespace ['TAP';'Parser';'Aggregator']
 
@@ -1196,6 +1427,10 @@
   L2:
 .end
 
+=item add
+
+=cut
+
 .sub 'add' :method
     .param string description
     .param pmc parser
@@ -1233,6 +1468,10 @@
   L3:
 .end
 
+=item parsers
+
+=cut
+
 .sub 'parsers' :method
     .param string desc
     $P0 = getattribute self, 'parser_for'
@@ -1240,45 +1479,77 @@
     .return ($P1)
 .end
 
+=item total
+
+=cut
+
 .sub 'total' :method
     $P0 = getattribute self, 'total'
     $I0 = $P0
     .return ($I0)
 .end
 
+=item passed
+
+=cut
+
 .sub 'passed' :method
     $P0 = getattribute self, 'passed'
     $I0 = $P0
     .return ($I0)
 .end
 
+=item descriptions
+
+=cut
+
 .sub 'descriptions' :method
     $P0 = getattribute self, 'parse_order'
     .return ($P0)
 .end
 
+=item start
+
+=cut
+
 .sub 'start' :method
     $N0 = time
     $P0 = box $N0
     setattribute self, 'start_time', $P0
 .end
 
+=item stop
+
+=cut
+
 .sub 'stop' :method
     $N0 = time
     $P0 = box $N0
     setattribute self, 'end_time', $P0
 .end
 
+=item start_time
+
+=cut
+
 .sub 'start_time' :method
     $P0= getattribute self, 'start_time'
     .return ($P0)
 .end
 
+=item en_time
+
+=cut
+
 .sub 'end_time' :method
     $P0= getattribute self, 'end_time'
     .return ($P0)
 .end
 
+=item elapsed
+
+=cut
+
 .sub 'elapsed' :method
     $P0 = getattribute self, 'end_time'
     if null $P0 goto L1
@@ -1292,6 +1563,10 @@
     die "Can't call elapsed without first calling start and then stop"
 .end
 
+=item elapsed_timestr
+
+=cut
+
 .sub 'elapsed_timestr' :method
     $N0 = self.'elapsed'()
     $P0 = new 'FixedPMCArray'
@@ -1301,6 +1576,10 @@
     .return ($S0)
 .end
 
+=item has_problems
+
+=cut
+
 .sub 'has_problems' :method
     $P0 = getattribute self, 'todo_passed'
     $I0 = $P0
@@ -1310,6 +1589,10 @@
     .return ($I0)
 .end
 
+=item has_errors
+
+=cut
+
 .sub 'has_errors' :method
     $P0 = getattribute self, 'failed'
     $I0 = $P0
@@ -1323,6 +1606,10 @@
     .return ($I0)
 .end
 
+=item get_status
+
+=cut
+
 .sub 'get_status' :method
     .local int total, passed
     $P0 = getattribute self, 'total'
@@ -1341,6 +1628,10 @@
     .return ('NOTESTS')
 .end
 
+=item all_passed
+
+=cut
+
 .sub 'all_passed' :method
     .local int total
     $P0 = getattribute self, 'total'
@@ -1356,6 +1647,8 @@
     .return (0)
 .end
 
+=back
+
 =head1 AUTHOR
 
 Francois Perrad

Modified: branches/runcore_purge/runtime/parrot/library/distutils.pir
==============================================================================
--- branches/runcore_purge/runtime/parrot/library/distutils.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/runtime/parrot/library/distutils.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -62,7 +62,7 @@
 
 Output a skeleton for Plumage
 
-=item sdist, sdist_gztar, sdist_bztar, sdist_zip, sdist_rpm, manifest
+=item sdist, sdist_gztar, sdist_zip, sdist_rpm, manifest
 
 Create a source distribution or a source RPM package
 
@@ -126,15 +126,11 @@
 
 =item smoke
 
-tar, gzip, curl
+tar, curl
 
 =item sdist_gztar
 
-Some coreutils : tar, gzip
-
-=item sdist_bztar
-
-bzip2
+Some coreutils : tar
 
 =item sdist_zip
 
@@ -254,8 +250,6 @@
     register_step_after('clean', _clean_html_pod)
     .const 'Sub' _clean_gztar = '_clean_gztar'
     register_step_after('clean', _clean_gztar)
-    .const 'Sub' _clean_bztar = '_clean_bztar'
-    register_step_after('clean', _clean_bztar)
     .const 'Sub' _clean_zip = '_clean_zip'
     register_step_after('clean', _clean_zip)
     .const 'Sub' _clean_smoke = '_clean_smoke'
@@ -289,8 +283,6 @@
     register_step('sdist', _sdist)
     .const 'Sub' _sdist_gztar = '_sdist_gztar'
     register_step('sdist_gztar', _sdist_gztar)
-    .const 'Sub' _sdist_bztar = '_sdist_bztar'
-    register_step('sdist_bztar', _sdist_bztar)
     .const 'Sub' _sdist_zip = '_sdist_zip'
     register_step('sdist_zip', _sdist_zip)
     .const 'Sub' _manifest = '_manifest'
@@ -1361,10 +1353,6 @@
     pmc2c .= " "
     $S0 = get_tool('build/pmc2c.pl')
     pmc2c .= $S0
-    $S0 = config['osname']
-    unless $S0 == 'solaris' goto L1
-    pmc2c .= " --no-lines"
-  L1:
     .local string pmc2c_includes
     pmc2c_includes = "--include "
     $S0 = get_srcdir()
@@ -1413,10 +1401,6 @@
     cmd .= " "
     $S0 = get_tool('build/pmc2c.pl')
     cmd .= $S0
-    $S0 = config['osname']
-    unless $S0 == 'solaris' goto L0
-    cmd .= " --no-lines"
-  L0:
     cmd .= " --library "
     $S0 = dirname(src)
     cmd .= $S0
@@ -3063,9 +3047,8 @@
 
     rmtree($S0)
 
-    cmd = 'gzip --best ' . $S0
-    cmd .= '.tar'
-    system(cmd, 1 :named('verbose'))
+    $S1 = $S0 . '.tar'
+    gzip($S1)
   L1:
 .end
 
@@ -3106,45 +3089,6 @@
     .return ($S0)
 .end
 
-=head3 Step sdist_bztar
-
-=cut
-
-.sub '_sdist_bztar' :anon
-    .param pmc kv :slurpy :named
-    run_step('manifest', kv :flat :named)
-
-    $S0 = slurp('MANIFEST')
-    $P0 = split "\n", $S0
-    $S0 = pop $P0
-    $S0 = get_tarname('.tar.bz2', kv :flat :named)
-    $I0 = newer($S0, $P0)
-    if $I0 goto L1
-    $S0 = get_tarname('', kv :flat :named)
-    copy_sdist($S0, $P0)
-
-    .local string cmd
-    cmd = 'tar -cvf ' . $S0
-    cmd .= '.tar '
-    cmd .= $S0
-    system(cmd, 1 :named('verbose'))
-
-    rmtree($S0)
-
-    cmd = 'bzip2 ' . $S0
-    cmd .= '.tar'
-    system(cmd, 1 :named('verbose'))
-  L1:
-.end
-
-.sub '_clean_bztar' :anon
-    .param pmc kv :slurpy :named
-
-    $S0 = get_tarname('.tar.bz2', kv :flat :named)
-    unlink($S0, 1 :named('verbose'))
-    unlink('MANIFEST', 1 :named('verbose'))
-.end
-
 =head3 Step sdist_zip
 
 =cut

Modified: branches/runcore_purge/runtime/parrot/library/osutils.pir
==============================================================================
--- branches/runcore_purge/runtime/parrot/library/osutils.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/runtime/parrot/library/osutils.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -764,6 +764,48 @@
   L7:
 .end
 
+=item gzip
+
+=cut
+
+.sub 'gzip'
+    .param string filename
+    .local pmc fh, gh
+    fh = new 'FileHandle'
+    push_eh _handler1
+    $S0 = fh.'readall'(filename)
+    $I0 = length $S0
+    pop_eh
+    $P0 = loadlib 'gziphandle'
+    push_eh _handler2
+    gh = new 'GzipHandle'
+    $S1 = filename . '.gz'
+    gh.'open'($S1, 'wb')
+    gh.'puts'($S0)
+    gh.'close'()
+    unlink(filename)
+    .return ()
+  _handler1:
+    .local pmc e
+    .get_results (e)
+    $S0 = "Can't open '"
+    $S0 .= filename
+    $S0 .= "' ("
+    $S1 = err
+    $S0 .= $S1
+    $S0 .= ")\n"
+    e = $S0
+    rethrow e
+  _handler2:
+    .local pmc e
+    .get_results (e)
+    $S0 = "Can't gzip '"
+    $S0 .= filename
+    $S0 .= "'\n"
+    e = $S0
+    rethrow e
+.end
+
 =back
 
 =head1 AUTHOR

Modified: branches/runcore_purge/src/call/args.c
==============================================================================
--- branches/runcore_purge/src/call/args.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/call/args.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -364,9 +364,7 @@
             {
                 STRING *string_value;
                 if (constant)
-                    /* ensure that callees don't modify constant caller strings */
-                    string_value = Parrot_str_new_COW(interp,
-                            Parrot_pcc_get_string_constant(interp, ctx, raw_index));
+                    string_value = Parrot_pcc_get_string_constant(interp, ctx, raw_index);
                 else
                     string_value = CTX_REG_STR(ctx, raw_index);
 
@@ -456,10 +454,8 @@
         break;
       case PARROT_ARG_STRING:
         if (constant)
-            /* ensure that callees don't modify constant caller strings */
             VTABLE_set_string_keyed_str(interp, call_object, name,
-                        Parrot_str_new_COW(interp,
-                                Parrot_pcc_get_string_constant(interp, ctx, raw_index)));
+                    Parrot_pcc_get_string_constant(interp, ctx, raw_index));
         else
             VTABLE_set_string_keyed_str(interp, call_object, name,
                         CTX_REG_STR(ctx, raw_index));
@@ -808,8 +804,6 @@
     }
 
     /* First iterate over positional args and positional parameters. */
-    arg_index       = 0;
-    param_index     = 0;
     GETATTR_CallContext_num_positionals(interp, call_object, positional_args);
 
     while (1) {

Modified: branches/runcore_purge/src/call/context.c
==============================================================================
--- branches/runcore_purge/src/call/context.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/call/context.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2009, Parrot Foundation.
+Copyright (C) 2009-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -79,10 +79,10 @@
     ARGIN(const UINTVAL *number_regs_used))
         __attribute__nonnull__(2);
 
-static void clear_regs(PARROT_INTERP, ARGMOD(PMC *pmcctx))
+static void clear_regs(PARROT_INTERP, ARGMOD(Parrot_Context *ctx))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
-        FUNC_MODIFIES(*pmcctx);
+        FUNC_MODIFIES(*ctx);
 
 PARROT_INLINE
 PARROT_CANNOT_RETURN_NULL
@@ -111,7 +111,7 @@
        PARROT_ASSERT_ARG(number_regs_used))
 #define ASSERT_ARGS_clear_regs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(pmcctx))
+    , PARROT_ASSERT_ARG(ctx))
 #define ASSERT_ARGS_get_context_struct_fast __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(ctx))
@@ -242,7 +242,7 @@
 
 /*
 
-=item C<static void clear_regs(PARROT_INTERP, PMC *pmcctx)>
+=item C<static void clear_regs(PARROT_INTERP, Parrot_Context *ctx)>
 
 Clears all registers in a context.  PMC and STRING registers contain PMCNULL
 and NULL, respectively.  Integer and float registers contain negative flag
@@ -253,11 +253,10 @@
 */
 
 static void
-clear_regs(PARROT_INTERP, ARGMOD(PMC *pmcctx))
+clear_regs(PARROT_INTERP, ARGMOD(Parrot_Context *ctx))
 {
     ASSERT_ARGS(clear_regs)
     UINTVAL i;
-    Parrot_Context *ctx = get_context_struct_fast(interp, pmcctx);
 
     /* NULL out registers - P/S have to be NULL for GC
      *
@@ -269,7 +268,7 @@
     }
 
     for (i = 0; i < ctx->n_regs_used[REGNO_STR]; i++) {
-        ctx->bp_ps.regs_s[i] = NULL;
+        ctx->bp_ps.regs_s[i] = STRINGNULL;
     }
 
     if (Interp_debug_TEST(interp, PARROT_REG_DEBUG_FLAG)) {
@@ -347,7 +346,7 @@
     }
 
     /* other stuff is set inside Sub.invoke */
-    clear_regs(interp, pmcctx);
+    clear_regs(interp, ctx);
 }
 
 
@@ -485,7 +484,7 @@
     /* ctx.bp_ps points to S0, which has Px on the left */
     ctx->bp_ps.regs_s = (STRING **)((char *)ctx->registers + size_nip);
 
-    clear_regs(interp, pmcctx);
+    clear_regs(interp, ctx);
 }
 
 

Modified: branches/runcore_purge/src/call/pcc.c
==============================================================================
--- branches/runcore_purge/src/call/pcc.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/call/pcc.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -340,7 +340,7 @@
     opcode_t    *dest;
     UINTVAL      n_regs_used[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
     PMC         *ctx  = Parrot_push_context(interp, n_regs_used);
-    PMC * const  ret_cont = new_ret_continuation_pmc(interp, NULL);
+    PMC * const  ret_cont = pmc_new(interp, enum_class_Continuation);
 
     Parrot_pcc_set_signature(interp, ctx, call_object);
     Parrot_pcc_set_continuation(interp, ctx, ret_cont);

Modified: branches/runcore_purge/src/dynext.c
==============================================================================
--- branches/runcore_purge/src/dynext.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/dynext.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -294,7 +294,7 @@
 
         for (i = 0; i < n; ++i) {
             ext = VTABLE_get_string_keyed_int(interp, share_ext, i);
-            full_name = Parrot_str_concat(interp, wo_ext, ext, 0);
+            full_name = Parrot_str_concat(interp, wo_ext, ext);
             path = Parrot_locate_runtime_file_str(interp, full_name,
                     PARROT_RUNTIME_FT_DYNEXT);
             if (path) {
@@ -341,7 +341,7 @@
     if (!STRING_IS_EMPTY(lib) && memcmp(lib->strstart, "lib", 3) == 0) {
         *handle = Parrot_dlopen((char *)lib->strstart + 3, 0);
         if (*handle) {
-            path = Parrot_str_substr(interp, lib, 3, lib->strlen - 3, NULL, 0);
+            path = Parrot_str_substr(interp, lib, 3, lib->strlen - 3);
             return path;
         }
     }
@@ -350,8 +350,8 @@
     /* And on cygwin replace a leading "lib" by "cyg". */
 #ifdef __CYGWIN__
     if (!STRING_IS_EMPTY(lib) && memcmp(lib->strstart, "lib", 3) == 0) {
-        path = Parrot_str_append(interp, CONST_STRING(interp, "cyg"),
-            Parrot_str_substr(interp, lib, 3, lib->strlen - 3, NULL, 0));
+        path = Parrot_str_concat(interp, CONST_STRING(interp, "cyg"),
+            Parrot_str_substr(interp, lib, 3, lib->strlen - 3));
 
         *handle = dlopen_string(interp, flags, path);
 

Copied: branches/runcore_purge/src/dynpmc/gziphandle.pmc (from r45947, trunk/src/dynpmc/gziphandle.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/runcore_purge/src/dynpmc/gziphandle.pmc	Sat Apr 24 00:51:33 2010	(r45948, copy of r45947, trunk/src/dynpmc/gziphandle.pmc)
@@ -0,0 +1,300 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/dynpmc/gziphandle.pmc - GzipHandle PMC
+
+=head1 DESCRIPTION
+
+The GzipHandle PMC performs I/O operations on a source or destination file.
+
+This PMC wraps the zlib.
+
+=head2 Vtable Functions
+
+=over 4
+
+=cut
+
+*/
+
+#include <zlib.h>
+#include "parrot/extend.h"
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
+pmclass GzipHandle provides Handle dynpmc auto_attrs {
+    ATTR void *file;
+
+/*
+
+=item C<void init()>
+
+Initializes a newly created FileHandle object.
+
+=cut
+
+*/
+    VTABLE void init() {
+        PARROT_GZIPHANDLE(SELF)->file = NULL;
+    }
+
+/*
+
+=item C<INTVAL get_bool()>
+
+Returns whether the GzipHandle has reached the end of the file.
+
+=cut
+
+*/
+    VTABLE INTVAL get_bool() {
+        gzFile file;
+        GET_ATTR_file(INTERP, SELF, file);
+        return !gzeof(file);
+    }
+
+/*
+
+=back
+
+=head2 Stream-Oriented Methods
+
+=over 4
+
+=item C<METHOD open(STRING *filename, STRING *mode :optional)>
+
+Opens the file at the given filename (including path) with the given mode. The
+invocant is modified and becomes an open filehandle.
+
+=cut
+
+*/
+    METHOD open(STRING *filename, STRING *mode :optional,
+                               INTVAL has_mode :opt_flag) {
+        gzFile file;
+        char *path;
+        char *mod = (char *)"rb";
+        path = Parrot_str_to_cstring(INTERP, filename);
+        if (has_mode)
+            mod = Parrot_str_to_cstring(INTERP, mode);
+        file = gzopen (path, mod);
+        Parrot_str_free_cstring(path);
+        if (has_mode)
+            Parrot_str_free_cstring(mod);
+        if (NULL == file) {
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+                "gzopen fails");
+        }
+        SET_ATTR_file(INTERP, SELF, file);
+        RETURN(PMC SELF);
+    }
+
+/*
+
+=item C<METHOD close()>
+
+Close the gziphandle.
+
+=cut
+
+*/
+    METHOD close() {
+        INTVAL status;
+        gzFile file;
+        GET_ATTR_file(INTERP, SELF, file);
+        status = gzclose(file);
+        RETURN(INTVAL status);
+    }
+
+/*
+
+=item C<METHOD eof()>
+
+Returns true if the filehandle is at end-of-file, returns false otherwise.
+
+=cut
+
+*/
+    METHOD eof() {
+        INTVAL status;
+        gzFile file;
+        GET_ATTR_file(INTERP, SELF, file);
+        status = gzeof(file);
+        RETURN(INTVAL status);
+    }
+
+/*
+
+=item C<METHOD flush()>
+
+Flushes the gziphandle.
+
+=cut
+
+*/
+    METHOD flush() {
+        INTVAL status;
+        gzFile file;
+        GET_ATTR_file(INTERP, SELF, file);
+        status = gzflush(file, Z_SYNC_FLUSH);
+        RETURN(INTVAL status);
+    }
+
+/*
+
+=item C<METHOD print([INTVAL|FLOATVAL|STRING *|PMC*] value)>
+
+Print the passed in integer, number, string, or PMC to the gziphandle.
+(Integers, numbers, and strings are auto-boxed as PMCs.)
+
+=cut
+
+*/
+    METHOD print(PMC *value) {
+        gzFile file;
+        STRING * const str = VTABLE_get_string(INTERP, value);
+        char *buf = Parrot_str_to_cstring(INTERP, str);
+        UINTVAL len =  Parrot_str_byte_length(INTERP, str);
+        GET_ATTR_file(INTERP, SELF, file);
+        (void)gzwrite(file, buf, len);
+        Parrot_str_free_cstring(buf);
+    }
+
+
+/*
+
+=item C<METHOD puts(STRING *value)>
+
+Print the string to the gziphandle.
+
+=cut
+
+*/
+    METHOD puts(STRING *value) {
+        INTVAL status;
+        gzFile file;
+        char *buf = Parrot_str_to_cstring(INTERP, value);
+        UINTVAL len =  Parrot_str_byte_length(INTERP, value);
+        GET_ATTR_file(INTERP, SELF, file);
+        status =  gzwrite(file, buf, len);
+        Parrot_str_free_cstring(buf);
+        RETURN(INTVAL status);
+    }
+
+/*
+
+=item C<METHOD read(INTVAL bytes)>
+
+Read the given number of bytes from the gziphandle and return them in a string.
+
+=cut
+
+*/
+    METHOD read(INTVAL length) {
+        int result;
+        gzFile file;
+        STRING *str = STRINGNULL;
+        char * const buf = mem_allocate_n_zeroed_typed(length, char);
+        GET_ATTR_file(INTERP, SELF, file);
+        result = gzread(file, buf, length);
+        if (result > 0) {
+            str = Parrot_str_new(INTERP, buf, result);
+        }
+        mem_sys_free(buf);
+        RETURN(STRING *str);
+    }
+
+/*
+
+=item C<METHOD is_tty()>
+
+GzipHandles are never tty's, returns false.
+
+=cut
+
+*/
+    METHOD is_tty() {
+        RETURN(INTVAL 0);
+    }
+
+/*
+
+=back
+
+=head2 Basic Methods
+
+=over 4
+
+=item C<METHOD version()>
+
+Returns a string with the zlib version.
+
+*/
+    METHOD version() {
+        STRING *version = Parrot_str_new_constant(INTERP, zlibVersion());
+        RETURN(STRING *version);
+    }
+
+    METHOD compress(STRING *str) {
+        int rc;
+        char *buf;
+        STRING *dst = NULL;
+        UINTVAL srcLen, bufSize, dstLen;
+        char *src = Parrot_str_to_cstring(INTERP, str);
+        if (NULL == src) {
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+                "failed to allocate");
+        }
+        srcLen = Parrot_str_byte_length(INTERP, str);
+        bufSize = 12 + srcLen + srcLen / 1000;
+        buf = mem_allocate_n_zeroed_typed(bufSize, char);
+        if (NULL == buf) {
+            Parrot_str_free_cstring(src);
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+                "failed to allocate");
+        }
+        rc = compress((Bytef *)buf, &dstLen, (const Bytef *)src, srcLen);
+        Parrot_str_free_cstring(src);
+        switch (rc) {
+          case Z_OK:
+            dst = Parrot_str_new(INTERP, buf, dstLen);
+            mem_sys_free(buf);
+            break;
+
+          case Z_MEM_ERROR:
+            mem_sys_free(buf);
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+                "not enough memory");
+            break;
+
+          case Z_BUF_ERROR:
+            mem_sys_free(buf);
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+                "output buffer error");
+            break;
+        }
+        RETURN(STRING *dst);
+    }
+
+/*
+
+=back
+
+=cut
+
+*/
+
+}
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
+

Modified: branches/runcore_purge/src/embed.c
==============================================================================
--- branches/runcore_purge/src/embed.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/embed.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -992,12 +992,12 @@
 
         /* Parrot_io_fprintf(interp, output, "%i < %i %i == %i \n", curr_mapping,
          * num_mappings, op_code_seq_num,
-         * interp->code->debugs->mappings[curr_mapping]->offset); */
+         * interp->code->debugs->mappings[curr_mapping].offset); */
 
         if (debugs && curr_mapping < num_mappings) {
-            if (op_code_seq_num == interp->code->debugs->mappings[curr_mapping]->offset) {
+            if (op_code_seq_num == interp->code->debugs->mappings[curr_mapping].offset) {
                 const int filename_const_offset =
-                    interp->code->debugs->mappings[curr_mapping]->filename;
+                    interp->code->debugs->mappings[curr_mapping].filename;
                 Parrot_io_fprintf(interp, output, "# Current Source Filename '%Ss'\n",
                         interp->code->const_table->constants[filename_const_offset]->u.string);
                 curr_mapping++;

Modified: branches/runcore_purge/src/hash.c
==============================================================================
--- branches/runcore_purge/src/hash.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/hash.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -183,7 +183,8 @@
         return 1;
 
     /* COWed strings */
-    if (Buffer_bufstart(s1) == Buffer_bufstart(s2) && s1->bufused == s2->bufused)
+    if (Buffer_bufstart(s1) == Buffer_bufstart(s2)
+    &&  s1->bufused == s2->bufused)
         return 0;
 
     return CHARSET_COMPARE(interp, s1, s2);
@@ -1323,13 +1324,14 @@
     /* When the hash is constant, check that the key and value are also
      * constant. */
     if (!PMC_IS_NULL(hash->container)
-            && PObj_constant_TEST(hash->container)) {
+    &&   PObj_constant_TEST(hash->container)) {
         if (hash->key_type == Hash_key_type_STRING
-                && !PObj_constant_TEST((PObj *)key))
+        && !PObj_constant_TEST((PObj *)key))
             Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
                 "Used non-constant key in constant hash.");
-        if (((hash->entry_type == enum_type_PMC) || (hash->entry_type == enum_type_STRING))
-                && !PObj_constant_TEST((PObj *)value))
+            if (((hash->entry_type == enum_type_PMC)
+            ||   (hash->entry_type == enum_type_STRING))
+            &&   !PObj_constant_TEST((PObj *)value))
             Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
                 "Used non-constant value in constant hash.");
     }
@@ -1434,7 +1436,7 @@
             break;
 
           case enum_type_STRING:
-            valtmp = (void *)Parrot_str_copy(interp, (STRING *)b->value);
+            valtmp = b->value;
             break;
 
           case enum_type_PMC:
@@ -1450,9 +1452,8 @@
                     "hash corruption: type = %d\n", hash->entry_type);
         };
 
-        if (key){
+        if (key)
             parrot_hash_put(interp, dest, key, valtmp);
-        }
     }
 }
 

Modified: branches/runcore_purge/src/hll.c
==============================================================================
--- branches/runcore_purge/src/hll.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/hll.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -521,11 +521,11 @@
         if (PMC_IS_NULL(ns_hash) ||
                 ns_hash->vtable->base_type == enum_class_Undef)
         {
-            STRING * const hll_name = Parrot_get_HLL_name(interp, hll_id);
+            STRING * hll_name = Parrot_get_HLL_name(interp, hll_id);
             if (!hll_name)
                 continue;
 
-            Parrot_str_downcase_inplace(interp, hll_name);
+            hll_name = Parrot_str_downcase(interp, hll_name);
 
             /* XXX as in Parrot_register_HLL() this needs to be fixed to use
              * the correct type of namespace. It's relatively easy to do that

Modified: branches/runcore_purge/src/interp/inter_misc.c
==============================================================================
--- branches/runcore_purge/src/interp/inter_misc.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/interp/inter_misc.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -277,9 +277,6 @@
       case CURRENT_CONT:
         {
             PMC * const cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
-            if (!PMC_IS_NULL(cont) && cont->vtable->base_type ==
-                    enum_class_RetContinuation)
-                return VTABLE_clone(interp, cont);
             return cont;
         }
       case CURRENT_OBJECT:

Modified: branches/runcore_purge/src/io/api.c
==============================================================================
--- branches/runcore_purge/src/io/api.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/io/api.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -366,7 +366,7 @@
                 "Cannot read from a closed filehandle");
 
         if (length == 0)
-            result = Parrot_str_copy(interp, string_orig);
+            result = string_orig;
         else {
             INTVAL read_length = length;
             const INTVAL orig_length = Parrot_str_byte_length(interp, string_orig);
@@ -377,8 +377,7 @@
             if (offset + read_length > orig_length)
                 read_length = orig_length - offset;
 
-            result = Parrot_str_substr(interp, string_orig, offset,
-                    read_length, NULL, 0);
+            result = Parrot_str_substr(interp, string_orig, offset, read_length);
             SETATTR_StringHandle_read_offset(interp, pmc, offset + read_length);
         }
     }
@@ -436,8 +435,7 @@
         else
             read_length = newline_pos - offset + 1; /* +1 to include the newline */
 
-        result = Parrot_str_substr(interp, result, offset,
-                read_length, NULL, 0);
+        result = Parrot_str_substr(interp, result, offset, read_length);
         SETATTR_StringHandle_read_offset(interp, pmc, newline_pos + 1);
     }
     else

Modified: branches/runcore_purge/src/io/buffer.c
==============================================================================
--- branches/runcore_purge/src/io/buffer.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/io/buffer.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -266,9 +266,10 @@
 
 */
 
+PARROT_WARN_UNUSED_RESULT
 size_t
 Parrot_io_read_buffer(PARROT_INTERP, ARGMOD(PMC *filehandle),
-              ARGIN(STRING **buf))
+              ARGMOD(STRING **buf))
 {
     ASSERT_ARGS(Parrot_io_read_buffer)
     unsigned char *out_buf, *buffer_start, *buffer_next, *buffer_end;
@@ -449,6 +450,7 @@
 
 */
 
+PARROT_WARN_UNUSED_RESULT
 size_t
 Parrot_io_readline_buffer(PARROT_INTERP, ARGMOD(PMC *filehandle), ARGOUT(STRING **buf))
 {

Modified: branches/runcore_purge/src/io/filehandle.c
==============================================================================
--- branches/runcore_purge/src/io/filehandle.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/io/filehandle.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -27,7 +27,8 @@
 
 =over 4
 
-=item C<INTVAL Parrot_io_parse_open_flags(PARROT_INTERP, STRING *mode_str)>
+=item C<INTVAL Parrot_io_parse_open_flags(PARROT_INTERP, const STRING
+*mode_str)>
 
 Parses a Parrot string for file open mode flags (C<r> for read, C<w> for write,
 C<a> for append, and C<p> for pipe) and returns the combined generic bit flags.
@@ -39,7 +40,7 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 INTVAL
-Parrot_io_parse_open_flags(PARROT_INTERP, ARGIN_NULLOK(STRING *mode_str))
+Parrot_io_parse_open_flags(PARROT_INTERP, ARGIN_NULLOK(const STRING *mode_str))
 {
     ASSERT_ARGS(Parrot_io_parse_open_flags)
     INTVAL i, mode_len;

Modified: branches/runcore_purge/src/io/utf8.c
==============================================================================
--- branches/runcore_purge/src/io/utf8.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/io/utf8.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -83,7 +83,10 @@
                 UNUSED(read);
 
                 s->strlen    = iter.charpos;
-                s            = Parrot_str_append(interp, s, s2);
+                s            = Parrot_str_concat(interp, s, s2);
+                /* String is updated. Poke into iterator to replace old string */
+                iter.str     = s;
+                *buf         = s;
                 len         += len2 + 1;
 
                 /* check last char */
@@ -116,8 +119,7 @@
     if (s->encoding == Parrot_utf8_encoding_ptr)
         return Parrot_io_write_buffer(interp, filehandle, s);
 
-    dest = Parrot_utf8_encoding_ptr->to_encoding(interp, s,
-            Parrot_gc_new_string_header(interp, 0));
+    dest = Parrot_utf8_encoding_ptr->to_encoding(interp, s);
     return Parrot_io_write_buffer(interp, filehandle, dest);
 }
 

Modified: branches/runcore_purge/src/io/win32.c
==============================================================================
--- branches/runcore_purge/src/io/win32.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/io/win32.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -660,8 +660,8 @@
     if (comspec == NULL)
         comspec = "cmd";
     auxcomm = Parrot_str_new(interp, comspec, 0);
-    auxcomm = Parrot_str_append(interp, auxcomm, Parrot_str_new(interp, " /c ", 0));
-    auxcomm = Parrot_str_append(interp, auxcomm, command);
+    auxcomm = Parrot_str_concat(interp, auxcomm, Parrot_str_new(interp, " /c ", 0));
+    auxcomm = Parrot_str_concat(interp, auxcomm, command);
     cmd = Parrot_str_to_cstring(interp, auxcomm);
     start.cb = sizeof start;
     GetStartupInfo(&start);

Modified: branches/runcore_purge/src/key.c
==============================================================================
--- branches/runcore_purge/src/key.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/key.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -444,8 +444,6 @@
         {
             STRING *s;
             GETATTR_Key_str_key(interp, key, s);
-            if (s)
-                s = Parrot_str_new_COW(interp, s);
             return s;
         }
       case KEY_string_FLAG | KEY_register_FLAG:
@@ -652,65 +650,65 @@
         switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) {
           case KEY_integer_FLAG:
             GETATTR_Key_int_key(interp, key, int_key);
-            value = Parrot_str_append(interp, value,
-                    Parrot_str_from_int(interp, int_key));
+            value = Parrot_str_concat(interp, value,
+                        Parrot_str_from_int(interp, int_key));
             break;
           case KEY_number_FLAG:
             GETATTR_Key_int_key(interp, key, int_key);
-            value = Parrot_str_append(interp, value,
-                    Parrot_str_from_num(interp, (FLOATVAL)int_key));
+            value = Parrot_str_concat(interp, value,
+                        Parrot_str_from_num(interp, (FLOATVAL)int_key));
             break;
           case KEY_string_FLAG:
             GETATTR_Key_str_key(interp, key, str_key);
-            value = Parrot_str_append(interp, value, quote);
-            value = Parrot_str_append(interp, value, str_key);
-            value = Parrot_str_append(interp, value, quote);
+            value = Parrot_str_concat(interp, value, quote);
+            value = Parrot_str_concat(interp, value, str_key);
+            value = Parrot_str_concat(interp, value, quote);
             break;
           case KEY_pmc_FLAG:
-            value = Parrot_str_append(interp, value,
-                    VTABLE_get_string(interp, key));
+            value = Parrot_str_concat(interp, value,
+                        VTABLE_get_string(interp, key));
             break;
           case KEY_integer_FLAG | KEY_register_FLAG:
             GETATTR_Key_int_key(interp, key, int_key);
-            value = Parrot_str_append(interp, value,
+            value = Parrot_str_concat(interp, value,
                         Parrot_str_from_int(interp,
                             REG_INT(interp, int_key)));
             break;
           case KEY_number_FLAG | KEY_register_FLAG:
             GETATTR_Key_int_key(interp, key, int_key);
-            value = Parrot_str_append(interp, value,
+            value = Parrot_str_concat(interp, value,
                         Parrot_str_from_num(interp,
                             REG_NUM(interp, int_key)));
             break;
           case KEY_string_FLAG | KEY_register_FLAG:
-            value = Parrot_str_append(interp, value, quote);
+            value = Parrot_str_concat(interp, value, quote);
             GETATTR_Key_int_key(interp, key, int_key);
-            value = Parrot_str_append(interp, value,
+            value = Parrot_str_concat(interp, value,
                     REG_STR(interp, int_key));
-            value = Parrot_str_append(interp, value, quote);
+            value = Parrot_str_concat(interp, value, quote);
             break;
           case KEY_pmc_FLAG | KEY_register_FLAG:
             {
                 PMC *reg;
                 GETATTR_Key_int_key(interp, key, int_key);
                 reg = REG_PMC(interp, int_key);
-                value           = Parrot_str_append(interp, value,
-                                    VTABLE_get_string(interp, reg));
+                value = Parrot_str_concat(interp, value,
+                            VTABLE_get_string(interp, reg));
             }
             break;
           default:
-            value = Parrot_str_append(interp, value, CONST_STRING(interp, "Key type unknown"));
+            value = Parrot_str_concat(interp, value, CONST_STRING(interp, "Key type unknown"));
             break;
         }
 
         GETATTR_Key_next_key(interp, key, next_key);
         if (next_key)
-            value = Parrot_str_append(interp, value, semicolon);
+            value = Parrot_str_concat(interp, value, semicolon);
 
         GETATTR_Key_next_key(interp, key, key);
     }
 
-    value = Parrot_str_append(interp, value, Parrot_str_new(interp, " ]", 2));
+    value = Parrot_str_concat(interp, value, Parrot_str_new(interp, " ]", 2));
     return value;
 }
 

Modified: branches/runcore_purge/src/library.c
==============================================================================
--- branches/runcore_purge/src/library.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/library.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -181,7 +181,7 @@
 
         versionlib = VTABLE_get_string_keyed_str(interp, config_hash, libkey);
         entry      = VTABLE_get_string_keyed_str(interp, config_hash, verkey);
-        versionlib = Parrot_str_append(interp, versionlib, entry);
+        versionlib = Parrot_str_concat(interp, versionlib, entry);
 
         if (!VTABLE_get_integer_keyed_str(interp, config_hash, installed))
             builddir = VTABLE_get_string_keyed_str(interp,
@@ -202,15 +202,15 @@
         }
     }
     if (!STRING_IS_NULL(builddir)) {
-        entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/"), 0);
+        entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/"));
         VTABLE_push_string(interp, paths, entry);
-        entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/include/"), 0);
+        entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/include/"));
         VTABLE_push_string(interp, paths, entry);
     }
     entry = CONST_STRING(interp, "./");
     VTABLE_push_string(interp, paths, entry);
     if (!STRING_IS_NULL(versionlib)) {
-        entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/include/"), 0);
+        entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/include/"));
         VTABLE_push_string(interp, paths, entry);
     }
 
@@ -227,13 +227,13 @@
         }
     }
     if (!STRING_IS_NULL(builddir)) {
-        entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/library/"), 0);
+        entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/library/"));
         VTABLE_push_string(interp, paths, entry);
     }
     entry = CONST_STRING(interp, "./");
     VTABLE_push_string(interp, paths, entry);
     if (!STRING_IS_NULL(versionlib)) {
-        entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/library/"), 0);
+        entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/library/"));
         VTABLE_push_string(interp, paths, entry);
     }
 
@@ -242,13 +242,13 @@
     VTABLE_set_pmc_keyed_int(interp, lib_paths,
             PARROT_LIB_PATH_LANG, paths);
     if (!STRING_IS_NULL(builddir)) {
-        entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/languages/"), 0);
+        entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/languages/"));
         VTABLE_push_string(interp, paths, entry);
     }
     entry = CONST_STRING(interp, "./");
     VTABLE_push_string(interp, paths, entry);
     if (!STRING_IS_NULL(versionlib)) {
-        entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/languages/"), 0);
+        entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/languages/"));
         VTABLE_push_string(interp, paths, entry);
     }
 
@@ -257,13 +257,13 @@
     VTABLE_set_pmc_keyed_int(interp, lib_paths,
             PARROT_LIB_PATH_DYNEXT, paths);
     if (!STRING_IS_NULL(builddir)) {
-        entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/dynext/"), 0);
+        entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/dynext/"));
         VTABLE_push_string(interp, paths, entry);
     }
     entry = CONST_STRING(interp, "dynext/");
     VTABLE_push_string(interp, paths, entry);
     if (!STRING_IS_NULL(versionlib)) {
-        entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/dynext/"), 0);
+        entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/dynext/"));
         VTABLE_push_string(interp, paths, entry);
     }
 
@@ -419,7 +419,7 @@
 
     STRING * const nul = string_chr(interp, '\0');
 
-    path = Parrot_str_append(interp, path, nul);
+    path = Parrot_str_concat(interp, path, nul);
     path->bufused--;
     path->strlen--;
 
@@ -454,7 +454,7 @@
     /* make sure the path has a trailing slash before appending the file */
     if (Parrot_str_indexed(interp, path , path->strlen - 1)
          != Parrot_str_indexed(interp, path_separator_string, 0))
-        path = Parrot_str_append(interp, path , path_separator_string);
+        path = Parrot_str_concat(interp, path , path_separator_string);
 
     return path;
 }
@@ -479,7 +479,7 @@
 {
     ASSERT_ARGS(path_append)
     l_path = path_guarantee_trailing_separator(interp, l_path);
-    l_path = Parrot_str_append(interp, l_path, r_path);
+    l_path = Parrot_str_concat(interp, l_path, r_path);
 
     return l_path;
 }
@@ -505,9 +505,9 @@
     ASSERT_ARGS(path_concat)
     STRING* join;
 
-    join = Parrot_str_copy(interp, l_path);
+    join = l_path;
     join = path_guarantee_trailing_separator(interp, join);
-    join = Parrot_str_append(interp, join, r_path);
+    join = Parrot_str_concat(interp, join, r_path);
 
     return join;
 }
@@ -532,9 +532,7 @@
     ASSERT_ARGS(try_load_path)
     STRING *final;
 
-    final = Parrot_str_copy(interp, path);
-
-    final = path_finalize(interp, final);
+    final = path_finalize(interp, path);
 
     if (Parrot_stat_info_intval(interp, final, STAT_EXISTS)) {
         return final;
@@ -566,7 +564,7 @@
     STRING * const pir_extension      = CONST_STRING(interp, ".pir");
     STRING * const pasm_extension     = CONST_STRING(interp, ".pasm");
 
-    test_path = Parrot_str_copy(interp, path);
+    test_path = path;
 
     /* First try the path as given. */
     result = try_load_path(interp, test_path);
@@ -582,11 +580,11 @@
 
     if (!STRING_IS_NULL(test_path)) {
         if (Parrot_str_byte_length(interp, test_path) > 4) {
-            STRING *orig_ext = Parrot_str_substr(interp, test_path, -4, 4, NULL, 0);
+            STRING *orig_ext = Parrot_str_substr(interp, test_path, -4, 4);
             /* First try substituting .pbc for the .pir extension */
             if (Parrot_str_equal(interp, orig_ext, pir_extension)) {
                 STRING * const without_ext = Parrot_str_chopn(interp, test_path, 4);
-                test_path = Parrot_str_append(interp, without_ext, bytecode_extension);
+                test_path = Parrot_str_concat(interp, without_ext, bytecode_extension);
                 result = try_load_path(interp, test_path);
                 if (result)
                     return result;
@@ -594,12 +592,12 @@
             /* Next try substituting .pir, then .pasm for the .pbc extension */
             else if (Parrot_str_equal(interp, orig_ext, bytecode_extension)) {
                 STRING * const without_ext = Parrot_str_chopn(interp, test_path, 4);
-                test_path = Parrot_str_append(interp, without_ext, pir_extension);
+                test_path = Parrot_str_concat(interp, without_ext, pir_extension);
                 result = try_load_path(interp, test_path);
                 if (result)
                     return result;
 
-                test_path = Parrot_str_append(interp, without_ext, pasm_extension);
+                test_path = Parrot_str_concat(interp, without_ext, pasm_extension);
                 result = try_load_path(interp, test_path);
                 if (result)
                     return result;
@@ -609,10 +607,10 @@
 
         /* Finally, try substituting .pbc for the .pasm extension. */
         if (Parrot_str_byte_length(interp, test_path) > 5) {
-            STRING * const orig_ext = Parrot_str_substr(interp, test_path, -5, 5, NULL, 0);
+            STRING * const orig_ext = Parrot_str_substr(interp, test_path, -5, 5);
             if (Parrot_str_equal(interp, orig_ext, pasm_extension)) {
                 STRING * const without_ext = Parrot_str_chopn(interp, test_path, 5);
-                test_path = Parrot_str_append(interp, without_ext, bytecode_extension);
+                test_path = Parrot_str_concat(interp, without_ext, bytecode_extension);
                 result = try_load_path(interp, test_path);
                 if (result)
                     return result;
@@ -717,8 +715,7 @@
         STRING * const path = VTABLE_get_string_keyed_int(interp, paths, i);
         STRING *found_name;
 
-        full_name = Parrot_str_copy(interp, path);
-        full_name = path_append(interp, full_name, file);
+        full_name = path_append(interp, path, file);
 
         found_name =
             (type & PARROT_RUNTIME_FT_DYNEXT)
@@ -917,23 +914,22 @@
     ++pos_dot;
     ++pos_sl;
     if (pos_sl && pos_dot) {
-        stem = Parrot_str_substr(interp, in, pos_sl, pos_dot - pos_sl - 1,
-                NULL, 0);
-        *wo_ext = Parrot_str_substr(interp, in, 0, pos_dot - 1, NULL, 0);
-        *ext = Parrot_str_substr(interp, in, pos_dot, len - pos_dot, NULL, 0);
+        stem = Parrot_str_substr(interp, in, pos_sl, pos_dot - pos_sl - 1);
+        *wo_ext = Parrot_str_substr(interp, in, 0, pos_dot - 1);
+        *ext = Parrot_str_substr(interp, in, pos_dot, len - pos_dot);
     }
     else if (pos_dot) {
-        stem = Parrot_str_substr(interp, in, 0, pos_dot - 1, NULL, 0);
+        stem = Parrot_str_substr(interp, in, 0, pos_dot - 1);
         *wo_ext = stem;
-        *ext = Parrot_str_substr(interp, in, pos_dot, len - pos_dot, NULL, 0);
+        *ext = Parrot_str_substr(interp, in, pos_dot, len - pos_dot);
     }
     else if (pos_sl) {
-        stem = Parrot_str_substr(interp, in, pos_sl, len - pos_sl, NULL, 0);
-        *wo_ext = Parrot_str_copy(interp, in);
+        stem = Parrot_str_substr(interp, in, pos_sl, len - pos_sl);
+        *wo_ext = in;
         *ext = NULL;
     }
     else {
-        stem = Parrot_str_copy(interp, in);
+        stem = in;
         *wo_ext = stem;
         *ext = NULL;
     }

Modified: branches/runcore_purge/src/ops/bit.ops
==============================================================================
--- branches/runcore_purge/src/ops/bit.ops	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/ops/bit.ops	Sat Apr 24 00:51:33 2010	(r45948)
@@ -109,37 +109,37 @@
 
 =cut
 
-inline op bands(inout STR, in STR) :base_core {
-    Parrot_str_bitwise_and(interp, $1, $2, &$1);
+inline op bands(inout STR, in STR) :base_core :deprecated {
+    $1 = Parrot_str_bitwise_and(interp, $1, $2);
 }
 
 inline op bands(invar PMC, in STR) :base_core {
     STRING * const a = VTABLE_get_string(interp, $1);
-    STRING * const b = Parrot_str_bitwise_and(interp, a, $2, NULL);
+    STRING * const b = Parrot_str_bitwise_and(interp, a, $2);
     VTABLE_set_string_native(interp, $1, b);
 }
 
 inline op bands(invar PMC, invar PMC) :base_core {
     STRING * a = VTABLE_get_string(interp, $1);
     STRING * const b = VTABLE_get_string(interp, $2);
-    a = Parrot_str_bitwise_and(interp, a, b, NULL);
+    a = Parrot_str_bitwise_and(interp, a, b);
     VTABLE_set_string_native(interp, $1, a);
 }
 
 inline op bands(out STR, in STR, in STR) :base_core {
-    $1 = Parrot_str_bitwise_and(interp, $2, $3, NULL);
+    $1 = Parrot_str_bitwise_and(interp, $2, $3);
 }
 
 inline op bands(invar PMC, invar PMC, in STR) :base_core {
     STRING * const a = VTABLE_get_string(interp, $2);
-    STRING * const b = Parrot_str_bitwise_and(interp, a, $3, NULL);
+    STRING * const b = Parrot_str_bitwise_and(interp, a, $3);
     VTABLE_set_string_native(interp, $1, b);
 }
 
 inline op bands(invar PMC, invar PMC, invar PMC) :base_core {
     STRING * const a = VTABLE_get_string(interp, $2);
     STRING * const b = VTABLE_get_string(interp, $3);
-    STRING * const c = Parrot_str_bitwise_and(interp, a, b, NULL);
+    STRING * const c = Parrot_str_bitwise_and(interp, a, b);
     VTABLE_set_string_native(interp, $1, c);
 }
 
@@ -187,23 +187,23 @@
 
 =cut
 
-inline op bnots(inout STR) :base_core {
-    Parrot_str_bitwise_not(interp, $1, &$1);
+inline op bnots(inout STR) :base_core :deprecated {
+    $1 = Parrot_str_bitwise_not(interp, $1);
 }
 
 inline op bnots(out STR, in STR) :base_core {
-    Parrot_str_bitwise_not(interp, $2, &$1);
+    $1 = Parrot_str_bitwise_not(interp, $2);
 }
 
 inline op bnots(invar PMC) :base_core {
     STRING * const a = VTABLE_get_string(interp, $1);
-    STRING * const b = Parrot_str_bitwise_not(interp, a, NULL);
+    STRING * const b = Parrot_str_bitwise_not(interp, a);
     VTABLE_set_string_native(interp, $1, b);
 }
 
 inline op bnots(out PMC, invar PMC) :base_core {
     STRING * const a = VTABLE_get_string(interp, $2);
-    STRING * const b = Parrot_str_bitwise_not(interp, a, NULL);
+    STRING * const b = Parrot_str_bitwise_not(interp, a);
     VTABLE_set_string_native(interp, $1, b);
 }
 
@@ -279,37 +279,37 @@
 
 =cut
 
-inline op bors(inout STR, in STR) :base_core {
-    Parrot_str_bitwise_or(interp, $1, $2, &$1);
+inline op bors(inout STR, in STR) :base_core :deprecated {
+    $1 = Parrot_str_bitwise_or(interp, $1, $2);
 }
 
 inline op bors(invar PMC, in STR) :base_core {
     STRING * const a = VTABLE_get_string(interp, $1);
-    STRING * const b = Parrot_str_bitwise_or(interp, a, $2, NULL);
+    STRING * const b = Parrot_str_bitwise_or(interp, a, $2);
     VTABLE_set_string_native(interp, $1, b);
 }
 
 inline op bors(invar PMC, invar PMC) :base_core {
     STRING * const a = VTABLE_get_string(interp, $1);
     STRING * const b = VTABLE_get_string(interp, $2);
-    STRING * const c = Parrot_str_bitwise_or(interp, a, b, NULL);
+    STRING * const c = Parrot_str_bitwise_or(interp, a, b);
     VTABLE_set_string_native(interp, $1, c);
 }
 
 inline op bors(out STR, in STR, in STR) :base_core {
-    $1 = Parrot_str_bitwise_or(interp, $2, $3, NULL);
+    $1 = Parrot_str_bitwise_or(interp, $2, $3);
 }
 
 inline op bors(invar PMC, invar PMC, in STR) :base_core {
     STRING * const b = VTABLE_get_string(interp, $2);
-    STRING * const c = Parrot_str_bitwise_or(interp, b, $3, NULL);
+    STRING * const c = Parrot_str_bitwise_or(interp, b, $3);
     VTABLE_set_string_native(interp, $1, c);
 }
 
 inline op bors(invar PMC, invar PMC, invar PMC) :base_core {
     STRING * const a = VTABLE_get_string(interp, $2);
     STRING * const b = VTABLE_get_string(interp, $3);
-    STRING * const c = Parrot_str_bitwise_or(interp, a, b, NULL);
+    STRING * const c = Parrot_str_bitwise_or(interp, a, b);
     VTABLE_set_string_native(interp, $1, c);
 }
 
@@ -579,37 +579,37 @@
 
 =cut
 
-inline op bxors(inout STR, in STR) :base_core {
-    Parrot_str_bitwise_xor(interp, $1, $2, &$1);
+inline op bxors(inout STR, in STR) :base_core :deprecated {
+    $1 = Parrot_str_bitwise_xor(interp, $1, $2);
 }
 
 inline op bxors(invar PMC, in STR) :base_core {
     STRING * const a = VTABLE_get_string(interp, $1);
-    STRING * const b = Parrot_str_bitwise_xor(interp, a, $2, NULL);
+    STRING * const b = Parrot_str_bitwise_xor(interp, a, $2);
     VTABLE_set_string_native(interp, $1, b);
 }
 
 inline op bxors(invar PMC, invar PMC) :base_core {
     STRING * const a = VTABLE_get_string(interp, $1);
     STRING * const b = VTABLE_get_string(interp, $2);
-    STRING * const c = Parrot_str_bitwise_xor(interp, a, b, NULL);
+    STRING * const c = Parrot_str_bitwise_xor(interp, a, b);
     VTABLE_set_string_native(interp, $1, c);
 }
 
 inline op bxors(out STR, in STR, in STR) :base_core {
-    $1 = Parrot_str_bitwise_xor(interp, $2, $3, NULL);
+    $1 = Parrot_str_bitwise_xor(interp, $2, $3);
 }
 
 inline op bxors(invar PMC, invar PMC, in STR) :base_core {
     STRING * const a = VTABLE_get_string(interp, $2);
-    STRING * const b = Parrot_str_bitwise_xor(interp, a, $3, NULL);
+    STRING * const b = Parrot_str_bitwise_xor(interp, a, $3);
     VTABLE_set_string_native(interp, $1, b);
 }
 
 inline op bxors(invar PMC, invar PMC, invar PMC) :base_core {
     STRING * const a = VTABLE_get_string(interp, $2);
     STRING * const b = VTABLE_get_string(interp, $3);
-    STRING * const c = Parrot_str_bitwise_xor(interp, a, b, NULL);
+    STRING * const c = Parrot_str_bitwise_xor(interp, a, b);
     VTABLE_set_string_native(interp, $1, c);
 }
 

Modified: branches/runcore_purge/src/ops/core.ops
==============================================================================
--- branches/runcore_purge/src/ops/core.ops	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/ops/core.ops	Sat Apr 24 00:51:33 2010	(r45948)
@@ -746,7 +746,9 @@
     PMC * except = $1;
     opcode_t *dest;
     opcode_t * const ret    = expr NEXT();
-    PMC      * const resume = new_ret_continuation_pmc(interp, ret);
+    PMC      * const resume = pmc_new(interp, enum_class_Continuation);
+
+    VTABLE_set_pointer(interp, resume, ret);
 
     if (PMC_IS_NULL(except) || except->vtable->base_type != enum_class_Exception)
         except = Parrot_ex_build_exception(interp, EXCEPT_fatal,
@@ -792,10 +794,12 @@
 inline op die(in STR) :flow {
     opcode_t        *dest;
     opcode_t * const ret       = expr NEXT();
-    PMC      * const resume    = new_ret_continuation_pmc(interp, ret);
+    PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
     PMC      * const exception = Parrot_ex_build_exception(interp, EXCEPT_error,
                                     CONTROL_ERROR, $1);
 
+    VTABLE_set_pointer(interp, resume, ret);
+
     VTABLE_set_attr_str(interp, exception,
                         Parrot_str_new_constant(interp, "resume"), resume);
     dest = Parrot_ex_throw_from_op(interp, exception, ret);
@@ -805,11 +809,13 @@
 inline op die(in PMC) :flow {
     opcode_t        *dest;
     opcode_t * const ret       = expr NEXT();
-    PMC      * const resume    = new_ret_continuation_pmc(interp, ret);
+    PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
     STRING   * const msg       = PMC_IS_NULL($1) ? NULL : VTABLE_get_string(interp, $1);
     PMC      * const exception =
         Parrot_ex_build_exception(interp, EXCEPT_error, CONTROL_ERROR, msg);
 
+    VTABLE_set_pointer(interp, resume, ret);
+
     VTABLE_set_attr_str(interp, exception,
                         Parrot_str_new_constant(interp, "resume"), resume);
     dest = Parrot_ex_throw_from_op(interp, exception, ret);
@@ -831,9 +837,11 @@
 inline op exit(in INT) :flow {
     opcode_t        *dest;
     opcode_t * const ret       = expr NEXT();
-    PMC      * const resume    = new_ret_continuation_pmc(interp, ret);
+    PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
     PMC      * const exception = Parrot_ex_build_exception(interp, EXCEPT_exit, $1, NULL);
 
+    VTABLE_set_pointer(interp, resume, ret);
+
     VTABLE_set_attr_str(interp, exception,
                         Parrot_str_new_constant(interp, "resume"), resume);
     VTABLE_set_integer_keyed_str(interp, exception,

Modified: branches/runcore_purge/src/ops/ops.num
==============================================================================
--- branches/runcore_purge/src/ops/ops.num	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/ops/ops.num	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1087,193 +1087,209 @@
 substr_s_p_ic_i                1063
 substr_s_p_i_ic                1064
 substr_s_p_ic_ic               1065
-index_i_s_s                    1066
-index_i_sc_s                   1067
-index_i_s_sc                   1068
-index_i_sc_sc                  1069
-index_i_s_s_i                  1070
-index_i_sc_s_i                 1071
-index_i_s_sc_i                 1072
-index_i_sc_sc_i                1073
-index_i_s_s_ic                 1074
-index_i_sc_s_ic                1075
-index_i_s_sc_ic                1076
-index_i_sc_sc_ic               1077
-sprintf_s_s_p                  1078
-sprintf_s_sc_p                 1079
-sprintf_p_p_p                  1080
-new_s                          1081
-new_s_i                        1082
-new_s_ic                       1083
-stringinfo_i_s_i               1084
-stringinfo_i_sc_i              1085
-stringinfo_i_s_ic              1086
-stringinfo_i_sc_ic             1087
-upcase_s_s                     1088
-upcase_s_sc                    1089
-upcase_s                       1090
-downcase_s_s                   1091
-downcase_s_sc                  1092
-downcase_s                     1093
-titlecase_s_s                  1094
-titlecase_s_sc                 1095
-titlecase_s                    1096
-join_s_s_p                     1097
-join_s_sc_p                    1098
-split_p_s_s                    1099
-split_p_sc_s                   1100
-split_p_s_sc                   1101
-split_p_sc_sc                  1102
-charset_i_s                    1103
-charset_i_sc                   1104
-charsetname_s_i                1105
-charsetname_s_ic               1106
-find_charset_i_s               1107
-find_charset_i_sc              1108
-trans_charset_s_i              1109
-trans_charset_s_ic             1110
-trans_charset_s_s_i            1111
-trans_charset_s_sc_i           1112
-trans_charset_s_s_ic           1113
-trans_charset_s_sc_ic          1114
-encoding_i_s                   1115
-encoding_i_sc                  1116
-encodingname_s_i               1117
-encodingname_s_ic              1118
-find_encoding_i_s              1119
-find_encoding_i_sc             1120
-trans_encoding_s_i             1121
-trans_encoding_s_ic            1122
-trans_encoding_s_s_i           1123
-trans_encoding_s_sc_i          1124
-trans_encoding_s_s_ic          1125
-trans_encoding_s_sc_ic         1126
-is_cclass_i_i_s_i              1127
-is_cclass_i_ic_s_i             1128
-is_cclass_i_i_sc_i             1129
-is_cclass_i_ic_sc_i            1130
-is_cclass_i_i_s_ic             1131
-is_cclass_i_ic_s_ic            1132
-is_cclass_i_i_sc_ic            1133
-is_cclass_i_ic_sc_ic           1134
-find_cclass_i_i_s_i_i          1135
-find_cclass_i_ic_s_i_i         1136
-find_cclass_i_i_sc_i_i         1137
-find_cclass_i_ic_sc_i_i        1138
-find_cclass_i_i_s_ic_i         1139
-find_cclass_i_ic_s_ic_i        1140
-find_cclass_i_i_sc_ic_i        1141
-find_cclass_i_ic_sc_ic_i       1142
-find_cclass_i_i_s_i_ic         1143
-find_cclass_i_ic_s_i_ic        1144
-find_cclass_i_i_sc_i_ic        1145
-find_cclass_i_ic_sc_i_ic       1146
-find_cclass_i_i_s_ic_ic        1147
-find_cclass_i_ic_s_ic_ic       1148
-find_cclass_i_i_sc_ic_ic       1149
-find_cclass_i_ic_sc_ic_ic      1150
-find_not_cclass_i_i_s_i_i      1151
-find_not_cclass_i_ic_s_i_i     1152
-find_not_cclass_i_i_sc_i_i     1153
-find_not_cclass_i_ic_sc_i_i    1154
-find_not_cclass_i_i_s_ic_i     1155
-find_not_cclass_i_ic_s_ic_i    1156
-find_not_cclass_i_i_sc_ic_i    1157
-find_not_cclass_i_ic_sc_ic_i   1158
-find_not_cclass_i_i_s_i_ic     1159
-find_not_cclass_i_ic_s_i_ic    1160
-find_not_cclass_i_i_sc_i_ic    1161
-find_not_cclass_i_ic_sc_i_ic   1162
-find_not_cclass_i_i_s_ic_ic    1163
-find_not_cclass_i_ic_s_ic_ic   1164
-find_not_cclass_i_i_sc_ic_ic   1165
-find_not_cclass_i_ic_sc_ic_ic  1166
-escape_s_s                     1167
-compose_s_s                    1168
-compose_s_sc                   1169
-spawnw_i_s                     1170
-spawnw_i_sc                    1171
-spawnw_i_p                     1172
-err_i                          1173
-err_s                          1174
-err_s_i                        1175
-err_s_ic                       1176
-time_i                         1177
-time_n                         1178
-gmtime_s_i                     1179
-gmtime_s_ic                    1180
-localtime_s_i                  1181
-localtime_s_ic                 1182
-decodetime_p_i                 1183
-decodetime_p_ic                1184
-decodelocaltime_p_i            1185
-decodelocaltime_p_ic           1186
-sysinfo_s_i                    1187
-sysinfo_s_ic                   1188
-sysinfo_i_i                    1189
-sysinfo_i_ic                   1190
-sleep_i                        1191
-sleep_ic                       1192
-sleep_n                        1193
-sleep_nc                       1194
-sizeof_i_i                     1195
-sizeof_i_ic                    1196
-store_lex_s_p                  1197
-store_lex_sc_p                 1198
-store_dynamic_lex_s_p          1199
-store_dynamic_lex_sc_p         1200
-find_lex_p_s                   1201
-find_lex_p_sc                  1202
-find_dynamic_lex_p_s           1203
-find_dynamic_lex_p_sc          1204
-find_caller_lex_p_s            1205
-find_caller_lex_p_sc           1206
-get_namespace_p                1207
-get_namespace_p_p              1208
-get_namespace_p_pc             1209
-get_hll_namespace_p            1210
-get_hll_namespace_p_p          1211
-get_hll_namespace_p_pc         1212
-get_root_namespace_p           1213
-get_root_namespace_p_p         1214
-get_root_namespace_p_pc        1215
-get_global_p_s                 1216
-get_global_p_sc                1217
-get_global_p_p_s               1218
-get_global_p_pc_s              1219
-get_global_p_p_sc              1220
-get_global_p_pc_sc             1221
-get_hll_global_p_s             1222
-get_hll_global_p_sc            1223
-get_hll_global_p_p_s           1224
-get_hll_global_p_pc_s          1225
-get_hll_global_p_p_sc          1226
-get_hll_global_p_pc_sc         1227
-get_root_global_p_s            1228
-get_root_global_p_sc           1229
-get_root_global_p_p_s          1230
-get_root_global_p_pc_s         1231
-get_root_global_p_p_sc         1232
-get_root_global_p_pc_sc        1233
-set_global_s_p                 1234
-set_global_sc_p                1235
-set_global_p_s_p               1236
-set_global_pc_s_p              1237
-set_global_p_sc_p              1238
-set_global_pc_sc_p             1239
-set_hll_global_s_p             1240
-set_hll_global_sc_p            1241
-set_hll_global_p_s_p           1242
-set_hll_global_pc_s_p          1243
-set_hll_global_p_sc_p          1244
-set_hll_global_pc_sc_p         1245
-set_root_global_s_p            1246
-set_root_global_sc_p           1247
-set_root_global_p_s_p          1248
-set_root_global_pc_s_p         1249
-set_root_global_p_sc_p         1250
-set_root_global_pc_sc_p        1251
-find_name_p_s                  1252
-find_name_p_sc                 1253
-find_sub_not_null_p_s          1254
-find_sub_not_null_p_sc         1255
+replace_s_s_i_i_s              1066
+replace_s_sc_i_i_s             1067
+replace_s_s_ic_i_s             1068
+replace_s_sc_ic_i_s            1069
+replace_s_s_i_ic_s             1070
+replace_s_sc_i_ic_s            1071
+replace_s_s_ic_ic_s            1072
+replace_s_sc_ic_ic_s           1073
+replace_s_s_i_i_sc             1074
+replace_s_sc_i_i_sc            1075
+replace_s_s_ic_i_sc            1076
+replace_s_sc_ic_i_sc           1077
+replace_s_s_i_ic_sc            1078
+replace_s_sc_i_ic_sc           1079
+replace_s_s_ic_ic_sc           1080
+replace_s_sc_ic_ic_sc          1081
+index_i_s_s                    1082
+index_i_sc_s                   1083
+index_i_s_sc                   1084
+index_i_sc_sc                  1085
+index_i_s_s_i                  1086
+index_i_sc_s_i                 1087
+index_i_s_sc_i                 1088
+index_i_sc_sc_i                1089
+index_i_s_s_ic                 1090
+index_i_sc_s_ic                1091
+index_i_s_sc_ic                1092
+index_i_sc_sc_ic               1093
+sprintf_s_s_p                  1094
+sprintf_s_sc_p                 1095
+sprintf_p_p_p                  1096
+new_s                          1097
+new_s_i                        1098
+new_s_ic                       1099
+stringinfo_i_s_i               1100
+stringinfo_i_sc_i              1101
+stringinfo_i_s_ic              1102
+stringinfo_i_sc_ic             1103
+upcase_s_s                     1104
+upcase_s_sc                    1105
+upcase_s                       1106
+downcase_s_s                   1107
+downcase_s_sc                  1108
+downcase_s                     1109
+titlecase_s_s                  1110
+titlecase_s_sc                 1111
+titlecase_s                    1112
+join_s_s_p                     1113
+join_s_sc_p                    1114
+split_p_s_s                    1115
+split_p_sc_s                   1116
+split_p_s_sc                   1117
+split_p_sc_sc                  1118
+charset_i_s                    1119
+charset_i_sc                   1120
+charsetname_s_i                1121
+charsetname_s_ic               1122
+find_charset_i_s               1123
+find_charset_i_sc              1124
+trans_charset_s_i              1125
+trans_charset_s_ic             1126
+trans_charset_s_s_i            1127
+trans_charset_s_sc_i           1128
+trans_charset_s_s_ic           1129
+trans_charset_s_sc_ic          1130
+encoding_i_s                   1131
+encoding_i_sc                  1132
+encodingname_s_i               1133
+encodingname_s_ic              1134
+find_encoding_i_s              1135
+find_encoding_i_sc             1136
+trans_encoding_s_i             1137
+trans_encoding_s_ic            1138
+trans_encoding_s_s_i           1139
+trans_encoding_s_sc_i          1140
+trans_encoding_s_s_ic          1141
+trans_encoding_s_sc_ic         1142
+is_cclass_i_i_s_i              1143
+is_cclass_i_ic_s_i             1144
+is_cclass_i_i_sc_i             1145
+is_cclass_i_ic_sc_i            1146
+is_cclass_i_i_s_ic             1147
+is_cclass_i_ic_s_ic            1148
+is_cclass_i_i_sc_ic            1149
+is_cclass_i_ic_sc_ic           1150
+find_cclass_i_i_s_i_i          1151
+find_cclass_i_ic_s_i_i         1152
+find_cclass_i_i_sc_i_i         1153
+find_cclass_i_ic_sc_i_i        1154
+find_cclass_i_i_s_ic_i         1155
+find_cclass_i_ic_s_ic_i        1156
+find_cclass_i_i_sc_ic_i        1157
+find_cclass_i_ic_sc_ic_i       1158
+find_cclass_i_i_s_i_ic         1159
+find_cclass_i_ic_s_i_ic        1160
+find_cclass_i_i_sc_i_ic        1161
+find_cclass_i_ic_sc_i_ic       1162
+find_cclass_i_i_s_ic_ic        1163
+find_cclass_i_ic_s_ic_ic       1164
+find_cclass_i_i_sc_ic_ic       1165
+find_cclass_i_ic_sc_ic_ic      1166
+find_not_cclass_i_i_s_i_i      1167
+find_not_cclass_i_ic_s_i_i     1168
+find_not_cclass_i_i_sc_i_i     1169
+find_not_cclass_i_ic_sc_i_i    1170
+find_not_cclass_i_i_s_ic_i     1171
+find_not_cclass_i_ic_s_ic_i    1172
+find_not_cclass_i_i_sc_ic_i    1173
+find_not_cclass_i_ic_sc_ic_i   1174
+find_not_cclass_i_i_s_i_ic     1175
+find_not_cclass_i_ic_s_i_ic    1176
+find_not_cclass_i_i_sc_i_ic    1177
+find_not_cclass_i_ic_sc_i_ic   1178
+find_not_cclass_i_i_s_ic_ic    1179
+find_not_cclass_i_ic_s_ic_ic   1180
+find_not_cclass_i_i_sc_ic_ic   1181
+find_not_cclass_i_ic_sc_ic_ic  1182
+escape_s_s                     1183
+compose_s_s                    1184
+compose_s_sc                   1185
+spawnw_i_s                     1186
+spawnw_i_sc                    1187
+spawnw_i_p                     1188
+err_i                          1189
+err_s                          1190
+err_s_i                        1191
+err_s_ic                       1192
+time_i                         1193
+time_n                         1194
+gmtime_s_i                     1195
+gmtime_s_ic                    1196
+localtime_s_i                  1197
+localtime_s_ic                 1198
+decodetime_p_i                 1199
+decodetime_p_ic                1200
+decodelocaltime_p_i            1201
+decodelocaltime_p_ic           1202
+sysinfo_s_i                    1203
+sysinfo_s_ic                   1204
+sysinfo_i_i                    1205
+sysinfo_i_ic                   1206
+sleep_i                        1207
+sleep_ic                       1208
+sleep_n                        1209
+sleep_nc                       1210
+sizeof_i_i                     1211
+sizeof_i_ic                    1212
+store_lex_s_p                  1213
+store_lex_sc_p                 1214
+store_dynamic_lex_s_p          1215
+store_dynamic_lex_sc_p         1216
+find_lex_p_s                   1217
+find_lex_p_sc                  1218
+find_dynamic_lex_p_s           1219
+find_dynamic_lex_p_sc          1220
+find_caller_lex_p_s            1221
+find_caller_lex_p_sc           1222
+get_namespace_p                1223
+get_namespace_p_p              1224
+get_namespace_p_pc             1225
+get_hll_namespace_p            1226
+get_hll_namespace_p_p          1227
+get_hll_namespace_p_pc         1228
+get_root_namespace_p           1229
+get_root_namespace_p_p         1230
+get_root_namespace_p_pc        1231
+get_global_p_s                 1232
+get_global_p_sc                1233
+get_global_p_p_s               1234
+get_global_p_pc_s              1235
+get_global_p_p_sc              1236
+get_global_p_pc_sc             1237
+get_hll_global_p_s             1238
+get_hll_global_p_sc            1239
+get_hll_global_p_p_s           1240
+get_hll_global_p_pc_s          1241
+get_hll_global_p_p_sc          1242
+get_hll_global_p_pc_sc         1243
+get_root_global_p_s            1244
+get_root_global_p_sc           1245
+get_root_global_p_p_s          1246
+get_root_global_p_pc_s         1247
+get_root_global_p_p_sc         1248
+get_root_global_p_pc_sc        1249
+set_global_s_p                 1250
+set_global_sc_p                1251
+set_global_p_s_p               1252
+set_global_pc_s_p              1253
+set_global_p_sc_p              1254
+set_global_pc_sc_p             1255
+set_hll_global_s_p             1256
+set_hll_global_sc_p            1257
+set_hll_global_p_s_p           1258
+set_hll_global_pc_s_p          1259
+set_hll_global_p_sc_p          1260
+set_hll_global_pc_sc_p         1261
+set_root_global_s_p            1262
+set_root_global_sc_p           1263
+set_root_global_p_s_p          1264
+set_root_global_pc_s_p         1265
+set_root_global_p_sc_p         1266
+set_root_global_pc_sc_p        1267
+find_name_p_s                  1268
+find_name_p_sc                 1269
+find_sub_not_null_p_s          1270
+find_sub_not_null_p_sc         1271

Modified: branches/runcore_purge/src/ops/set.ops
==============================================================================
--- branches/runcore_purge/src/ops/set.ops	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/ops/set.ops	Sat Apr 24 00:51:33 2010	(r45948)
@@ -19,15 +19,15 @@
 
 =item B<clone>(out STR, in STR)
 
-Make a clone of $2, and put it in $1. Doesn't affect what was in
-$1. Removes the constant flag on the copy, if there was one.
+Effectively the same as set $1, $2, except that if $2 is a null STRING, $1 gets
+a new empty string instead.
 
 =cut
 
 inline op clone(out STR, in STR) :base_mem {
     /* cloning a NULL STRING produces an empty STRING; TT #964 */
     $1 = $2
-       ? Parrot_str_copy(interp, $2)
+       ? $2
        : Parrot_str_new(interp, NULL, 0);
 }
 
@@ -154,7 +154,7 @@
 }
 
 inline op set(out STR, inconst STR) :base_core {
-    $1 = Parrot_str_copy(interp, $2);
+    $1 = $2;
 }
 
 inline op set(out STR, in INT) :base_core {
@@ -186,8 +186,7 @@
 }
 
 inline op set(invar PMC, inconst STR) :base_core {
-    VTABLE_set_string_native(interp, $1,
-        Parrot_str_copy(interp, $2));
+    VTABLE_set_string_native(interp, $1, $2);
 }
 inline op set(out INT, invar PMC) :base_core {
     $1 = VTABLE_get_integer(interp, $2);
@@ -247,7 +246,7 @@
 }
 
 inline op assign(out STR, in STR) :base_core {
-    $1 = Parrot_str_set(interp, $1, $2);
+    $1 = $2;
 }
 
 inline op setref(invar PMC, invar PMC) :base_core {

Modified: branches/runcore_purge/src/ops/string.ops
==============================================================================
--- branches/runcore_purge/src/ops/string.ops	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/ops/string.ops	Sat Apr 24 00:51:33 2010	(r45948)
@@ -70,8 +70,8 @@
 
 =cut
 
-inline op chopn(inout STR, in INT) :base_core {
-    Parrot_str_chopn_inplace(interp, $1, $2);
+inline op chopn(inout STR, in INT) :base_core :deprecated {
+    $1 = Parrot_str_chopn(interp, $1, $2);
 }
 
 inline op chopn(out STR, in STR, in INT) :base_core {
@@ -97,8 +97,8 @@
 
 =cut
 
-inline op concat(inout STR, in STR) :base_mem {
-    $1 = Parrot_str_append(interp, $1, $2);
+inline op concat(inout STR, in STR) :base_mem :deprecated {
+    $1 = Parrot_str_concat(interp, $1, $2);
 }
 
 inline op concat(invar PMC, invar PMC) :base_core {
@@ -110,7 +110,7 @@
 }
 
 inline op concat(out STR, in STR, in STR) :base_mem {
-    $1 = Parrot_str_concat(interp, $2, $3, 1);
+    $1 = Parrot_str_concat(interp, $2, $3);
 }
 
 inline op concat(invar PMC, invar PMC, in STR) :base_core {
@@ -198,8 +198,8 @@
 
 inline op bytelength(out INT, in STR) :base_mem {
     UINTVAL n;
-    STRING * const s = $2;
-    if (!s)
+    const STRING * const s = $2;
+    if (STRING_IS_NULL(s))
         n = 0;
     else {
         n = s->bufused;
@@ -244,6 +244,8 @@
 
 =item B<substr>(inout STR, in INT, in INT, in STR)
 
+=item B<replace>(out STR, in STR, in INT, in INT, in STR)
+
 =item B<substr>(out STR, invar PMC, in INT, in INT)
 
 Set $1 to the portion of $2 starting at (zero-based) character position
@@ -269,25 +271,30 @@
 
 inline op substr(out STR, in STR, in INT) :base_core {
     const INTVAL len = Parrot_str_byte_length(interp, $2);
-    $1 = Parrot_str_substr(interp, $2, $3, len, &$1, 0);
+    $1 = Parrot_str_substr(interp, $2, $3, len);
 }
 
 inline op substr(out STR, in STR, in INT, in INT) :base_core {
-    $1 = Parrot_str_substr(interp, $2, $3, $4, &$1, 0);
+    $1 = Parrot_str_substr(interp, $2, $3, $4);
 }
 
-inline op substr(out STR, inout STR, in INT, in INT, in STR) :base_core {
-    $1 = Parrot_str_replace(interp, $2, $3, $4, $5, &$1);
+inline op substr(out STR, inout STR, in INT, in INT, in STR) :base_core :deprecated {
+    $1 = Parrot_str_substr(interp, $2, $3, $4);
+    $2 = Parrot_str_replace(interp, $2, $3, $4, $5);
 }
 
-inline op substr(inout STR, in INT, in INT, in STR) :base_core {
-    (void)Parrot_str_replace(interp, $1, $2, $3, $4, NULL);
+inline op substr(inout STR, in INT, in INT, in STR) :base_core :deprecated {
+    $1 = Parrot_str_replace(interp, $1, $2, $3, $4);
 }
 
 inline op substr(out STR, invar PMC, in INT, in INT) :base_core {
     $1 = VTABLE_substr_str(interp, $2, $3, $4);
 }
 
+inline op replace(out STR, in STR, in INT, in INT, in STR) :base_core {
+    $1 = Parrot_str_replace(interp, $2, $3, $4, $5);
+}
+
 
 =item B<index>(out INT, in STR, in STR)
 
@@ -429,8 +436,8 @@
     $1 = Parrot_str_upcase(interp, $2);
 }
 
-inline op upcase(inout STR) :base_core {
-    Parrot_str_upcase_inplace(interp, $1);
+inline op upcase(inout STR) :base_core :deprecated {
+    $1 = Parrot_str_upcase(interp, $1);
 }
 
 
@@ -448,8 +455,8 @@
     $1 = Parrot_str_downcase(interp, $2);
 }
 
-inline op downcase(inout STR) :base_core {
-    Parrot_str_downcase_inplace(interp, $1);
+inline op downcase(inout STR) :base_core :deprecated {
+    $1 = Parrot_str_downcase(interp, $1);
 }
 
 
@@ -467,8 +474,8 @@
     $1 = Parrot_str_titlecase(interp, $2);
 }
 
-inline op titlecase(inout STR) :base_core {
-    Parrot_str_titlecase_inplace(interp, $1);
+inline op titlecase(inout STR) :base_core :deprecated {
+    $1 = Parrot_str_titlecase(interp, $1);
 }
 
 
@@ -529,8 +536,7 @@
 }
 
 op charsetname(out STR, in INT) :base_core {
-    STRING * const name = Parrot_charset_name(interp, $2);
-    $1 = name ? Parrot_str_copy(interp, name) : NULL;
+    $1 = Parrot_charset_name(interp, $2);
 }
 
 op find_charset(out INT, in STR) :base_core {
@@ -544,13 +550,12 @@
     $1 = n;
 }
 
-op trans_charset(inout STR, in INT) {
-    $1 = Parrot_str_change_charset(interp, $1, $2, NULL);
+op trans_charset(inout STR, in INT) :deprecated {
+    $1 = Parrot_str_change_charset(interp, $1, $2);
 }
 
 op trans_charset(out STR, in STR, in INT) {
-    STRING *dest = Parrot_gc_new_string_header(interp, 0);
-    $1 = Parrot_str_change_charset(interp, $2, $3, dest);
+    $1 = Parrot_str_change_charset(interp, $2, $3);
 }
 
 
@@ -585,8 +590,7 @@
 }
 
 op encodingname(out STR, in INT) :base_core {
-    STRING * const name = Parrot_encoding_name(interp, $2);
-    $1 = name ? Parrot_str_copy(interp, name) : NULL;
+    $1 = Parrot_encoding_name(interp, $2);
 }
 
 op find_encoding(out INT, in STR) :base_core {
@@ -600,13 +604,12 @@
     $1 = n;
 }
 
-op trans_encoding(inout STR, in INT) {
-    $1 = Parrot_str_change_encoding(interp, $1, $2, NULL);
+op trans_encoding(inout STR, in INT) :deprecated {
+    $1 = Parrot_str_change_encoding(interp, $1, $2);
 }
 
 op trans_encoding(out STR, in STR, in INT) {
-    STRING * const dest = Parrot_gc_new_string_header(interp, 0);
-    $1 = Parrot_str_change_encoding(interp, $2, $3, dest);
+    $1 = Parrot_str_change_encoding(interp, $2, $3);
 }
 
 
@@ -674,7 +677,7 @@
 
 =head1 COPYRIGHT
 
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 
 =head1 LICENSE
 

Modified: branches/runcore_purge/src/packdump.c
==============================================================================
--- branches/runcore_purge/src/packdump.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/packdump.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -299,10 +299,10 @@
                     switch (sub->namespace_name->vtable->base_type) {
                       case enum_class_String:
                         namespace_description = Parrot_str_new(interp, "'", 1);
-                        namespace_description = Parrot_str_append(interp,
+                        namespace_description = Parrot_str_concat(interp,
                                         namespace_description,
                                         VTABLE_get_string(interp, sub->namespace_name));
-                        namespace_description = Parrot_str_append(interp,
+                        namespace_description = Parrot_str_concat(interp,
                                         namespace_description,
                                         Parrot_str_new(interp, "'", 1));
                         break;

Modified: branches/runcore_purge/src/packfile.c
==============================================================================
--- branches/runcore_purge/src/packfile.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/packfile.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1206,7 +1206,7 @@
 /*
 
 =item C<PackFile_Segment * PackFile_find_segment(PARROT_INTERP,
-PackFile_Directory *dir, STRING *name, int sub_dir)>
+PackFile_Directory *dir, const STRING *name, int sub_dir)>
 
 Finds the segment with the name C<name> in the C<PackFile_Directory> if
 C<sub_dir> is true, searches directories recursively.  The returned segment is
@@ -1221,7 +1221,7 @@
 PARROT_CAN_RETURN_NULL
 PackFile_Segment *
 PackFile_find_segment(PARROT_INTERP, ARGIN_NULLOK(PackFile_Directory *dir),
-    ARGIN(STRING *name), int sub_dir)
+    ARGIN(const STRING *name), int sub_dir)
 {
     ASSERT_ARGS(PackFile_find_segment)
     if (dir) {
@@ -2443,7 +2443,7 @@
     self->size        = 0;
     self->data        = NULL;
     self->id          = 0;
-    self->name        = Parrot_str_copy(interp, name);
+    self->name        = name;
 }
 
 
@@ -2625,11 +2625,6 @@
 {
     ASSERT_ARGS(pf_debug_destroy)
     PackFile_Debug * const debug = (PackFile_Debug *) self;
-    int i;
-
-    /* Free each mapping. */
-    for (i = 0; i < debug->num_mappings; i++)
-        mem_gc_free(interp, debug->mappings[i]);
 
     /* Free mappings pointer array. */
     mem_gc_free(interp, debug->mappings);
@@ -2713,8 +2708,8 @@
     /* Now store each mapping. */
     for (i = 0; i < n; i++) {
         /* Bytecode offset and filename. */
-        *cursor++ = debug->mappings[i]->offset;
-        *cursor++ = debug->mappings[i]->filename;
+        *cursor++ = debug->mappings[i].offset;
+        *cursor++ = debug->mappings[i].filename;
     }
 
     return cursor;
@@ -2754,20 +2749,18 @@
 
     /* Allocate space for mappings vector. */
     debug->mappings = mem_gc_allocate_n_zeroed_typed(interp,
-            debug->num_mappings + 1, PackFile_DebugFilenameMapping *);
+            debug->num_mappings + 1, PackFile_DebugFilenameMapping);
 
     /* Read in each mapping. */
     for (i = 0; i < debug->num_mappings; i++) {
-        /* Allocate struct and get offset and filename type. */
-        debug->mappings[i]           =
-                mem_gc_allocate_zeroed_typed(interp, PackFile_DebugFilenameMapping);
-        debug->mappings[i]->offset   = PF_fetch_opcode(self->pf, &cursor);
-        debug->mappings[i]->filename = PF_fetch_opcode(self->pf, &cursor);
+        /* Get offset and filename type. */
+        debug->mappings[i].offset   = PF_fetch_opcode(self->pf, &cursor);
+        debug->mappings[i].filename = PF_fetch_opcode(self->pf, &cursor);
     }
 
     /* find seg e.g. CODE_DB => CODE and attach it */
     str_len     = Parrot_str_length(interp, debug->base.name);
-    code_name   = Parrot_str_substr(interp, debug->base.name, 0, str_len - 3, NULL, 1);
+    code_name   = Parrot_str_substr(interp, debug->base.name, 0, str_len - 3);
     code        = (PackFile_ByteCode *)PackFile_find_segment(interp, self->dir, code_name, 0);
 
     if (!code || code->base.type != PF_BYTEC_SEG) {
@@ -2807,9 +2800,9 @@
     for (i = 0; i < debug->num_mappings; i++) {
         Parrot_io_printf(interp, "    #%d\n    [\n", i);
         Parrot_io_printf(interp, "        OFFSET => %d,\n",
-                   debug->mappings[i]->offset);
+                   debug->mappings[i].offset);
         Parrot_io_printf(interp, "        FILENAME => %Ss\n",
-                PF_CONST(debug->code, debug->mappings[i]->filename)->u.string);
+                PF_CONST(debug->code, debug->mappings[i].filename)->u.string);
         Parrot_io_printf(interp, "    ],\n");
     }
 
@@ -2892,7 +2885,7 @@
 
     /* If the previous mapping has the same filename, don't record it. */
     if (debug->num_mappings) {
-        prev_filename_n = debug->mappings[debug->num_mappings-1]->filename;
+        prev_filename_n = debug->mappings[debug->num_mappings-1].filename;
         filename_pstr = Parrot_str_new(interp, filename, 0);
         if (ct->constants[prev_filename_n]->type == PFC_STRING &&
                 Parrot_str_equal(interp, filename_pstr,
@@ -2904,18 +2897,18 @@
     /* Allocate space for the extra entry. */
     debug->mappings = mem_gc_realloc_n_typed(interp,
             debug->mappings, debug->num_mappings + 1,
-            PackFile_DebugFilenameMapping *);
+            PackFile_DebugFilenameMapping);
 
     /* Can it just go on the end? */
     if (debug->num_mappings == 0
-    ||  offset              >= debug->mappings[debug->num_mappings - 1]->offset)
+    ||  offset              >= debug->mappings[debug->num_mappings - 1].offset)
         insert_pos = debug->num_mappings;
     else {
         /* Find the right place and shift stuff that's after it. */
         int i;
 
         for (i = 0; i < debug->num_mappings; i++) {
-            if (debug->mappings[i]->offset > offset) {
+            if (debug->mappings[i].offset > offset) {
                 insert_pos = i;
                 memmove(debug->mappings + i + 1, debug->mappings + i,
                     debug->num_mappings - i);
@@ -2927,14 +2920,13 @@
     /* Need to put filename in constants table. */
     {
         /* Set up new entry and insert it. */
-        PackFile_DebugFilenameMapping *mapping =
-                mem_gc_allocate_zeroed_typed(interp, PackFile_DebugFilenameMapping);
+        PackFile_DebugFilenameMapping *mapping = debug->mappings + insert_pos;
         STRING *namestr = Parrot_str_new_init(interp, filename, strlen(filename),
                 PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET, 0);
         size_t count = ct->const_count;
         size_t i;
 
-        mapping->offset       = offset;
+        mapping->offset = offset;
 
         /* Check if there is already a constant with this filename */
         for (i= 0; i < count; ++i) {
@@ -2962,8 +2954,7 @@
         }
 
         /* Set the mapped value */
-        mapping->filename     = count;
-        debug->mappings[insert_pos] = mapping;
+        mapping->filename = count;
         debug->num_mappings         = debug->num_mappings + 1;
     }
 }
@@ -2996,10 +2987,10 @@
         /* If this is the last mapping or the current position is
            between this mapping and the next one, return a filename. */
        if (i + 1                          == debug->num_mappings
-       || (debug->mappings[i]->offset     <= pc
-       &&  debug->mappings[i + 1]->offset >  pc))
+       || (debug->mappings[i].offset     <= pc
+       &&  debug->mappings[i + 1].offset >  pc))
             return PF_CONST(debug->code,
-                    debug->mappings[i]->filename)->u.string;
+                    debug->mappings[i].filename)->u.string;
     }
 
     /* Otherwise, no mappings == no filename. */
@@ -4304,7 +4295,7 @@
 
     /* Need to associate this segment with the applicable code segment. */
     str_len     = Parrot_str_length(interp, self->base.name);
-    code_name   = Parrot_str_substr(interp, self->base.name, 0, str_len - 4, NULL, 1);
+    code_name   = Parrot_str_substr(interp, self->base.name, 0, str_len - 4);
     code        = (PackFile_ByteCode *)PackFile_find_segment(interp,
                                 self->base.dir, code_name, 0);
 
@@ -4739,10 +4730,10 @@
 
     /* Full path to language library is "abc/abc.pbc". */
     pbc = CONST_STRING(interp, "pbc");
-    wo_ext   = Parrot_str_concat(interp, lang_name, CONST_STRING(interp, "/"), 0);
-    wo_ext   = Parrot_str_append(interp, wo_ext, lang_name);
-    file_str = Parrot_str_concat(interp, wo_ext, CONST_STRING(interp, "."), 0);
-    file_str = Parrot_str_append(interp, file_str, pbc);
+    wo_ext   = Parrot_str_concat(interp, lang_name, CONST_STRING(interp, "/"));
+    wo_ext   = Parrot_str_concat(interp, wo_ext, lang_name);
+    file_str = Parrot_str_concat(interp, wo_ext, CONST_STRING(interp, "."));
+    file_str = Parrot_str_concat(interp, file_str, pbc);
 
     /* Check if the language is already loaded */
     is_loaded_hash = VTABLE_get_pmc_keyed_int(interp,
@@ -4767,13 +4758,13 @@
     parrot_split_path_ext(interp, path, &found_path, &found_ext);
     name_length = Parrot_str_length(interp, lang_name);
     found_path = Parrot_str_substr(interp, found_path, 0,
-            Parrot_str_length(interp, found_path)-name_length, NULL, 0);
+            Parrot_str_length(interp, found_path)-name_length);
 
-    Parrot_lib_add_path(interp, Parrot_str_append(interp, found_path, CONST_STRING(interp, "include/")),
+    Parrot_lib_add_path(interp, Parrot_str_concat(interp, found_path, CONST_STRING(interp, "include/")),
             PARROT_LIB_PATH_INCLUDE);
-    Parrot_lib_add_path(interp, Parrot_str_append(interp, found_path, CONST_STRING(interp, "dynext/")),
+    Parrot_lib_add_path(interp, Parrot_str_concat(interp, found_path, CONST_STRING(interp, "dynext/")),
             PARROT_LIB_PATH_DYNEXT);
-    Parrot_lib_add_path(interp, Parrot_str_append(interp, found_path, CONST_STRING(interp, "library/")),
+    Parrot_lib_add_path(interp, Parrot_str_concat(interp, found_path, CONST_STRING(interp, "library/")),
             PARROT_LIB_PATH_LIBRARY);
 
 

Modified: branches/runcore_purge/src/packfile/pf_items.c
==============================================================================
--- branches/runcore_purge/src/packfile/pf_items.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/packfile/pf_items.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1332,7 +1332,7 @@
     TRACE_PRINTF(("size=%ld.\n", size));
 
     s = string_make_from_charset(interp, (const char *)*cursor,
-                        size, charset_nr, flags);
+                        size, charset_nr, flags | PObj_external_FLAG);
 
     /* print only printable characters */
     TRACE_PRINTF_VAL(("PF_fetch_string(): string is '%s' at 0x%x\n",

Modified: branches/runcore_purge/src/pbc_dump.c
==============================================================================
--- branches/runcore_purge/src/pbc_dump.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pbc_dump.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -111,7 +111,7 @@
 static void
 disas_dump(PARROT_INTERP, const PackFile_Segment *self)
 {
-    opcode_t *pc = self->data;
+    const opcode_t *pc = self->data;
 
     Parrot_io_printf(interp, "%Ss => [ # %d ops at offs 0x%x\n",
             self->name, (int)self->size, (int)self->file_offset + 4);
@@ -154,14 +154,14 @@
 static void
 nums_dump(PARROT_INTERP, const PackFile_Segment *self)
 {
-    STRING                 *debug_name = Parrot_str_concat(interp, self->name,
-            Parrot_str_new_constant(interp, "_DB"), 0);
+    const STRING           *debug_name = Parrot_str_concat(interp, self->name,
+            Parrot_str_new_constant(interp, "_DB"));
     const PackFile_Segment *debug      = PackFile_find_segment(interp,
                                             self->dir, debug_name, 1);
 
-    opcode_t               *pc         = self->data;
-    opcode_t               *debug_ops  = debug->data;
-    const op_info_t * const op_info    = interp->op_info_table;
+    const opcode_t  * pc            = self->data;
+    const opcode_t  * debug_ops     = debug->data;
+    const op_info_t * const op_info = interp->op_info_table;
 
     while (pc < self->data + self->size) {
         /* n can't be const; the ADD_OP_VAR_PART macro increments it */

Modified: branches/runcore_purge/src/pbc_merge.c
==============================================================================
--- branches/runcore_purge/src/pbc_merge.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pbc_merge.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -566,8 +566,8 @@
     PackFile_Debug                 *debug_seg;
     opcode_t                       *lines    = mem_gc_allocate_typed(interp,
                                                 opcode_t);
-    PackFile_DebugFilenameMapping **mappings =
-        mem_gc_allocate_typed(interp, PackFile_DebugFilenameMapping *);
+    PackFile_DebugFilenameMapping *mappings =
+        mem_gc_allocate_typed(interp, PackFile_DebugFilenameMapping);
 
     opcode_t num_mappings = 0;
     opcode_t num_lines    = 0;
@@ -591,16 +591,14 @@
         /* Concatenate mappings. */
         mappings = mem_gc_realloc_n_typed(interp, mappings,
                 num_mappings + in_seg->num_mappings,
-                PackFile_DebugFilenameMapping*);
+                PackFile_DebugFilenameMapping);
 
         for (j = 0; j < in_seg->num_mappings; j++) {
-            PackFile_DebugFilenameMapping * const mapping =
-                mem_gc_allocate_typed(interp, PackFile_DebugFilenameMapping);
+            PackFile_DebugFilenameMapping *mapping = mappings + num_mappings + j;
 
-            STRUCT_COPY(mapping, in_seg->mappings[j]);
+            STRUCT_COPY_FROM_STRUCT(mapping, in_seg->mappings[j]);
             mapping->offset   += num_lines;
             mapping->filename += inputs[i]->const_start;
-            mappings[num_mappings + j] = mapping;
         }
 
         num_lines    += in_seg->base.size - 1;

Modified: branches/runcore_purge/src/pmc/bigint.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/bigint.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/bigint.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1143,7 +1143,7 @@
 
     VTABLE STRING *get_repr() {
         STRING * const s = SELF.get_string();
-        return Parrot_str_append(INTERP, s, CONST_STRING(INTERP, "L"));
+        return Parrot_str_concat(INTERP, s, CONST_STRING(INTERP, "L"));
     }
 /*
 

Modified: branches/runcore_purge/src/pmc/bignum.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/bignum.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/bignum.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -723,7 +723,6 @@
     ASSERT_ARGS(bignum_get_string_size)
 
     BIGNUM *bn;
-    size_t  n;
     char   *s;
     mp_exp_t exponent;
 
@@ -1509,7 +1508,7 @@
 
     VTABLE STRING *get_repr() {
         STRING *s = SELF.get_string();
-        return Parrot_str_append(INTERP, s, Parrot_str_new(interp, "N", 1));
+        return Parrot_str_concat(INTERP, s, Parrot_str_new(interp, "N", 1));
     }
 /*
 
@@ -1760,7 +1759,6 @@
 */
 
     MULTI PMC *divide(BigNum value, PMC *dest) {
-        BIGNUM *bn;
         dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_div_bignum(INTERP, SELF, value, dest);

Modified: branches/runcore_purge/src/pmc/callcontext.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/callcontext.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/callcontext.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -675,16 +675,16 @@
         for (i = 0; i < num_positionals; ++i) {
             switch (c[i].type) {
               case INTCELL:
-                res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "I"));
+                res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "I"));
                 break;
               case FLOATCELL:
-                res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "N"));
+                res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "N"));
                 break;
               case STRINGCELL:
-                res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "S"));
+                res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "S"));
                 break;
               case PMCCELL:
-                res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "P"));
+                res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "P"));
                 break;
               default:
                 PARROT_FAILURE("Impossible flag");
@@ -1425,7 +1425,7 @@
             SET_ATTR_type_tuple(INTERP, dest, VTABLE_clone(INTERP, type_tuple));
 
         if (short_sig)
-            SET_ATTR_short_sig(INTERP, dest, Parrot_str_copy(INTERP, short_sig));
+            SET_ATTR_short_sig(INTERP, dest, short_sig);
 
         if (!PMC_IS_NULL(arg_flags))
             SET_ATTR_arg_flags(INTERP, dest, VTABLE_clone(INTERP, arg_flags));

Modified: branches/runcore_purge/src/pmc/class.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/class.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/class.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -203,7 +203,7 @@
         STRING * const attrib_name = VTABLE_get_string_keyed_str(
             interp, cur_attrib, name_str);
 
-        STRING * const full_key    = Parrot_str_append(interp, fq_class, attrib_name);
+        STRING * const full_key    = Parrot_str_concat(interp, fq_class, attrib_name);
 
         /* Insert into hash, along with index. */
         VTABLE_set_integer_keyed_str(interp, attrib_index, full_key, cur_index);
@@ -668,7 +668,7 @@
 */
 
     VTABLE STRING *get_string() {
-        return Parrot_str_copy(interp, make_class_name(interp, SELF));
+        return make_class_name(interp, SELF);
     }
 
 /*

Modified: branches/runcore_purge/src/pmc/codestring.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/codestring.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/codestring.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -112,15 +112,13 @@
     INTVAL pos          = 0;
     INTVAL replen       = 0;
 
-    fmt = Parrot_str_new_COW(INTERP, fmt);
-
     while (pos >= 0) {
         pos += replen;
         pos = Parrot_str_find_index(INTERP, fmt, percent, pos);
         if (pos < 0)
             break;
 
-        key = Parrot_str_substr(INTERP, fmt, pos+1, 1, &key, 0);
+        key = Parrot_str_substr(INTERP, fmt, pos+1, 1);
 
         if (VTABLE_exists_keyed_str(INTERP, hash, key)) {
             repl = VTABLE_get_string_keyed_str(INTERP, hash, key);
@@ -134,14 +132,13 @@
             INTVAL I1;
 
             repl = VTABLE_get_string_keyed_int(INTERP, args, 0);
-            repl = Parrot_str_new_COW(INTERP, repl);
             I1   = VTABLE_elements(INTERP, args);
             I0   = 1;
 
             while (I0 < I1) {
                 STRING * const S0 = VTABLE_get_string_keyed_int(INTERP, args, I0);
-                repl = Parrot_str_append(INTERP, repl, comma_space);
-                repl = Parrot_str_append(INTERP, repl, S0);
+                repl = Parrot_str_concat(INTERP, repl, comma_space);
+                repl = Parrot_str_concat(INTERP, repl, S0);
                 I0++;
             }
         }
@@ -154,16 +151,16 @@
             continue;
         }
 
-        (void) Parrot_str_replace(INTERP, fmt, pos, 2, repl, NULL);
+        fmt    = Parrot_str_replace(INTERP, fmt, pos, 2, repl);
         replen = Parrot_str_byte_length(INTERP, repl);
     }
 
     /* Add a newline if necessary */
     if ('\n' != Parrot_str_indexed(INTERP, fmt, Parrot_str_byte_length(INTERP, fmt) - 1))
-        fmt = Parrot_str_concat(INTERP, fmt, newline, 0);
+        fmt = Parrot_str_concat(INTERP, fmt, newline);
 
     GET_ATTR_str_val(INTERP, SELF, S1);
-    S1 = Parrot_str_concat(INTERP, S1, fmt, 0);
+    S1 = Parrot_str_concat(INTERP, S1, fmt);
     VTABLE_set_string_native(INTERP, SELF, S1);
 
     RETURN(PMC *SELF);
@@ -258,8 +255,7 @@
         RETURN(STRING *counter_as_string);
     }
     else {
-        STRING *result = Parrot_str_copy(INTERP, format);
-        result         = Parrot_str_concat(INTERP, result, counter_as_string, 1);
+        STRING *result = Parrot_str_concat(INTERP, format, counter_as_string);
         RETURN(STRING *result);
     }
   }
@@ -284,8 +280,8 @@
     INTVAL is_unicode = 0;
     UNUSED(SELF);
 
-    escaped_str = Parrot_str_concat(INTERP, quote, escaped_str, 1);
-    escaped_str = Parrot_str_concat(INTERP, escaped_str, quote, 1);
+    escaped_str = Parrot_str_concat(INTERP, quote, escaped_str);
+    escaped_str = Parrot_str_concat(INTERP, escaped_str, quote);
     x_pos       = Parrot_str_find_index(INTERP, escaped_str, x, 0);
 
     if (x_pos != -1) {
@@ -300,7 +296,7 @@
 
     if (is_unicode) {
         STRING * const unicode = CONST_STRING(INTERP, "unicode:");
-        escaped_str            = Parrot_str_concat(INTERP, unicode, escaped_str, 1);
+        escaped_str            = Parrot_str_concat(INTERP, unicode, escaped_str);
     }
 
     RETURN(STRING *escaped_str);
@@ -367,8 +363,8 @@
                     STRING *S0   = VTABLE_get_string_keyed_int(INTERP, P0, index2);
                     (STRING *S0) = PCCINVOKE(INTERP, SELF, "escape", STRING *S0);
                     if (prefix)
-                        out = Parrot_str_append(INTERP, out, prefix);
-                    out    = Parrot_str_append(INTERP, out, S0);
+                        out = Parrot_str_concat(INTERP, out, prefix);
+                    out    = Parrot_str_concat(INTERP, out, S0);
                     prefix = semi;
                 }
             }
@@ -376,14 +372,14 @@
                 STRING *S0   = VTABLE_get_string_keyed_int(INTERP, args, index);
                 (STRING *S0) = PCCINVOKE(INTERP, SELF, "escape", STRING *S0);
                 if (prefix)
-                    out = Parrot_str_append(INTERP, out, prefix);
-                out    = Parrot_str_append(INTERP, out, S0);
+                    out = Parrot_str_concat(INTERP, out, prefix);
+                out    = Parrot_str_concat(INTERP, out, S0);
                 prefix = semi;
             }
         }
     }
 
-    out = Parrot_str_append(INTERP, out, close_bracket);
+    out = Parrot_str_concat(INTERP, out, close_bracket);
 
     RETURN(STRING *out);
 }

Modified: branches/runcore_purge/src/pmc/continuation.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/continuation.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/continuation.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -78,15 +78,6 @@
         SET_ATTR_address(INTERP, SELF, NULL);
 
         PObj_custom_mark_SET(SELF);
-
-        /* PANIC("don't do that"); */
-        /*
-         * Whenever we create a continuation, all return continuations
-         * up the call chain may be reused due to invoking the
-         * continuation. To avoid that all return continuations are
-         * converted to true continuations.
-         */
-        invalidate_retc_context(INTERP, SELF);
     }
 
     /*if they pass in a PMC to initialize with*/
@@ -109,15 +100,6 @@
         SET_ATTR_address(INTERP, SELF, address);
 
         PObj_custom_mark_SET(SELF);
-
-        /* PANIC("don't do that"); */
-        /*
-         * Whenever we create a continuation, all return continuations
-         * up the call chain may be reused due to invoking the
-         * continuation. To avoid that all return continuations are
-         * converted to true continuations.
-         */
-        invalidate_retc_context(INTERP, SELF);
     }
 
 

Modified: branches/runcore_purge/src/pmc/coroutine.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/coroutine.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/coroutine.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -120,9 +120,6 @@
                 (Parrot_Coroutine_attributes *)PMC_data(SELF),
                 sizeof (Parrot_Coroutine_attributes));
 
-        GET_ATTR_name(INTERP, ret, name);
-        SET_ATTR_name(INTERP, ret, Parrot_str_copy(INTERP, name));
-
         return ret;
     }
 
@@ -172,8 +169,10 @@
             PMC               *ctx        = Parrot_pcc_get_signature(INTERP, caller_ctx);
             PMC               *ccont      = INTERP->current_cont;
 
-            if (ccont == NEED_CONTINUATION)
-                ccont = (PMC *)new_ret_continuation_pmc(INTERP, next_op);
+            if (ccont == NEED_CONTINUATION) {
+                ccont = pmc_new(interp, enum_class_Continuation);
+                VTABLE_set_pointer(interp, ccont, next_op);
+            }
 
             if (PObj_get_FLAGS(ccont) & SUB_FLAG_TAILCALL)
                 Parrot_ex_throw_from_c_args(INTERP, NULL, CONTROL_ERROR,

Modified: branches/runcore_purge/src/pmc/eventhandler.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/eventhandler.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/eventhandler.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -167,9 +167,9 @@
         Parrot_EventHandler_attributes * const e = PARROT_EVENTHANDLER(SELF);
 
         if (e)
-            return Parrot_str_copy(INTERP, e->type);
+            return e->type;
 
-        return string_from_literal(INTERP, "");
+        return CONST_STRING(INTERP, "");
     }
 
 /*

Modified: branches/runcore_purge/src/pmc/filehandle.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/filehandle.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/filehandle.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -253,10 +253,10 @@
                                 "Cannot reopen already open filehandle");
 
         if (got_mode && !STRING_IS_NULL(mode))
-            SET_ATTR_mode(INTERP, SELF, Parrot_str_copy(INTERP, mode));
+            SET_ATTR_mode(INTERP, SELF, mode);
 
         if (got_filename && !STRING_IS_NULL(filename))
-            SET_ATTR_filename(INTERP, SELF, Parrot_str_copy(INTERP, filename));
+            SET_ATTR_filename(INTERP, SELF, filename);
 
         /* Open the file. With no options, reopen the same file as before */
         GET_ATTR_filename(INTERP, SELF, open_filename);
@@ -475,7 +475,7 @@
 
             do {
                 STRING * const part = Parrot_io_reads(INTERP, SELF, 0);
-                result = Parrot_str_append(INTERP, result, part);
+                result = Parrot_str_concat(INTERP, result, part);
 
                 if (Parrot_io_eof(INTERP, SELF))
                     break;
@@ -618,12 +618,9 @@
 */
 
     METHOD mode() {
-        STRING *mode, *mode_copy;
-
+        STRING *mode;
         GET_ATTR_mode(INTERP, SELF, mode);
-        mode_copy = Parrot_str_copy(INTERP, mode);
-
-        RETURN(STRING *mode_copy);
+        RETURN(STRING *mode);
     }
 
 
@@ -640,20 +637,14 @@
 
     METHOD encoding(STRING *new_encoding :optional, INTVAL got_encoding :opt_flag) {
         STRING *encoding;
-        STRING *encoding_copy = NULL;
 
         if (got_encoding) {
-            if (!STRING_IS_NULL(new_encoding))
-                encoding_copy = Parrot_str_copy(INTERP, new_encoding);
-            SET_ATTR_encoding(INTERP, SELF, encoding_copy);
+            SET_ATTR_encoding(INTERP, SELF, new_encoding);
             RETURN(STRING *new_encoding);
         }
 
         GET_ATTR_encoding(INTERP, SELF, encoding);
-        if (!STRING_IS_NULL(encoding))
-            encoding_copy = Parrot_str_copy(INTERP, encoding);
-
-        RETURN(STRING *encoding_copy);
+        RETURN(STRING *encoding);
     }
 
 

Modified: branches/runcore_purge/src/pmc/fixedbooleanarray.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/fixedbooleanarray.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/fixedbooleanarray.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -283,9 +283,9 @@
 
         for (i = 0; i < elems; i++) {
             if (SELF.get_integer_keyed_int((INTVAL)i))
-                str = Parrot_str_concat(INTERP, str, one, 0);
+                str = Parrot_str_concat(INTERP, str, one);
             else
-                str = Parrot_str_concat(INTERP, str, zero, 0);
+                str = Parrot_str_concat(INTERP, str, zero);
         }
 
         return str;

Modified: branches/runcore_purge/src/pmc/fixedintegerarray.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/fixedintegerarray.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/fixedintegerarray.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -279,13 +279,13 @@
 
         for (j = 0; j < n; ++j) {
             PMC * const val = SELF.get_pmc_keyed_int(j);
-            res = Parrot_str_append(INTERP, res, VTABLE_get_repr(INTERP, val));
+            res = Parrot_str_concat(INTERP, res, VTABLE_get_repr(INTERP, val));
 
             if (j < n - 1)
-                res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ", "));
+                res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ", "));
         }
 
-        res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, " ]"));
+        res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, " ]"));
         return res;
     }
 

Modified: branches/runcore_purge/src/pmc/fixedpmcarray.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/fixedpmcarray.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/fixedpmcarray.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -222,12 +222,12 @@
         for (i = 0; i < n; ++i) {
             PMC * const val = SELF.get_pmc_keyed_int(i);
             if (i > 0)
-                res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ", "));
+                res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ", "));
 
-            res = Parrot_str_append(INTERP, res, VTABLE_get_repr(INTERP, val));
+            res = Parrot_str_concat(INTERP, res, VTABLE_get_repr(INTERP, val));
         }
 
-        res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ")"));
+        res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ")"));
 
         return res;
     }

Modified: branches/runcore_purge/src/pmc/fixedstringarray.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/fixedstringarray.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/fixedstringarray.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -538,15 +538,15 @@
 
         for (j = 0; j < n; ++j) {
             STRING * const val = SELF.get_string_keyed_int(j);
-            res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "\""));
-            res = Parrot_str_append(INTERP, res, val);
-            res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "\""));
+            res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "\""));
+            res = Parrot_str_concat(INTERP, res, val);
+            res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "\""));
 
             if (j < n - 1)
-                res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ", "));
+                res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ", "));
         }
 
-        res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, " ]"));
+        res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, " ]"));
         return res;
     }
 

Modified: branches/runcore_purge/src/pmc/hash.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/hash.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/hash.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -61,6 +61,10 @@
 
 Initializes the instance.
 
+=item C<void init_int(INTVAL value_type)>
+
+Initializes the instance with the value_type provided.
+
 =item C<void destroy()>
 
 Free hash structure.
@@ -78,6 +82,19 @@
         PObj_custom_mark_destroy_SETALL(SELF);
     }
 
+    VTABLE void init_int(INTVAL value_type) {
+        Parrot_Hash_attributes * const attr =
+            (Parrot_Hash_attributes *) PMC_data(SELF);
+
+        attr->hash = parrot_create_hash(INTERP,
+                (PARROT_DATA_TYPE)value_type,
+                Hash_key_type_STRING,
+                STRING_compare,
+                (hash_hash_key_fn)key_hash_STRING);
+        attr->hash->container = SELF;
+        PObj_custom_mark_destroy_SETALL(SELF);
+    }
+
     VTABLE void destroy() {
         Hash * const hash = (Hash *)SELF.get_pointer();
         if (hash)
@@ -236,18 +253,15 @@
         if (old_hash && old_hash->entry_type == type)
             return;
 
-        if (!old_hash)
-            old_hash = parrot_new_hash(INTERP);
-
         switch (type) {
           case enum_type_INTVAL:
           case enum_type_STRING:
           case enum_type_PMC:
             new_hash = parrot_create_hash(interp,
                         (PARROT_DATA_TYPE)type,
-                        old_hash->key_type,
-                        old_hash->compare,
-                        old_hash->hash_val);
+                        old_hash ? old_hash->key_type : Hash_key_type_STRING,
+                        old_hash ? old_hash->compare : STRING_compare,
+                        old_hash ? old_hash->hash_val : (hash_hash_key_fn)key_hash_STRING);
             break;
           default:
             Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
@@ -257,7 +271,8 @@
         PARROT_HASH(SELF)->hash = new_hash;
         new_hash->container     = SELF;
 
-        parrot_hash_destroy(INTERP, old_hash);
+        if (old_hash)
+            parrot_hash_destroy(INTERP, old_hash);
     }
 
     METHOD get_value_type() {
@@ -342,23 +357,23 @@
             Parrot_str_free_cstring(key_str);
 
             if (all_digit) {
-                res = Parrot_str_append(INTERP, res, key);
+                res = Parrot_str_concat(INTERP, res, key);
             }
             else {
-                res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "'"));
-                res = Parrot_str_append(INTERP, res, key);
-                res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "'"));
+                res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "'"));
+                res = Parrot_str_concat(INTERP, res, key);
+                res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "'"));
             }
 
-            res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ": "));
+            res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ": "));
             val = SELF.get_pmc_keyed_str(key);
-            res = Parrot_str_append(INTERP, res, VTABLE_get_string(INTERP, val));
+            res = Parrot_str_concat(INTERP, res, VTABLE_get_string(INTERP, val));
 
             if (j < n - 1)
-                res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ", "));
+                res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ", "));
         }
 
-        res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "}"));
+        res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "}"));
 
         return res;
     }

Modified: branches/runcore_purge/src/pmc/key.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/key.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/key.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -74,8 +74,7 @@
                 break;
               case KEY_string_FLAG:
               case KEY_string_FLAG | KEY_register_FLAG:
-                key_set_string(INTERP, dkey,
-                        Parrot_str_copy(INTERP, VTABLE_get_string(INTERP, key)));
+                key_set_string(INTERP, dkey, VTABLE_get_string(INTERP, key));
                 break;
               case KEY_pmc_FLAG:
               case KEY_pmc_FLAG | KEY_register_FLAG:

Modified: branches/runcore_purge/src/pmc/lexinfo.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/lexinfo.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/lexinfo.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -64,7 +64,7 @@
         PARROT_ASSERT(PObj_constant_TEST(SELF));
 
         /* Set value type to INTVAL */
-        Parrot_pcc_invoke_method_from_c_args(interp, SELF, CONST_STRING(INTERP, "set_value_type"), "I->", (INTVAL)enum_type_INTVAL);
+        SELF.init_int((INTVAL)enum_type_INTVAL);
         PObj_custom_mark_destroy_SETALL(SELF);
     }
 

Modified: branches/runcore_purge/src/pmc/namespace.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/namespace.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/namespace.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -166,7 +166,7 @@
 
         if (Parrot_str_equal(interp, sub->method_name, CONST_STRING(interp, ""))) {
             if (sub->vtable_index != -1 && !STRING_IS_NULL(vtable_key)) {
-                method_name = Parrot_str_copy(interp, vtable_key);
+                method_name = vtable_key;
             }
         }
         else {

Modified: branches/runcore_purge/src/pmc/object.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/object.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/object.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -119,7 +119,7 @@
 
         /* Build a string representing the fully qualified attribute name. */
         STRING *fq_name = VTABLE_get_string(interp, cur_class);
-        fq_name         = Parrot_str_append(interp, fq_name, name);
+        fq_name         = Parrot_str_concat(interp, fq_name, name);
 
         /* Look up. */
         if (VTABLE_exists_keyed_str(interp, _class->attrib_index, fq_name)) {
@@ -160,7 +160,7 @@
     /* Build a string representing the fully qualified attribute name. */
     parent_class = Parrot_oo_get_class(interp, key);
     fq_name      = VTABLE_get_string(interp, parent_class);
-    fq_name      = Parrot_str_append(interp, fq_name, name);
+    fq_name      = Parrot_str_concat(interp, fq_name, name);
 
     /* Look up. */
     if (VTABLE_exists_keyed_str(interp, _class->attrib_index, fq_name)) {

Modified: branches/runcore_purge/src/pmc/packfileannotations.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/packfileannotations.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/packfileannotations.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -267,7 +267,6 @@
         PackFile_Annotations *res = mem_gc_allocate_zeroed_typed(INTERP,
                 PackFile_Annotations);
         INTVAL                i, num;
-        INTVAL                key_type;
         PMC                  *keys;             /* Temporary representation of Keys */
         PMC                  *names;            /* Constants for Key's names */
         PMC                  *types;            /* Types of Keys */
@@ -304,8 +303,9 @@
         res->num_entries = num;
         res->entries = mem_gc_allocate_n_typed(INTERP, num, PackFile_Annotations_Entry*);
         for (i = 0; i < num; ++i) {
-            PMC  *entity = VTABLE_get_pmc_keyed_int(interp, attrs->annotations, i);
-            Parrot_PackfileAnnotation_attributes *entity_attrs = PARROT_PACKFILEANNOTATION(entity);
+            PMC  * const entity = VTABLE_get_pmc_keyed_int(interp, attrs->annotations, i);
+            const Parrot_PackfileAnnotation_attributes * const entity_attrs =
+                PARROT_PACKFILEANNOTATION(entity);
 
             /* Handle creating of Key */
             PMC * key_array = VTABLE_get_pmc_keyed_str(interp, keys, entity_attrs->name);

Modified: branches/runcore_purge/src/pmc/packfiledirectory.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/packfiledirectory.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/packfiledirectory.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -148,7 +148,7 @@
             PackFile_Segment * const pfseg = (PackFile_Segment *)VTABLE_get_pointer(interp, seg);
 
             pfseg->pf   = pf;
-            pfseg->name = Parrot_str_copy(interp, name);
+            pfseg->name = name;
             PackFile_add_segment(interp, pfdir, pfseg);
         }
 

Modified: branches/runcore_purge/src/pmc/packfilefixupentry.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/packfilefixupentry.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/packfilefixupentry.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -58,7 +58,7 @@
 */
 
     VTABLE void mark() {
-        Parrot_PackfileFixupEntry_attributes * attrs =
+        Parrot_PackfileFixupEntry_attributes * const attrs =
                 PARROT_PACKFILEFIXUPENTRY(SELF);
 
         Parrot_gc_mark_STRING_alive(interp, attrs->name);
@@ -75,7 +75,7 @@
 */
 
     VTABLE void set_pointer(void * pointer) {
-        Parrot_PackfileFixupEntry_attributes * attrs =
+        Parrot_PackfileFixupEntry_attributes * const attrs =
                 PARROT_PACKFILEFIXUPENTRY(SELF);
         PackFile_FixupEntry *entry = (PackFile_FixupEntry*)pointer;
 
@@ -96,9 +96,9 @@
 
 */
     VTABLE void *get_pointer() {
-        Parrot_PackfileFixupEntry_attributes * attrs =
+        Parrot_PackfileFixupEntry_attributes * const attrs =
                 PARROT_PACKFILEFIXUPENTRY(SELF);
-        PackFile_FixupEntry                  * entry =
+        PackFile_FixupEntry                  * const entry =
                 mem_gc_allocate_zeroed_typed(INTERP, PackFile_FixupEntry);
 
         entry->type     = attrs->type;
@@ -173,7 +173,7 @@
 
 */
     METHOD get_type() {
-        INTVAL rv = PARROT_PACKFILEFIXUPENTRY(SELF)->type;
+        const INTVAL rv = PARROT_PACKFILEFIXUPENTRY(SELF)->type;
         RETURN(INTVAL rv);
     }
 

Modified: branches/runcore_purge/src/pmc/parrotinterpreter.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/parrotinterpreter.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/parrotinterpreter.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -145,7 +145,7 @@
                 Parrot_Class_attributes * const source_class = PARROT_CLASS(source);
                 Parrot_Class_attributes * const dest_class   = PARROT_CLASS(dest);
 
-                dest_class->name           = Parrot_str_copy(d, source_class->name);
+                dest_class->name           = source_class->name;
                 dest_class->_namespace     = VTABLE_clone(d, source_class->_namespace);
             }
         }

Modified: branches/runcore_purge/src/pmc/pmcproxy.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/pmcproxy.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/pmcproxy.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -486,9 +486,7 @@
 
     VTABLE STRING *get_string() {
         Parrot_Class_attributes * const proxy_info = PARROT_CLASS(SELF);
-
-        /* Copy the stored string name of the proxy. */
-        return Parrot_str_copy(interp, proxy_info->name);
+        return proxy_info->name;
     }
 
 

Modified: branches/runcore_purge/src/pmc/resizablepmcarray.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/resizablepmcarray.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/resizablepmcarray.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -391,9 +391,14 @@
     }
 
     VTABLE void push_pmc(PMC *value) {
+        const INTVAL size   = PMC_size(SELF);
+        const INTVAL thresh = PMC_threshold(SELF);
 
-        const INTVAL size = PMC_size(SELF);
-        SELF.set_integer_native(size + 1);
+        if (PMC_array(SELF) && size < thresh)
+            PMC_size(SELF) = size + 1;
+        else {
+            SELF.set_integer_native(size + 1);
+        }
         ((PMC **)PMC_array(SELF))[size] = value;
 
         return;
@@ -655,13 +660,13 @@
 
         for (j = 0; j < n; ++j) {
             PMC * const val = SELF.get_pmc_keyed_int(j);
-            res      = Parrot_str_append(INTERP, res, VTABLE_get_repr(INTERP, val));
+            res      = Parrot_str_concat(INTERP, res, VTABLE_get_repr(INTERP, val));
 
             if (j < n - 1)
-                res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ", "));
+                res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ", "));
         }
 
-        return Parrot_str_append(INTERP, res, CONST_STRING(INTERP, " ]"));
+        return Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, " ]"));
     }
 
 /*

Deleted: branches/runcore_purge/src/pmc/retcontinuation.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/retcontinuation.pmc	Sat Apr 24 00:51:33 2010	(r45947)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,118 +0,0 @@
-/*
-Copyright (C) 2001-2008, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/pmc/retcontinuation.pmc - Return Continuation
-
-=head1 DESCRIPTION
-
-C<RetContinuation> extends C<Continuation>.
-
-A return continuation is a one shot Continuation.  It gets recycled immediately
-after invocation.
-
-=head2 Methods
-
-=over 4
-
-=cut
-
-*/
-
-#include "parrot/oplib/ops.h"
-
-/* HEADERIZER HFILE: none */
-/* HEADERIZER BEGIN: static */
-/* HEADERIZER END: static */
-
-pmclass RetContinuation extends Continuation auto_attrs {
-
-/*
-
-=item C<void init()>
-
-Initializes the continuation.
-
-=cut
-
-*/
-
-    VTABLE void init() {
-        Parrot_RetContinuation_attributes * const attrs = PARROT_RETCONTINUATION(SELF);
-
-        attrs->to_ctx          = CURRENT_CONTEXT(interp);
-        attrs->from_ctx        = PMCNULL;    /* filled in during a call */
-        attrs->runloop_id      = 0;
-        attrs->seg             = interp->code;
-        attrs->address         = NULL;
-    }
-
-
-/*
-
-=item C<PMC *clone>
-
-Return a new Continuation PMC with the context of SELF. Note: the returned
-object is not a RetContinuation and creating a real Continuation invalidates
-all RetContinuation all the way up the call chain.  That is, these can't be
-recycled; they persist until the GC gets at them.
-
-=cut
-
-*/
-    VTABLE PMC *clone() {
-        invalidate_retc_context(INTERP, SELF);
-        return SUPER();
-    }
-/*
-
-=item C<opcode_t *invoke(void *next)>
-
-Transfers control to the calling context and frees the current context.
-
-=cut
-
-*/
-
-    VTABLE opcode_t *invoke(void *in_next) {
-        Parrot_Continuation_attributes *data = PARROT_CONTINUATION(SELF);
-        PMC               *from_ctx   = data->from_ctx;
-        PackFile_ByteCode * const seg = data->seg;
-        opcode_t          *next       = data->address;
-        UNUSED(in_next)
-
-        Parrot_continuation_check(interp, SELF);
-        Parrot_continuation_rewind_environment(interp, SELF);
-
-        /* recycle this PMC and make sure it doesn't get marked */
-        if (!PMC_IS_NULL(from_ctx))
-            Parrot_pcc_set_continuation(interp, from_ctx, NULL);
-
-        if (INTERP->code != seg)
-            Parrot_switch_to_cs(INTERP, seg, 1);
-
-        return next;
-    }
-}
-
-
-/*
-
-=back
-
-=head1 HISTORY
-
-Initial revision by sean 2002/08/04.
-
-=cut
-
-*/
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Modified: branches/runcore_purge/src/pmc/role.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/role.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/role.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -515,7 +515,7 @@
         }
 
         /* Otherwise, copy the stored string name of the class. */
-        return Parrot_str_copy(interp, role->name);
+        return role->name;
     }
 
 /*

Modified: branches/runcore_purge/src/pmc/scalar.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/scalar.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/scalar.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -632,7 +632,7 @@
 
     VTABLE PMC *concatenate(PMC *value, PMC *dest) {
         STRING * const s = Parrot_str_concat(INTERP, SELF.get_string(),
-            VTABLE_get_string(INTERP, value), 0);
+            VTABLE_get_string(INTERP, value));
 
         dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
@@ -642,7 +642,7 @@
 
     VTABLE PMC *concatenate_str(STRING *value, PMC *dest) {
         STRING * const s = Parrot_str_concat(INTERP,
-            SELF.get_string(), value, 0);
+            SELF.get_string(), value);
 
         dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
@@ -653,12 +653,12 @@
     VTABLE void i_concatenate(PMC *value) {
         STRING * const s = SELF.get_string();
         STRING * const v = VTABLE_get_string(INTERP, value);
-        SELF.set_string_native(Parrot_str_append(INTERP, s, v));
+        SELF.set_string_native(Parrot_str_concat(INTERP, s, v));
     }
 
     VTABLE void i_concatenate_str(STRING *value) {
         STRING * const s = SELF.get_string();
-        SELF.set_string_native(Parrot_str_append(INTERP, s, value));
+        SELF.set_string_native(Parrot_str_concat(INTERP, s, value));
     }
 
 /*
@@ -924,7 +924,7 @@
 
     VTABLE STRING *substr_str(INTVAL offset, INTVAL length) {
         return Parrot_str_substr(INTERP, VTABLE_get_string(INTERP, SELF),
-            offset, length, NULL, 0);
+                offset, length);
     }
 
 /*

Modified: branches/runcore_purge/src/pmc/schedulermessage.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/schedulermessage.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/schedulermessage.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -114,7 +114,10 @@
 */
 
     VTABLE INTVAL get_integer() {
-        Parrot_SchedulerMessage_attributes * core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+        const Parrot_SchedulerMessage_attributes * const
+            core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+        UNUSED(interp);
+
         return core_struct->id;
     }
 
@@ -129,7 +132,8 @@
 */
 
     VTABLE void set_integer_native(INTVAL value) {
-        Parrot_SchedulerMessage_attributes * core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+        Parrot_SchedulerMessage_attributes * const core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+        UNUSED(interp);
         core_struct->id = value;
     }
 
@@ -145,7 +149,9 @@
 */
 
     STRING *  get_string() {
-        Parrot_SchedulerMessage_attributes * core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+        const Parrot_SchedulerMessage_attributes * const core_struct =
+            PARROT_SCHEDULERMESSAGE(SELF);
+        UNUSED(interp);
         return core_struct->type;
     }
 
@@ -160,7 +166,8 @@
 */
 
     VTABLE void set_string_native(STRING *value) {
-        Parrot_SchedulerMessage_attributes * core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+        Parrot_SchedulerMessage_attributes * const core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+        UNUSED(interp);
         core_struct->type = value;
     }
 

Modified: branches/runcore_purge/src/pmc/string.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/string.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/string.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -125,8 +125,7 @@
     VTABLE STRING *get_string() {
         STRING *str_val;
         GET_ATTR_str_val(INTERP, SELF, str_val);
-
-        return STRING_IS_NULL(str_val) ? STRINGNULL : Parrot_str_copy(INTERP, str_val);
+        return str_val;
     }
 
 /*
@@ -217,12 +216,7 @@
 */
 
     VTABLE void assign_string_native(STRING *value) {
-        if (!STRING_IS_NULL(value)) {
-            SET_ATTR_str_val(INTERP, SELF,
-                Parrot_str_set(INTERP, SELF.get_string(), value));
-        }
-        else
-            SET_ATTR_str_val(INTERP, SELF, NULL);
+        SET_ATTR_str_val(INTERP, SELF, value);
     }
 
 /*
@@ -375,7 +369,7 @@
     VTABLE void substr(INTVAL offset, INTVAL length, PMC *dest) {
         STRING *str_val, *s2;
         GET_ATTR_str_val(INTERP, SELF, str_val);
-        s2 = Parrot_str_substr(INTERP, str_val, offset, length, NULL, 0);
+        s2 = Parrot_str_substr(INTERP, str_val, offset, length);
         VTABLE_set_string_native(INTERP, dest, s2);
     }
 
@@ -392,7 +386,7 @@
     VTABLE STRING *substr_str(INTVAL offset, INTVAL length) {
         STRING *str_val;
         GET_ATTR_str_val(INTERP, SELF, str_val);
-        return Parrot_str_substr(INTERP, str_val, offset, length, NULL, 0);
+        return Parrot_str_substr(INTERP, str_val, offset, length);
     }
 
 /*
@@ -447,7 +441,7 @@
     VTABLE STRING *get_string_keyed_int(INTVAL pos) {
         STRING      *str_val;
         GET_ATTR_str_val(INTERP, SELF, str_val);
-        return Parrot_str_substr(INTERP, str_val, pos, 1, NULL, 0);
+        return Parrot_str_substr(INTERP, str_val, pos, 1);
     }
 
     VTABLE INTVAL get_integer_keyed(PMC *key) {
@@ -478,7 +472,8 @@
         STRING      *str_val;
         const INTVAL len = Parrot_str_byte_length(INTERP, value);
         GET_ATTR_str_val(INTERP, SELF, str_val);
-        Parrot_str_replace(INTERP, str_val, pos, len, value, NULL);
+        str_val = Parrot_str_replace(INTERP, str_val, pos, len, value);
+        SET_ATTR_str_val(INTERP, SELF, str_val);
     }
 
     VTABLE void set_integer_keyed(PMC *key, INTVAL value) {
@@ -489,7 +484,8 @@
         STRING      *str_val;
         STRING * const c = string_chr(INTERP, (UINTVAL) value);
         GET_ATTR_str_val(INTERP, SELF, str_val);
-        Parrot_str_replace(INTERP, str_val, pos, 1, c, NULL);
+        str_val = Parrot_str_replace(INTERP, str_val, pos, 1, c);
+        SET_ATTR_str_val(INTERP, SELF, str_val);
     }
 
     VTABLE void set_pmc_keyed(PMC *key, PMC *value) {
@@ -512,11 +508,11 @@
     METHOD replace(STRING *orig, STRING *_new) {
         const INTVAL   old_len = Parrot_str_byte_length(INTERP, orig);
         const INTVAL   new_len = Parrot_str_byte_length(INTERP, _new);
-        STRING * const s       = VTABLE_get_string(INTERP, SELF);
+        STRING       * s       = VTABLE_get_string(INTERP, SELF);
         INTVAL         i       = 0;
 
         while (-1 != (i = Parrot_str_find_index(INTERP, s, orig, i))) {
-            (void)Parrot_str_replace(INTERP, s, i, old_len, _new, NULL);
+            s = Parrot_str_replace(INTERP, s, i, old_len, _new);
             i += new_len;
         }
 

Modified: branches/runcore_purge/src/pmc/stringhandle.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/stringhandle.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/stringhandle.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -110,11 +110,11 @@
         Parrot_StringHandle_attributes * const data_struct = PARROT_STRINGHANDLE(copy);
 
         if (old_struct->stringhandle != NULL)
-            data_struct->stringhandle = Parrot_str_copy(INTERP, old_struct->stringhandle);
+            data_struct->stringhandle = old_struct->stringhandle;
         if (old_struct->mode != NULL)
-            data_struct->mode     = Parrot_str_copy(INTERP, old_struct->mode);
+            data_struct->mode     = old_struct->mode;
         if (old_struct->encoding != NULL)
-            data_struct->encoding = Parrot_str_copy(INTERP, old_struct->encoding);
+            data_struct->encoding = old_struct->encoding;
         data_struct->flags    = old_struct->flags;
 
         return copy;
@@ -182,10 +182,10 @@
         INTVAL flags;
 
         if (got_mode && !STRING_IS_NULL(mode))
-            SET_ATTR_mode(INTERP, SELF, Parrot_str_copy(INTERP, mode));
+            SET_ATTR_mode(INTERP, SELF, mode);
 
         if (got_filename && !STRING_IS_NULL(filename))
-            SET_ATTR_filename(INTERP, SELF, Parrot_str_copy(INTERP, filename));
+            SET_ATTR_filename(INTERP, SELF, filename);
 
 
         /* If StringHandle hasn't already been initialized, create a new string. */
@@ -317,8 +317,6 @@
             else
                 string_result = Parrot_str_new_constant(INTERP, "");
         }
-        else
-            string_result = Parrot_str_copy(INTERP, string_result);
 
         RETURN(STRING *string_result);
     }
@@ -378,7 +376,7 @@
             Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_PIO_ERROR,
                 "Cannot write to a filehandle not opened for write");
 
-        new_string = Parrot_str_append(interp, old_string, to_print);
+        new_string = Parrot_str_concat(interp, old_string, to_print);
 
         SET_ATTR_stringhandle(INTERP, SELF, new_string);
 
@@ -464,13 +462,9 @@
 */
 
     METHOD mode() {
-        STRING *mode, *mode_copy;
-
+        STRING *mode;
         GET_ATTR_mode(INTERP, SELF, mode);
-        mode_copy = Parrot_str_copy(INTERP, mode);
-
-        RETURN(STRING *mode_copy);
-
+        RETURN(STRING *mode);
     }
 
 /*
@@ -486,21 +480,14 @@
 
     METHOD encoding(STRING *new_encoding :optional, INTVAL got_encoding :opt_flag) {
         STRING *encoding;
-        STRING *encoding_copy = NULL;
 
         if (got_encoding) {
-            if (!STRING_IS_NULL(new_encoding))
-                encoding_copy = Parrot_str_copy(INTERP, new_encoding);
-            SET_ATTR_encoding(INTERP, SELF, encoding_copy);
+            SET_ATTR_encoding(INTERP, SELF, new_encoding);
             RETURN(STRING *new_encoding);
         }
 
         GET_ATTR_encoding(INTERP, SELF, encoding);
-        if (!STRING_IS_NULL(encoding))
-            encoding_copy = Parrot_str_copy(INTERP, encoding);
-
-        RETURN(STRING *encoding_copy);
-
+        RETURN(STRING *encoding);
     }
 
 /*

Modified: branches/runcore_purge/src/pmc/sub.pmc
==============================================================================
--- branches/runcore_purge/src/pmc/sub.pmc	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/pmc/sub.pmc	Sat Apr 24 00:51:33 2010	(r45948)
@@ -252,20 +252,14 @@
 */
 
     VTABLE STRING *get_string() {
-        Parrot_Sub_attributes *sub;
-        PMC_get_sub(INTERP, SELF, sub);
-
-        if (sub->name)
-            return Parrot_str_copy(INTERP, sub->name);
-
-        return NULL;
+        STRING *name;
+        GET_ATTR_name(INTERP, SELF, name);
+        return name;
     }
 
 
     VTABLE void set_string_native(STRING *subname) {
-        Parrot_Sub_attributes *sub;
-        PMC_get_sub(INTERP, SELF, sub);
-        sub->name = Parrot_str_copy(INTERP, subname);
+        SET_ATTR_name(INTERP, SELF, subname);
     }
 
 
@@ -398,8 +392,10 @@
         pc                   = sub->seg->base.data + sub->start_offs;
         INTERP->current_cont = NULL;
 
-        if (ccont == NEED_CONTINUATION)
-            ccont = new_ret_continuation_pmc(interp, (opcode_t *)next);
+        if (ccont == NEED_CONTINUATION) {
+            ccont = pmc_new(interp, enum_class_Continuation);
+            VTABLE_set_pointer(interp, ccont, next);
+        }
 
         PARROT_ASSERT(!PMC_IS_NULL(ccont));
 
@@ -427,12 +423,9 @@
         PARROT_CONTINUATION(ccont)->from_ctx = context;
 
         /* if this is an outer sub, then we need to set sub->ctx
-         * to the new context (refcounted) and convert the
-         * retcontinuation to a normal continuation.  */
+         * to the new context (refcounted) */
         if (PObj_get_FLAGS(SELF) & SUB_FLAG_IS_OUTER) {
             sub->ctx = context;
-            /* convert retcontinuation to a continuation */
-            ccont->vtable = interp->vtables[enum_class_Continuation];
         }
 
         /* create pad if needed
@@ -528,9 +521,6 @@
         /* first set the sub struct, Parrot_str_copy may cause GC */
         *sub = *dest_sub;
 
-        if (sub->name)
-            sub->name = Parrot_str_copy(INTERP, sub->name);
-
         /* Be sure not to share arg_info. */
         dest_sub->arg_info = NULL;
 
@@ -563,10 +553,6 @@
 
             /* copy the sub struct */
             memmove(my_sub, other_sub, sizeof (Parrot_Sub_attributes));
-
-            /* copy the name so it's a different string in memory */
-            if (my_sub->name)
-                my_sub->name = Parrot_str_copy(INTERP, my_sub->name);
         }
         else
             Parrot_ex_throw_from_c_args(INTERP, NULL,

Modified: branches/runcore_purge/src/runcore/profiling.c
==============================================================================
--- branches/runcore_purge/src/runcore/profiling.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/runcore/profiling.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -387,12 +387,12 @@
                 i++;
                 i++; /* the root namespace has an empty name, so ignore it */
                 for (;i < MAX_NS_DEPTH; i++) {
-                    full_ns = Parrot_str_concat(interp, full_ns, ns_names[i], 0);
-                    full_ns = Parrot_str_concat(interp, full_ns, ns_separator, 0);
+                    full_ns = Parrot_str_concat(interp, full_ns, ns_names[i]);
+                    full_ns = Parrot_str_concat(interp, full_ns, ns_separator);
                 }
 
                 GETATTR_Sub_name(interp, preop_ctx->current_sub, sub_name);
-                full_ns = Parrot_str_concat(interp, full_ns, sub_name, 0);
+                full_ns = Parrot_str_concat(interp, full_ns, sub_name);
                 full_ns_cstr = Parrot_str_to_cstring(interp, full_ns);
 
                 pprof_data[PPROF_DATA_NAMESPACE] = (PPROF_DATA) full_ns_cstr;

Modified: branches/runcore_purge/src/spf_render.c
==============================================================================
--- branches/runcore_purge/src/spf_render.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/spf_render.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -69,16 +69,15 @@
 PARROT_CANNOT_RETURN_NULL
 static STRING * handle_flags(PARROT_INTERP,
     ARGIN(const SpfInfo *info),
-    ARGMOD(STRING *str),
+    ARGIN(STRING *str),
     INTVAL is_int_type,
     ARGIN_NULLOK(STRING* prefix))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*str);
+        __attribute__nonnull__(3);
 
 PARROT_CANNOT_RETURN_NULL
-static STRING* str_append_w_flags(PARROT_INTERP,
+static STRING* str_concat_w_flags(PARROT_INTERP,
     ARGOUT(STRING *dest),
     ARGIN(const SpfInfo *info),
     ARGMOD(STRING *src),
@@ -97,7 +96,7 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(info) \
     , PARROT_ASSERT_ARG(str))
-#define ASSERT_ARGS_str_append_w_flags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_str_concat_w_flags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(dest) \
     , PARROT_ASSERT_ARG(info) \
@@ -127,7 +126,7 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static STRING *
-handle_flags(PARROT_INTERP, ARGIN(const SpfInfo *info), ARGMOD(STRING *str),
+handle_flags(PARROT_INTERP, ARGIN(const SpfInfo *info), ARGIN(STRING *str),
         INTVAL is_int_type, ARGIN_NULLOK(STRING* prefix))
 {
     ASSERT_ARGS(handle_flags)
@@ -137,26 +136,26 @@
         if (info->flags & FLAG_PREC && info->prec == 0 &&
                 len == 1 &&
                 string_ord(interp, str, 0) == '0') {
-            Parrot_str_chopn_inplace(interp, str, len);
+            str = Parrot_str_chopn(interp, str, len);
             len = 0;
         }
         /* +, space */
         if (!len || string_ord(interp, str, 0) != '-') {
             if (info->flags & FLAG_PLUS) {
                 STRING * const cs = CONST_STRING(interp, "+");
-                str = Parrot_str_concat(interp, cs, str, 0);
+                str = Parrot_str_concat(interp, cs, str);
                 len++;
             }
             else if (info->flags & FLAG_SPACE) {
                 STRING * const cs = CONST_STRING(interp, " ");
-                str = Parrot_str_concat(interp, cs, str, 0);
+                str = Parrot_str_concat(interp, cs, str);
                 len++;
             }
         }
 
         /* # 0x ... */
         if ((info->flags & FLAG_SHARP) && prefix) {
-            str = Parrot_str_concat(interp, prefix, str, 0);
+            str = Parrot_str_concat(interp, prefix, str);
             len += Parrot_str_byte_length(interp, prefix);
         }
         /* XXX sharp + fill ??? */
@@ -178,11 +177,11 @@
     else {
         /* string precision */
         if (info->flags & FLAG_PREC && info->prec == 0) {
-            Parrot_str_chopn_inplace(interp, str, len);
+            str = Parrot_str_chopn(interp, str, len);
             len = 0;
         }
         else if (info->flags & FLAG_PREC && info->prec < len) {
-            Parrot_str_chopn_inplace(interp, str, -(INTVAL)(info->prec));
+            str = Parrot_str_chopn(interp, str, -(INTVAL)(info->prec));
             len = info->prec;
         }
     }
@@ -195,7 +194,7 @@
         STRING * const fill = Parrot_str_repeat(interp, filler, info->width - len);
 
         if (info->flags & FLAG_MINUS) { /* left-align */
-            str = Parrot_str_concat(interp, str, fill, 0);
+            str = Parrot_str_concat(interp, str, fill);
         }
         else {                  /* right-align */
             /* signed and zero padded */
@@ -204,14 +203,13 @@
                     string_ord(interp, str, 0) == '+')) {
                 STRING *temp = NULL;
                 STRING *ignored;
-                ignored = Parrot_str_substr(interp, str, 1, len-1, &temp, 0);
-                UNUSED(ignored);
-                Parrot_str_chopn_inplace(interp, str, -1);
-                str = Parrot_str_append(interp, str, fill);
-                str = Parrot_str_append(interp, str, temp);
+                temp = Parrot_str_substr(interp, str, 1, len-1);
+                str = Parrot_str_chopn(interp, str, -1);
+                str = Parrot_str_concat(interp, str, fill);
+                str = Parrot_str_concat(interp, str, temp);
             }
             else {
-                str = Parrot_str_concat(interp, fill, str, 0);
+                str = Parrot_str_concat(interp, fill, str);
             }
         }
     }
@@ -220,7 +218,7 @@
 
 /*
 
-=item C<static STRING* str_append_w_flags(PARROT_INTERP, STRING *dest, const
+=item C<static STRING* str_concat_w_flags(PARROT_INTERP, STRING *dest, const
 SpfInfo *info, STRING *src, STRING *prefix)>
 
 Used by Parrot_sprintf_format.  Prepends supplied prefix for numeric
@@ -234,12 +232,12 @@
 
 PARROT_CANNOT_RETURN_NULL
 static STRING*
-str_append_w_flags(PARROT_INTERP, ARGOUT(STRING *dest), ARGIN(const SpfInfo *info),
+str_concat_w_flags(PARROT_INTERP, ARGOUT(STRING *dest), ARGIN(const SpfInfo *info),
         ARGMOD(STRING *src), ARGIN_NULLOK(STRING *prefix))
 {
-    ASSERT_ARGS(str_append_w_flags)
+    ASSERT_ARGS(str_concat_w_flags)
     src = handle_flags(interp, info, src, 1, prefix);
-    dest = Parrot_str_append(interp, dest, src);
+    dest = Parrot_str_concat(interp, dest, src);
     return dest;
 }
 
@@ -346,11 +344,9 @@
     for (i = 0; i < pat_len; i++) {
         if (string_ord(interp, pat, i) == '%') {        /* % */
             if (len) {
-                STRING *ignored
-                    = Parrot_str_substr(interp, pat, old, len, &substr, 1);
-                UNUSED(ignored);
+                substr = Parrot_str_substr(interp, pat, old, len);
                 /* XXX This shouldn't modify targ the pointer */
-                targ = Parrot_str_append(interp, targ, substr);
+                targ = Parrot_str_concat(interp, targ, substr);
             }
             len = 0;
             old = i;
@@ -604,7 +600,7 @@
                             {
                             STRING * const ts = string_chr(interp,
                                  (UINTVAL)obj->getint(interp, info.type, obj));
-                            targ = str_append_w_flags(interp, targ, &info, ts, NULL);
+                            targ = str_concat_w_flags(interp, targ, &info, ts, NULL);
                             }
                             break;
 
@@ -618,7 +614,7 @@
 
                             /* unsigned conversion - no plus */
                             info.flags &= ~FLAG_PLUS;
-                            targ        = str_append_w_flags(interp, targ,
+                            targ        = str_concat_w_flags(interp, targ,
                                             &info, ts, prefix);
                             }
                             break;
@@ -633,7 +629,7 @@
 
                             /* unsigned conversion - no plus */
                             info.flags &= ~FLAG_PLUS;
-                            targ        = str_append_w_flags(interp, targ,
+                            targ        = str_concat_w_flags(interp, targ,
                                             &info, ts, prefix);
                             }
                             break;
@@ -643,13 +639,13 @@
                             STRING * const prefix = CONST_STRING(interp, "0X");
                             const UHUGEINTVAL theuint =
                                 obj->getuint(interp, info.type, obj);
-                            STRING * const ts =
+                            STRING * ts =
                                 Parrot_str_from_uint(interp, tc, theuint, 16, 0);
-                            Parrot_str_upcase_inplace(interp, ts);
+                            ts = Parrot_str_upcase(interp, ts);
 
                             /* unsigned conversion - no plus */
                             info.flags &= ~FLAG_PLUS;
-                            targ        = str_append_w_flags(interp, targ,
+                            targ        = str_concat_w_flags(interp, targ,
                                             &info, ts, prefix);
                             }
                             break;
@@ -664,7 +660,7 @@
 
                             /* unsigned conversion - no plus */
                             info.flags &= ~FLAG_PLUS;
-                            targ        = str_append_w_flags(interp, targ,
+                            targ        = str_concat_w_flags(interp, targ,
                                             &info, ts, prefix);
                             }
                             break;
@@ -679,7 +675,7 @@
 
                             /* unsigned conversion - no plus */
                             info.flags &= ~FLAG_PLUS;
-                            targ        = str_append_w_flags(interp, targ,
+                            targ        = str_concat_w_flags(interp, targ,
                                             &info, ts, prefix);
                             }
                             break;
@@ -718,7 +714,7 @@
 #endif
                                 Parrot_str_free_cstring(tempstr);
                             }
-                            targ = Parrot_str_append(interp, targ, cstr2pstr(tc));
+                            targ = Parrot_str_concat(interp, targ, cstr2pstr(tc));
                             }
                             break;
 
@@ -730,7 +726,7 @@
                             STRING * const ts = Parrot_str_from_uint(interp, tc,
                                        (UHUGEINTVAL) (size_t) ptr, 16, 0);
 
-                            targ = str_append_w_flags(interp, targ, &info,
+                            targ = str_concat_w_flags(interp, targ, &info,
                                     ts, prefix);
                             }
                             break;
@@ -818,7 +814,7 @@
                             }
 #endif /* WIN32 */
 
-                            targ = Parrot_str_append(interp, targ, cstr2pstr(tc));
+                            targ = Parrot_str_concat(interp, targ, cstr2pstr(tc));
                             }
                             break;
 
@@ -838,7 +834,7 @@
                                                     string, 0, NULL);
                                 obj->index++;
 
-                                targ = Parrot_str_append(interp, targ, ts);
+                                targ = Parrot_str_concat(interp, targ, ts);
                                 break;
                             }
 
@@ -851,7 +847,7 @@
                             if (!STRING_IS_NULL(string)) {
                                 STRING * const ts = handle_flags(interp,
                                         &info, string, 0, NULL);
-                                targ = Parrot_str_append(interp, targ, ts);
+                                targ = Parrot_str_concat(interp, targ, ts);
                             }
                             }
                             break;
@@ -894,9 +890,8 @@
         }
     }
     if (len) {
-        STRING *ignored = Parrot_str_substr(interp, pat, old, len, &substr, 1);
-        UNUSED(ignored);
-        targ = Parrot_str_append(interp, targ, substr);
+        substr = Parrot_str_substr(interp, pat, old, len);
+        targ = Parrot_str_concat(interp, targ, substr);
     }
 
     return targ;

Modified: branches/runcore_purge/src/spf_vtable.c
==============================================================================
--- branches/runcore_purge/src/spf_vtable.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/spf_vtable.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -453,7 +453,7 @@
     obj->index++;
     s = VTABLE_get_string(interp, tmp);
     /* XXX Parrot_str_copy like below? + adjusting bufused */
-    return Parrot_str_substr(interp, s, 0, 1, NULL, 0);
+    return Parrot_str_substr(interp, s, 0, 1);
 }
 
 /*

Modified: branches/runcore_purge/src/string/api.c
==============================================================================
--- branches/runcore_purge/src/string/api.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/api.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -33,7 +33,7 @@
 #endif
 
 #define nonnull_encoding_name(s) (s) ? (s)->encoding->name : "null string"
-#define saneify_string(s) \
+#define ASSERT_STRING_SANITY(s) \
     PARROT_ASSERT((s)->encoding); \
     PARROT_ASSERT((s)->charset); \
     PARROT_ASSERT(!PObj_on_free_list_TEST(s))
@@ -43,16 +43,8 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-static void make_writable(PARROT_INTERP,
-    ARGMOD(STRING **s),
-    const size_t len,
-    parrot_string_representation_t representation)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*s);
-
 PARROT_INLINE
-PARROT_WARN_UNUSED_RESULT
+PARROT_IGNORABLE_RESULT
 PARROT_CAN_RETURN_NULL
 static const CHARSET * string_rep_compatible(SHIM_INTERP,
     ARGIN(const STRING *a),
@@ -63,9 +55,6 @@
         __attribute__nonnull__(4)
         FUNC_MODIFIES(*e);
 
-#define ASSERT_ARGS_make_writable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_string_rep_compatible __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(a) \
     , PARROT_ASSERT_ARG(b) \
@@ -114,162 +103,6 @@
     return STRING_IS_NULL(s);
 }
 
-
-/*
-
-=item C<void Parrot_str_write_COW(PARROT_INTERP, STRING *s)>
-
-If the specified Parrot string is copy-on-write then the memory is
-copied over and the copy-on-write flag is cleared.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_str_write_COW(PARROT_INTERP, ARGMOD(STRING *s))
-{
-    ASSERT_ARGS(Parrot_str_write_COW)
-
-    /* COW_FLAG | constant_FLAG | external_FLAG) */
-    if (PObj_is_cowed_TESTALL(s)) {
-        /* Create new pool data for this header to use,
-         * independent of the original COW data */
-        PObj_constant_CLEAR(s);
-
-        /* constant may have been marked */
-        PObj_live_CLEAR(s);
-
-        if (Buffer_buflen(s)) {
-            STRING for_alloc;
-            size_t alloc_size;
-
-            PObj_flags_CLEARALL(&for_alloc);
-            alloc_size = s->bufused;
-            Parrot_gc_allocate_string_storage(interp, &for_alloc, alloc_size);
-
-            /* now copy memory over */
-            mem_sys_memcopy(for_alloc.strstart, s->strstart, alloc_size);
-
-            /* and finally use that string memory */
-
-            Buffer_bufstart(s) = Buffer_bufstart(&for_alloc);
-            s->strstart      = for_alloc.strstart;
-            Buffer_buflen(s)   = Buffer_buflen(&for_alloc);
-            PARROT_ASSERT(Buffer_buflen(s) >= alloc_size);
-        }
-
-        /* COW_FLAG | external_FLAG */
-        PObj_is_external_CLEARALL(s);
-    }
-
-    s->hashval = 0;
-}
-
-/*
-
-=item C<STRING * Parrot_str_new_COW(PARROT_INTERP, STRING *s)>
-
-Creates a copy-on-write string, cloning a string header without
-allocating a new buffer.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-STRING *
-Parrot_str_new_COW(PARROT_INTERP, ARGMOD(STRING *s))
-{
-    ASSERT_ARGS(Parrot_str_new_COW)
-    STRING *d;
-
-    if (PObj_constant_TEST(s)) {
-        d = Parrot_gc_new_string_header(interp,
-            PObj_get_FLAGS(s) & ~PObj_constant_FLAG);
-        PObj_COW_SET(s);
-        STRUCT_COPY(d, s);
-        /* we can't move the memory, because constants aren't
-         * scanned in compact_pool, therefore the other end
-         * would point to garbage.
-         */
-        PObj_constant_CLEAR(d);
-        PObj_external_SET(d);
-    }
-    else {
-        d = Parrot_gc_new_string_header(interp, PObj_get_FLAGS(s));
-        PObj_COW_SET(s);
-        STRUCT_COPY(d, s);
-        PObj_sysmem_CLEAR(d);
-    }
-    return d;
-}
-
-/*
-
-=item C<STRING * Parrot_str_reuse_COW(PARROT_INTERP, STRING *s, STRING *d)>
-
-Creates a copy-on-write string by cloning a string header without
-allocating a new buffer. Doesn't allocate a new string header, instead
-using the one passed in and returns it.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-STRING *
-Parrot_str_reuse_COW(SHIM_INTERP, ARGMOD(STRING *s), ARGOUT(STRING *d))
-{
-    ASSERT_ARGS(Parrot_str_reuse_COW)
-
-    if (PObj_constant_TEST(s)) {
-        PObj_COW_SET(s);
-        STRUCT_COPY(d, s);
-        PObj_constant_CLEAR(d);
-        PObj_external_SET(d);
-    }
-    else {
-        PObj_COW_SET(s);
-        STRUCT_COPY(d, s);
-        PObj_sysmem_CLEAR(d);
-    }
-    return d;
-}
-
-/*
-
-=item C<STRING * Parrot_str_set(PARROT_INTERP, STRING *dest, STRING *src)>
-
-Makes the contents of first Parrot string a copy of the contents of
-second.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-STRING *
-Parrot_str_set(PARROT_INTERP, ARGIN_NULLOK(STRING *dest), ARGMOD(STRING *src))
-{
-    ASSERT_ARGS(Parrot_str_set)
-    if (dest == src)
-        return dest;
-    if (!STRING_IS_NULL(dest)) { /* && dest != src */
-        /* they are different, dest is not an external string */
-        dest = Parrot_str_reuse_COW(interp, src, dest);
-    }
-    else
-        dest = Parrot_str_new_COW(interp, src);
-    return dest;
-}
-
-
 /*
 
 =back
@@ -298,15 +131,16 @@
     const size_t n_parrot_cstrings =
         sizeof (parrot_cstrings) / sizeof (parrot_cstrings[0]);
 
-    if (interp->parent_interpreter) {
+    if (interp->parent_interpreter)
         interp->hash_seed = interp->parent_interpreter->hash_seed;
-    }
+
     /* interp is initialized from zeroed memory, so this is fine */
     else if (interp->hash_seed == 0) {
         /* TT #64 - use an entropy source once available */
         Parrot_srand(Parrot_intval_time());
         interp->hash_seed = Parrot_uint_rand(0);
     }
+
     /* initialize the constant string table */
     if (interp->parent_interpreter) {
         interp->const_cstring_table =
@@ -345,6 +179,7 @@
     }
 }
 
+
 /*
 
 =item C<void Parrot_str_finish(PARROT_INTERP)>
@@ -360,6 +195,7 @@
 Parrot_str_finish(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_str_finish)
+
     /* all are shared between interpreters */
     if (!interp->parent_interpreter) {
         mem_internal_free(interp->const_cstring_table);
@@ -369,28 +205,6 @@
     }
 }
 
-/*
-
-=item C<UINTVAL string_capacity(PARROT_INTERP, const STRING *s)>
-
-Returns the capacity of the specified Parrot string in bytes, that
-is how many bytes can be appended onto strstart.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_PURE_FUNCTION
-UINTVAL
-string_capacity(SHIM_INTERP, ARGIN(const STRING *s))
-{
-    ASSERT_ARGS(string_capacity)
-
-    return ((ptrcast_t)Buffer_bufstart(s) + Buffer_buflen(s) -
-            (ptrcast_t)s->strstart);
-}
 
 /*
 
@@ -426,6 +240,7 @@
     return s;
 }
 
+
 /*
 
 =item C<static const CHARSET * string_rep_compatible(PARROT_INTERP, const STRING
@@ -436,20 +251,21 @@
   ascii <op> utf8 => utf8
                   => ascii, B<if> C<STRING *b> has ascii chars only.
 
-Returs NULL, if no compatible string representation can be found.
+Returns NULL, if no compatible string representation can be found.
 
 =cut
 
 */
 
 PARROT_INLINE
-PARROT_WARN_UNUSED_RESULT
+PARROT_IGNORABLE_RESULT
 PARROT_CAN_RETURN_NULL
 static const CHARSET *
 string_rep_compatible(SHIM_INTERP,
     ARGIN(const STRING *a), ARGIN(const STRING *b), ARGOUT(const ENCODING **e))
 {
     ASSERT_ARGS(string_rep_compatible)
+
     if (a->encoding == b->encoding && a->charset == b->charset) {
         *e = a->encoding;
         return a->charset;
@@ -457,7 +273,7 @@
 
     /* a table could possibly simplify the logic */
     if (a->encoding == Parrot_utf8_encoding_ptr
-    &&  b->charset == Parrot_ascii_charset_ptr) {
+    &&  b->charset  == Parrot_ascii_charset_ptr) {
         if (a->strlen == a->bufused) {
             *e = Parrot_fixed_8_encoding_ptr;
             return b->charset;
@@ -467,7 +283,7 @@
     }
 
     if (b->encoding == Parrot_utf8_encoding_ptr
-    &&  a->charset == Parrot_ascii_charset_ptr) {
+    &&  a->charset  == Parrot_ascii_charset_ptr) {
         if (b->strlen == b->bufused) {
             *e = Parrot_fixed_8_encoding_ptr;
             return a->charset;
@@ -501,14 +317,47 @@
 
 /*
 
-=item C<STRING * Parrot_str_concat(PARROT_INTERP, STRING *a, STRING *b, UINTVAL
-Uflags)>
+=item C<STRING* Parrot_str_clone(PARROT_INTERP, const STRING *s)>
 
-Concatenates two Parrot strings. If necessary, converts the second
-string's encoding and/or type to match those of the first string. If
-either string is C<NULL>, then a copy of the non-C<NULL> string is
-returned. If both strings are C<NULL>, then a new zero-length string is
-created and returned.
+Helper function to clone string.
+
+=cut
+
+*/
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+STRING*
+Parrot_str_clone(PARROT_INTERP, ARGIN(const STRING *s))
+{
+    ASSERT_ARGS(Parrot_str_clone)
+
+    const size_t alloc_size = s->bufused;
+    STRING * const result = Parrot_gc_new_string_header(interp, 0);
+
+    /* Copy encoding/charset/etc */
+    STRUCT_COPY(result, s);
+
+    /* Clear COW flag. We own buffer */
+    PObj_get_FLAGS(result)  = PObj_is_string_FLAG
+                            | PObj_is_COWable_FLAG
+                            | PObj_live_FLAG;
+
+    /* Allocate new chunk of memory */
+    Parrot_gc_allocate_string_storage(interp, result, alloc_size);
+
+    /* and copy it over */
+    mem_sys_memcopy(result->strstart, s->strstart, alloc_size);
+
+    return result;
+}
+
+
+/*
+
+=item C<STRING * Parrot_str_copy(PARROT_INTERP, STRING *s)>
+
+Creates and returns a shallow copy of the specified Parrot string.
 
 =cut
 
@@ -516,52 +365,63 @@
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
 STRING *
-Parrot_str_concat(PARROT_INTERP, ARGIN_NULLOK(STRING *a),
-            ARGIN_NULLOK(STRING *b), UINTVAL Uflags)
+Parrot_str_copy(PARROT_INTERP, ARGMOD(STRING *s))
 {
-    ASSERT_ARGS(Parrot_str_concat)
-    if (a && a->strlen) {
-        if (b && b->strlen) {
-            /* don't make a copy; get the size right from the start */
-            STRING *result = Parrot_str_new_init(interp, NULL,
-                a->strlen + b->strlen, a->encoding, a->charset, Uflags);
-            result = Parrot_str_append(interp, result, a);
-            return Parrot_str_append(interp, result, b);
-        }
+    ASSERT_ARGS(Parrot_str_copy)
+    STRING *d;
 
-        return Parrot_str_copy(interp, a);
+    /* We set COW flag to avoid cloning buffer in compact_pool */
+
+    if (PObj_constant_TEST(s)) {
+        d = Parrot_gc_new_string_header(interp,
+            PObj_get_FLAGS(s) & ~PObj_constant_FLAG);
+        PObj_COW_SET(s);
+        STRUCT_COPY(d, s);
+        /* we can't move the memory, because constants aren't
+         * scanned in compact_pool, therefore the other end
+         * would point to garbage.
+         */
+        PObj_constant_CLEAR(d);
+        PObj_external_SET(d);
+    }
+    else {
+        d = Parrot_gc_new_string_header(interp, PObj_get_FLAGS(s));
+        PObj_COW_SET(s);
+        STRUCT_COPY(d, s);
+        PObj_sysmem_CLEAR(d);
     }
 
-    return b
-        ? Parrot_str_copy(interp, b)
-        : string_make(interp, NULL, 0, NULL, Uflags);
+    return d;
 }
 
 
 /*
 
-=item C<STRING * Parrot_str_append(PARROT_INTERP, STRING *a, STRING *b)>
+=item C<STRING * Parrot_str_concat(PARROT_INTERP, STRING *a, STRING *b)>
 
-Take in two Parrot strings and append the second to the first.  NOTE THAT
-RETURN VALUE MAY NOT BE THE FIRST STRING, if the first string is COW'd or
-read-only.  So make sure to _use_ the return value.
+Concatenates two Parrot strings. If necessary, converts the second
+string's encoding and/or type to match those of the first string. If
+either string is C<NULL>, then a copy of the non-C<NULL> string is
+returned. If both strings are C<NULL>, then a new zero-length string is
+created and returned.
 
 =cut
 
 */
 
 PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
 STRING *
-Parrot_str_append(PARROT_INTERP, ARGMOD_NULLOK(STRING *a), ARGIN_NULLOK(STRING *b))
+Parrot_str_concat(PARROT_INTERP, ARGIN_NULLOK(STRING *a),
+            ARGIN_NULLOK(STRING *b))
 {
-    ASSERT_ARGS(Parrot_str_append)
-    UINTVAL a_capacity;
-    UINTVAL total_length;
-    const CHARSET *cs;
-    const ENCODING *enc;
+    ASSERT_ARGS(Parrot_str_concat)
+    const CHARSET   *cs;
+    const ENCODING  *enc;
+    STRING          *dest;
+    UINTVAL          total_length;
 
     /* XXX should this be a CHARSET method? */
 
@@ -572,15 +432,10 @@
 
     /* Is A real? */
     if (STRING_IS_NULL(a) || Buffer_bufstart(a) == NULL)
-        return Parrot_str_copy(interp, b);
+        return b;
 
-    saneify_string(a);
-    saneify_string(b);
-
-    /* If the destination's constant, or external then just fall back to
-       Parrot_str_concat */
-    if (PObj_is_cowed_TESTALL(a))
-        return Parrot_str_concat(interp, a, b, 0);
+    ASSERT_STRING_SANITY(a);
+    ASSERT_STRING_SANITY(b);
 
     cs = string_rep_compatible(interp, a, b, &enc);
 
@@ -594,46 +449,45 @@
            ||  b->encoding == Parrot_utf16_encoding_ptr
            ||  a->encoding == Parrot_ucs2_encoding_ptr
            ||  b->encoding == Parrot_ucs2_encoding_ptr)
-              ? Parrot_utf16_encoding_ptr
-              : Parrot_utf8_encoding_ptr;
+            ? Parrot_utf16_encoding_ptr
+            : Parrot_utf8_encoding_ptr;
 
-        Parrot_unicode_charset_ptr->to_charset(interp, a, NULL);
-        b = Parrot_unicode_charset_ptr->to_charset(interp, b,
-                Parrot_gc_new_string_header(interp, 0));
+        a = Parrot_unicode_charset_ptr->to_charset(interp, a);
+        b = Parrot_unicode_charset_ptr->to_charset(interp, b);
 
         if (a->encoding != enc)
-            enc->to_encoding(interp, a, NULL);
+            a = enc->to_encoding(interp, a);
         if (b->encoding != enc)
-            enc->to_encoding(interp, b, NULL);
+            b = enc->to_encoding(interp, b);
     }
 
     /* calc usable and total bytes */
-    a_capacity   = string_capacity(interp, a);
     total_length = a->bufused + b->bufused;
 
-    /* make sure A's big enough for both  */
-    if (total_length > a_capacity)
-        Parrot_gc_reallocate_string_storage(interp, a, total_length << 1);
+    dest = Parrot_str_new_noinit(interp, enum_stringrep_one, total_length);
+    dest->encoding = a->encoding;
+    dest->charset  = a->charset;
 
-    /* A is now ready to receive the contents of B */
+    /* Copy A first */
+    mem_sys_memcopy(dest->strstart, a->strstart, a->bufused);
 
     /* Tack B on the end of A */
-    mem_sys_memcopy((void *)((ptrcast_t)a->strstart + a->bufused),
+    mem_sys_memcopy((void *)((ptrcast_t)dest->strstart + a->bufused),
             b->strstart, b->bufused);
 
-    a->bufused += b->bufused;
-    a->strlen  += b_len;
-    a->hashval  = 0;
+    dest->bufused = a->bufused + b->bufused;
+    dest->strlen  = a->strlen + b_len;
 
-    return a;
+    return dest;
 }
 
+
 /*
 
 =item C<STRING * Parrot_str_new(PARROT_INTERP, const char * const buffer, const
 UINTVAL len)>
 
-Make a Parrot string from a specified C string.
+Makes a Parrot string from a specified C string.
 
 =cut
 
@@ -647,11 +501,15 @@
 Parrot_str_new(PARROT_INTERP, ARGIN_NULLOK(const char * const buffer), const UINTVAL len)
 {
     ASSERT_ARGS(Parrot_str_new)
-    return Parrot_str_new_init(interp, buffer, len ? len :
-            buffer ? strlen(buffer) : 0,
-                              PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET,
-                              0); /* Force an 8-bit encoding at some
-                                     point? */
+    /* Force an 8-bit encoding at some point? */
+    if (len)
+        return Parrot_str_new_init(interp, buffer, len,
+            PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET, 0);
+    else {
+        const UINTVAL buff_length = buffer ? strlen(buffer) : 0;
+        return Parrot_str_new_init(interp, buffer, buff_length,
+            PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET, 0);
+    }
 }
 
 
@@ -660,9 +518,10 @@
 =item C<STRING * Parrot_str_new_from_buffer(PARROT_INTERP, Buffer *buffer, const
 UINTVAL len)>
 
-Make a Parrot string from a Buffer.
+Makes a Parrot string from a Buffer.
 
-The Buffer is nulled afterwards - only one PObj can point at a given string pool object.
+The Buffer is nulled afterwards, as only one PObj can point at a given string
+pool object.
 
 =cut
 
@@ -676,23 +535,23 @@
 Parrot_str_new_from_buffer(PARROT_INTERP, ARGMOD(Buffer *buffer), const UINTVAL len)
 {
     ASSERT_ARGS(Parrot_str_new_from_buffer)
-    STRING *result;
 
-    result = Parrot_gc_new_string_header(interp, 0);
+    STRING * const result   = Parrot_gc_new_string_header(interp, 0);
     Buffer_bufstart(result) = Buffer_bufstart(buffer);
     Buffer_buflen(result)   = Buffer_buflen(buffer);
-    result->strstart        = (char *) Buffer_bufstart(result);
+    result->strstart        = (char *)Buffer_bufstart(result);
     result->bufused         = len;
     result->strlen          = len;
     result->encoding        = Parrot_fixed_8_encoding_ptr;
     result->charset         = Parrot_binary_charset_ptr;
 
-    Buffer_bufstart(buffer) = NULL;
     Buffer_buflen(buffer)   = 0;
+    Buffer_bufstart(buffer) = NULL;
 
     return result;
 }
 
+
 /*
 
 =item C<const char* string_primary_encoding_for_representation(PARROT_INTERP,
@@ -723,6 +582,7 @@
         "invalid string representation");
 }
 
+
 /*
 
 =item C<STRING * Parrot_str_new_constant(PARROT_INTERP, const char *buffer)>
@@ -741,10 +601,9 @@
 {
     ASSERT_ARGS(Parrot_str_new_constant)
     DECL_CONST_CAST;
-    STRING *s;
     Hash   * const cstring_cache = (Hash *)interp->const_cstring_hash;
-
-    s = (STRING *)parrot_hash_get(interp, cstring_cache, buffer);
+    STRING *s                    = (STRING *)parrot_hash_get(interp,
+                                        cstring_cache, buffer);
 
     if (s)
         return s;
@@ -899,7 +758,7 @@
         if (encoding == Parrot_fixed_8_encoding_ptr)
             s->strlen = len;
         else
-            (void)Parrot_str_length(interp, s);
+            s->strlen = CHARSET_CODEPOINTS(interp, s);
 
         return s;
     }
@@ -912,7 +771,7 @@
         if (encoding == Parrot_fixed_8_encoding_ptr)
             s->strlen = len;
         else
-            (void)Parrot_str_length(interp, s);
+            s->strlen = CHARSET_CODEPOINTS(interp, s);
     }
     else {
         s->strlen = s->bufused = 0;
@@ -924,31 +783,6 @@
 
 /*
 
-=item C<STRING * Parrot_str_resize(PARROT_INTERP, STRING *s, UINTVAL addlen)>
-
-Grows the Parrot string's buffer by the specified number of characters.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-STRING *
-Parrot_str_resize(PARROT_INTERP, ARGMOD(STRING *s), UINTVAL addlen)
-{
-    ASSERT_ARGS(Parrot_str_resize)
-    Parrot_str_write_COW(interp, s);
-
-    /* Don't check buflen, if we are here, we already checked. */
-    Parrot_gc_reallocate_string_storage(interp,
-        s, Buffer_buflen(s) + string_max_bytes(interp, s, addlen));
-    return s;
-}
-
-
-/*
-
 =back
 
 =head2 Ordinary user-visible string operations
@@ -970,7 +804,7 @@
 {
     ASSERT_ARGS(Parrot_str_byte_length)
 
-    return !STRING_IS_NULL(s) ? s->strlen : 0;
+    return STRING_IS_NULL(s) ? 0 : s->strlen;
 }
 
 
@@ -995,7 +829,7 @@
 Parrot_str_indexed(PARROT_INTERP, ARGIN(const STRING *s), UINTVAL idx)
 {
     ASSERT_ARGS(Parrot_str_indexed)
-    saneify_string(s);
+    ASSERT_STRING_SANITY(s);
     return (INTVAL)CHARSET_GET_CODEPOINT(interp, s, idx);
 }
 
@@ -1020,9 +854,7 @@
         ARGIN(const STRING *s2), INTVAL start)
 {
     ASSERT_ARGS(Parrot_str_find_index)
-    STRING *src, *search;
     UINTVAL len;
-    DECL_CONST_CAST;
 
     if (start < 0)
         return -1;
@@ -1037,11 +869,13 @@
 
     if (!Parrot_str_byte_length(interp, s2))
         return -1;
+    else {
+        DECL_CONST_CAST;
+        STRING *src    = PARROT_const_cast(STRING *, s);
+        STRING *search = PARROT_const_cast(STRING *, s2);
 
-    src    = PARROT_const_cast(STRING *, s);
-    search = PARROT_const_cast(STRING *, s2);
-
-    return CHARSET_INDEX(interp, src, search, (UINTVAL)start);
+        return CHARSET_INDEX(interp, src, search, (UINTVAL)start);
+    }
 }
 
 
@@ -1121,34 +955,13 @@
 
 /*
 
-=item C<STRING * Parrot_str_copy(PARROT_INTERP, STRING *s)>
-
-Creates and returns a copy of the specified Parrot string.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-STRING *
-Parrot_str_copy(PARROT_INTERP, ARGMOD(STRING *s))
-{
-    ASSERT_ARGS(Parrot_str_copy)
-    return Parrot_str_new_COW(interp, s);
-}
-
-
-/*
-
 =back
 
 =head2 Vtable Dispatch Functions
 
 =over 4
 
-=item C<INTVAL Parrot_str_length(PARROT_INTERP, STRING *s)>
+=item C<INTVAL Parrot_str_length(PARROT_INTERP, const STRING *s)>
 
 Calculates and returns the number of characters in the specified Parrot string.
 
@@ -1159,11 +972,10 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 INTVAL
-Parrot_str_length(PARROT_INTERP, ARGMOD(STRING *s))
+Parrot_str_length(SHIM_INTERP, ARGIN(const STRING *s))
 {
     ASSERT_ARGS(Parrot_str_length)
 
-    s->strlen = CHARSET_CODEPOINTS(interp, s);
     return s->strlen;
 }
 
@@ -1190,6 +1002,7 @@
     return ENCODING_MAX_BYTES_PER_CODEPOINT(interp, s) * nchars;
 }
 
+
 /*
 
 =item C<STRING * Parrot_str_repeat(PARROT_INTERP, const STRING *s, UINTVAL num)>
@@ -1220,21 +1033,21 @@
             destpos += length;
         }
 
+        dest->strlen  = s->strlen  * num;
         dest->bufused = s->bufused * num;
-        dest->strlen  = s->strlen * num;
     }
 
     return dest;
 }
 
+
 /*
 
 =item C<STRING * Parrot_str_substr(PARROT_INTERP, STRING *src, INTVAL offset,
-INTVAL length, STRING **d, int replace_dest)>
+INTVAL length)>
 
-Copies the substring of length C<length> from C<offset> from the specified
-Parrot string and stores it in C<**d>, allocating memory if necessary. The
-substring is also returned.
+Returns substring of length C<length> from C<offset> from the specified
+Parrot string.
 
 =cut
 
@@ -1245,66 +1058,45 @@
 PARROT_WARN_UNUSED_RESULT
 STRING *
 Parrot_str_substr(PARROT_INTERP,
-        ARGIN_NULLOK(STRING *src), INTVAL offset, INTVAL length,
-        ARGOUT_NULLOK(STRING **d), int replace_dest)
+        ARGIN_NULLOK(STRING *src), INTVAL offset, INTVAL length)
 {
     ASSERT_ARGS(Parrot_str_substr)
-    if (STRING_IS_NULL(src))
-        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_SUBSTR_OUT_OF_STRING,
-            "Cannot substr on a null string");
-    else {
-        STRING *dest;
-        UINTVAL true_length;
-        UINTVAL true_offset = (UINTVAL)offset;
 
-        saneify_string(src);
+    UINTVAL true_length;
+    UINTVAL true_offset = (UINTVAL)offset;
 
-        /* Allow regexes to return $' easily for "aaa" =~ /aaa/ */
-        if (offset == (INTVAL)Parrot_str_byte_length(interp, src) || length < 1)
-            return Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
-
-        if (offset < 0)
-            true_offset = (UINTVAL)(src->strlen + offset);
-
-        /* 0 based... */
-        if (src->strlen == 0 || true_offset > src->strlen - 1)
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_SUBSTR_OUT_OF_STRING,
-                "Cannot take substr outside string");
+    if (STRING_IS_NULL(src))
+        Parrot_ex_throw_from_c_args(interp, NULL,
+            EXCEPTION_SUBSTR_OUT_OF_STRING, "Cannot substr on a null string");
 
-        true_length = (UINTVAL)length;
-        if (true_length > (src->strlen - true_offset))
-            true_length = (UINTVAL)(src->strlen - true_offset);
+    ASSERT_STRING_SANITY(src);
 
-        /* do in-place i.e. reuse existing header if one */
-        if (replace_dest && d && !STRING_IS_NULL(*d)) {
-            PARROT_ASSERT(src->encoding == Parrot_fixed_8_encoding_ptr);
-            dest           = *d;
+    /* Allow regexes to return $' easily for "aaa" =~ /aaa/ */
+    if (offset == (INTVAL)Parrot_str_byte_length(interp, src) || length < 1)
+        return Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
 
-            dest->encoding = src->encoding;
-            dest->charset  = src->charset;
+    if (offset < 0)
+        true_offset = (UINTVAL)(src->strlen + offset);
 
-            dest->strstart = (char *)src->strstart + true_offset;
-            dest->bufused  = true_length;
+    /* 0 based... */
+    if (src->strlen == 0 || true_offset > src->strlen - 1)
+        Parrot_ex_throw_from_c_args(interp, NULL,
+            EXCEPTION_SUBSTR_OUT_OF_STRING,
+            "Cannot take substr outside string");
 
-            dest->strlen   = true_length;
-            dest->hashval  = 0;
-        }
-        else
-            dest = CHARSET_GET_CODEPOINTS(interp, src, true_offset,
-                    true_length);
+    true_length = (UINTVAL)length;
 
-        if (d)
-            *d = dest;
+    if (true_length > (src->strlen - true_offset))
+        true_length = (UINTVAL)(src->strlen - true_offset);
 
-        return dest;
-    }
+    return CHARSET_GET_CODEPOINTS(interp, src, true_offset, true_length);
 }
 
 
 /*
 
-=item C<STRING * Parrot_str_replace(PARROT_INTERP, STRING *src, INTVAL offset,
-INTVAL length, STRING *rep, STRING **d)>
+=item C<STRING * Parrot_str_replace(PARROT_INTERP, const STRING *src, INTVAL
+offset, INTVAL length, const STRING *rep)>
 
 Replaces a sequence of C<length> characters from C<offset> in the first
 Parrot string with the second Parrot string, returning what was
@@ -1328,39 +1120,25 @@
 
 PARROT_EXPORT
 PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
 STRING *
-Parrot_str_replace(PARROT_INTERP, ARGIN(STRING *src),
-    INTVAL offset, INTVAL length, ARGIN(STRING *rep), ARGOUT_NULLOK(STRING **d))
+Parrot_str_replace(PARROT_INTERP, ARGIN(const STRING *src),
+    INTVAL offset, INTVAL length, ARGIN(const STRING *rep))
 {
     ASSERT_ARGS(Parrot_str_replace)
-    UINTVAL         start_byte, end_byte;
-    INTVAL          diff;
     String_iter     iter;
-
     const CHARSET  *cs;
     const ENCODING *enc;
     STRING         *dest        = NULL;
     UINTVAL         true_offset = (UINTVAL)offset;
     UINTVAL         true_length = (UINTVAL)length;
 
-    if (STRING_IS_NULL(src))
-        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
-            "Cannot replace on a null string");
-
-    /* special case */
-    if (d             == NULL
-    &&  src->encoding == Parrot_fixed_8_encoding_ptr
-    &&  rep->encoding == Parrot_fixed_8_encoding_ptr
-    &&  offset        >= 0
-    &&  true_offset   <  src->strlen
-    &&  length        == 1
-    &&  rep->strlen   == 1) {
-        if (PObj_is_cowed_TESTALL(src))
-            Parrot_str_write_COW(interp, src);
-
-        ((char *)src->strstart)[offset] = ((char *)rep->strstart)[0];
+    UINTVAL         start_byte, end_byte;
+    INTVAL          buf_size;
 
-        return STRINGNULL;
+    if (STRING_IS_NULL(src)) {
+        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
+            "Can't replace in NULL string");
     }
 
     /* abs(-offset) may not be > strlen-1 */
@@ -1372,29 +1150,22 @@
      * Only give exception if caller trys to replace end of string + 2
      */
     if (true_offset > src->strlen)
-        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_SUBSTR_OUT_OF_STRING,
+        Parrot_ex_throw_from_c_args(interp, NULL,
+            EXCEPTION_SUBSTR_OUT_OF_STRING,
             "Can only replace inside string or index after end of string");
 
     if (true_length > (src->strlen - true_offset))
         true_length = (UINTVAL)(src->strlen - true_offset);
 
-    /* Save the substring that is replaced for the return value */
-    if (d) {
-        dest = CHARSET_GET_CODEPOINTS(interp, src, true_offset, true_length);
-        *d = dest;
-    }
-
     /* may have different reps..... */
     cs = string_rep_compatible(interp, src, rep, &enc);
 
     if (!cs) {
-        Parrot_utf16_encoding_ptr->to_encoding(interp, src, NULL);
-        rep = Parrot_utf16_encoding_ptr->to_encoding(interp, rep,
-                Parrot_gc_new_string_header(interp, 0));
-    }
-    else {
-        src->charset  = cs;
-        src->encoding = enc;
+        src = Parrot_utf16_encoding_ptr->to_encoding(interp, src);
+        rep = Parrot_utf16_encoding_ptr->to_encoding(interp, rep);
+        /* Remember selected charset and encoding */
+        enc = src->encoding;
+        cs  = src->charset;
     }
 
     /* get byte position of the part that will be replaced */
@@ -1408,54 +1179,44 @@
 
     /* not possible.... */
     if (end_byte < start_byte)
-        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_SUBSTR_OUT_OF_STRING,
+        Parrot_ex_throw_from_c_args(interp, NULL,
+            EXCEPTION_SUBSTR_OUT_OF_STRING,
             "replace: subend somehow is less than substart");
 
     /* Now do the replacement */
-    Parrot_str_write_COW(interp, src);
-
-    /*
-     * If the replacement string fits inside the original substring
-     * don't create a new string, just pack it.
-     */
-    diff = (end_byte - start_byte) - rep->bufused;
-
-    if (diff >= 0
-    || ((INTVAL)src->bufused - (INTVAL)Buffer_buflen(src)) <= diff) {
+    dest = Parrot_gc_new_string_header(interp, 0);
 
-        if (diff != 0) {
-            mem_sys_memmove((char *)src->strstart + start_byte + rep->bufused,
-                    (char *)src->strstart + end_byte,
-                    src->bufused - end_byte);
-            src->bufused -= diff;
-        }
-
-        mem_sys_memcopy((char *)src->strstart + start_byte,
-                rep->strstart, rep->bufused);
-
-        if (diff)
-            (void)Parrot_str_length(interp, src);
-    }
+    /* Set encoding and charset to compatible */
+    dest->encoding = enc;
+    dest->charset  = cs;
+
+    /* Clear COW flag. We own buffer */
+    PObj_get_FLAGS(dest) = PObj_is_string_FLAG
+                         | PObj_is_COWable_FLAG
+                         | PObj_live_FLAG;
+
+            /* size            removed bytes            added bytes */
+    buf_size = src->bufused - (end_byte - start_byte) + rep->bufused;
+
+    /* Alloctate new string size. */
+    Parrot_gc_allocate_string_storage(interp, dest, buf_size);
+    dest->bufused = buf_size;
+
+    /* Copy begin of string */
+    mem_sys_memcopy(dest->strstart, src->strstart, start_byte);
+
+    /* Copy the replacement in */
+    mem_sys_memcopy((char *)dest->strstart + start_byte, rep->strstart,
+            rep->bufused);
+
+    /* Copy the end of old string */
+    mem_sys_memcopy((char *)dest->strstart + start_byte + rep->bufused,
+            (char *)src->strstart + end_byte,
+            src->bufused - end_byte);
 
-    /* Replacement is larger than avail buffer, grow the string */
-    else {
-        /* diff is negative here, make it positive */
-        diff = -(diff);
-        Parrot_str_resize(interp, src, (UINTVAL)diff);
-
-        /* Move the end of old string that isn't replaced to new offset first */
-        mem_sys_memmove((char *)src->strstart + end_byte + diff,
-                (char *)src->strstart + end_byte,
-                src->bufused - end_byte);
-
-        /* Copy the replacement in */
-        mem_sys_memcopy((char *)src->strstart + start_byte, rep->strstart,
-                rep->bufused);
-        src->bufused += diff;
-        src->strlen = CHARSET_CODEPOINTS(interp, src);
-    }
+    dest->strlen  = CHARSET_CODEPOINTS(interp, dest);
+    dest->hashval = 0;
 
-    /* src is modified, now return the original substring */
     return dest;
 }
 
@@ -1464,9 +1225,8 @@
 
 =item C<STRING * Parrot_str_chopn(PARROT_INTERP, STRING *s, INTVAL n)>
 
-Removes the last C<n> characters of the specified Parrot string. If C<n> is
-negative, cuts the string after C<+n> characters. The returned string is a copy
-of the one passed in.
+Removes the last C<n> characters of the specified Parrot string and returns the
+modified string. If C<n> is negative, cuts the string after C<+n> characters.
 
 =cut
 
@@ -1478,68 +1238,47 @@
 Parrot_str_chopn(PARROT_INTERP, ARGMOD(STRING *s), INTVAL n)
 {
     ASSERT_ARGS(Parrot_str_chopn)
-    STRING * const chopped = Parrot_str_copy(interp, s);
-    Parrot_str_chopn_inplace(interp, chopped, n);
-    return chopped;
-}
-
-
-/*
-
-=item C<void Parrot_str_chopn_inplace(PARROT_INTERP, STRING *s, INTVAL n)>
-
-Removes the last C<n> characters of the specified Parrot string. If C<n> is
-negative, cuts the string after C<+n> characters. The string passed in is
-modified and returned.
-
-=cut
 
-*/
-
-PARROT_EXPORT
-void
-Parrot_str_chopn_inplace(PARROT_INTERP, ARGMOD(STRING *s), INTVAL n)
-{
-    ASSERT_ARGS(Parrot_str_chopn_inplace)
+    STRING * const chopped = Parrot_str_copy(interp, s);
     UINTVAL new_length, uchar_size;
 
     if (n < 0) {
         new_length = -n;
-        if (new_length > s->strlen)
-            return;
+        if (new_length > chopped->strlen)
+            return chopped;
     }
     else {
-        if (s->strlen > (UINTVAL)n)
-            new_length = s->strlen - n;
+        if (chopped->strlen > (UINTVAL)n)
+            new_length = chopped->strlen - n;
         else
             new_length = 0;
     }
 
-    s->hashval = 0;
+    chopped->hashval = 0;
 
-    if (!new_length || !s->strlen) {
-        s->bufused = s->strlen = 0;
-        return;
+    if (!new_length || !chopped->strlen) {
+        chopped->bufused = chopped->strlen = 0;
+        return chopped;
     }
 
-    uchar_size = s->bufused / s->strlen;
-    s->strlen  = new_length;
+    uchar_size      = chopped->bufused / chopped->strlen;
+    chopped->strlen = new_length;
 
-    if (s->encoding == Parrot_fixed_8_encoding_ptr) {
-        s->bufused = new_length;
+    if (chopped->encoding == Parrot_fixed_8_encoding_ptr) {
+        chopped->bufused = new_length;
     }
-    else if (s->encoding == Parrot_ucs2_encoding_ptr) {
-        s->bufused = new_length * uchar_size;
+    else if (chopped->encoding == Parrot_ucs2_encoding_ptr) {
+        chopped->bufused = new_length * uchar_size;
     }
     else {
         String_iter iter;
 
         ENCODING_ITER_INIT(interp, s, &iter);
         iter.set_position(interp, &iter, new_length);
-        s->bufused = iter.bytepos;
+        chopped->bufused = iter.bytepos;
     }
 
-    return;
+    return chopped;
 }
 
 
@@ -1569,8 +1308,8 @@
     if (STRING_IS_NULL(s1))
         return -(s2->strlen != 0);
 
-    saneify_string(s1);
-    saneify_string(s2);
+    ASSERT_STRING_SANITY(s1);
+    ASSERT_STRING_SANITY(s2);
 
     return CHARSET_COMPARE(interp, s1, s2);
 }
@@ -1597,6 +1336,7 @@
     return !Parrot_str_equal(interp, s1, s2);
 }
 
+
 /*
 
 =item C<INTVAL Parrot_str_equal(PARROT_INTERP, const STRING *s1, const STRING
@@ -1617,28 +1357,27 @@
 Parrot_str_equal(PARROT_INTERP, ARGIN_NULLOK(const STRING *s1), ARGIN_NULLOK(const STRING *s2))
 {
     ASSERT_ARGS(Parrot_str_equal)
-    if ((s1 == s2) || (STRING_IS_NULL(s1) && STRING_IS_NULL(s2))) {
+
+    if ((s1 == s2) || (STRING_IS_NULL(s1) && STRING_IS_NULL(s2)))
         return 1;
-    }
-    else if (STRING_IS_NULL(s2)) {
+    else if (STRING_IS_NULL(s2))
         return s1->strlen == 0;
-    }
-    else if (STRING_IS_NULL(s1)) {
+    else if (STRING_IS_NULL(s1))
         return s2->strlen == 0;
-    }
-    else if (s1->strlen != s2->strlen) {
-        return 0;       /* we don't care which is bigger */
-    }
-    else if (s1->hashval != s2->hashval && s1->hashval && s2->hashval) {
+
+   /* we don't care which is bigger */
+    else if (s1->strlen != s2->strlen)
         return 0;
-    }
-    else if (!s1->strlen) {   /* s2->strlen is the same here */
+    else if (s1->hashval != s2->hashval && s1->hashval && s2->hashval)
+        return 0;
+
+    /* s2->strlen is the same here */
+    else if (!s1->strlen)
         return 1;
-    }
+
     /* COWed strings */
-    else if (s1->strstart == s2->strstart && s1->bufused == s2->bufused) {
+    else if (s1->strstart == s2->strstart && s1->bufused == s2->bufused)
         return 1;
-    }
 
     /*
      * now,
@@ -1651,39 +1390,11 @@
 
 /*
 
-=item C<static void make_writable(PARROT_INTERP, STRING **s, const size_t len,
-parrot_string_representation_t representation)>
-
-Makes the specified Parrot string writable with minimum length C<len>.  The
-C<representation> argument is required in case a new Parrot string has to be
-created.
-
-=cut
-
-*/
-
-static void
-make_writable(PARROT_INTERP, ARGMOD(STRING **s),
-    const size_t len, parrot_string_representation_t representation)
-{
-    ASSERT_ARGS(make_writable)
-    if (STRING_IS_NULL(*s))
-        *s = Parrot_str_new_noinit(interp, representation, len);
-    else if ((*s)->strlen < len)
-        Parrot_str_resize(interp, *s, (UINTVAL)(len - (*s)->strlen));
-    else if (PObj_is_cowed_TESTALL(*s))
-        Parrot_str_write_COW(interp, *s);
-}
-
-
-/*
-
 =item C<STRING * Parrot_str_bitwise_and(PARROT_INTERP, const STRING *s1, const
-STRING *s2, STRING **dest)>
+STRING *s2)>
 
 Performs a bitwise C<AND> on two Parrot strings, performing type and encoding
-conversions if necessary. If the third string is not C<NULL> then it is
-reused.  Otherwise a new Parrot string is created.
+conversions if necessary. Returns the result as a new string.
 
 =cut
 
@@ -1693,7 +1404,7 @@
 PARROT_CANNOT_RETURN_NULL
 STRING *
 Parrot_str_bitwise_and(PARROT_INTERP, ARGIN_NULLOK(const STRING *s1),
-        ARGIN_NULLOK(const STRING *s2), ARGOUT_NULLOK(STRING **dest))
+        ARGIN_NULLOK(const STRING *s2))
 {
     ASSERT_ARGS(Parrot_str_bitwise_and)
     STRING *res;
@@ -1716,14 +1427,8 @@
     else
         minlen = 0;
 
-    if (dest && !STRING_IS_NULL(*dest)) {
-        res           = *dest;
-        res->encoding = Parrot_fixed_8_encoding_ptr;
-        res->charset  = Parrot_binary_charset_ptr;
-    }
-    else
-        res = Parrot_str_new_init(interp, NULL, minlen,
-                Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
+    res = Parrot_str_new_init(interp, NULL, minlen,
+            Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
 
     if (STRING_IS_NULL(s1) || STRING_IS_NULL(s2)) {
         res->bufused = 0;
@@ -1738,8 +1443,6 @@
         Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
 #endif
 
-    make_writable(interp, &res, minlen, enum_stringrep_one);
-
     { /* bitwise AND the strings */
         const Parrot_UInt1 *curr1 = (Parrot_UInt1 *)s1->strstart;
         const Parrot_UInt1 *curr2 = (Parrot_UInt1 *)s2->strstart;
@@ -1752,12 +1455,10 @@
 
     res->bufused = res->strlen = minlen;
 
-    if (dest)
-        *dest = res;
-
     return res;
 }
 
+
 #define BITWISE_XOR_STRINGS(type1, type2, restype, s1, s2, res, maxlen) \
 do { \
     const type1 *curr1   = NULL; \
@@ -1831,11 +1532,10 @@
 /*
 
 =item C<STRING * Parrot_str_bitwise_or(PARROT_INTERP, const STRING *s1, const
-STRING *s2, STRING **dest)>
+STRING *s2)>
 
 Performs a bitwise C<OR> on two Parrot strings, performing type and encoding
-conversions if necessary. If the third string is not C<NULL>, then it is
-reused.  Otherwise a new Parrot string is created.
+conversions if necessary.  Returns the result as a new string.
 
 =cut
 
@@ -1845,7 +1545,7 @@
 PARROT_CANNOT_RETURN_NULL
 STRING *
 Parrot_str_bitwise_or(PARROT_INTERP, ARGIN_NULLOK(const STRING *s1),
-        ARGIN_NULLOK(const STRING *s2), ARGOUT_NULLOK(STRING **dest))
+        ARGIN_NULLOK(const STRING *s2))
 {
     ASSERT_ARGS(Parrot_str_bitwise_or)
     STRING *res;
@@ -1853,7 +1553,8 @@
 
     if (!STRING_IS_NULL(s1)) {
         if (s1->encoding != Parrot_fixed_8_encoding_ptr)
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+            Parrot_ex_throw_from_c_args(interp, NULL,
+                EXCEPTION_INVALID_ENCODING,
                 "string bitwise_or (%s/%s) unsupported",
                 s1->encoding->name, nonnull_encoding_name(s2));
 
@@ -1862,7 +1563,8 @@
 
     if (!STRING_IS_NULL(s2)) {
         if (s2->encoding != Parrot_fixed_8_encoding_ptr)
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+            Parrot_ex_throw_from_c_args(interp, NULL,
+                EXCEPTION_INVALID_ENCODING,
                 "string bitwise_or (%s/%s) unsupported",
                 nonnull_encoding_name(s1), s2->encoding->name);
 
@@ -1870,14 +1572,8 @@
             maxlen = s2->bufused;
     }
 
-    if (dest && !STRING_IS_NULL(*dest)) {
-        res           = *dest;
-        res->encoding = Parrot_fixed_8_encoding_ptr;
-        res->charset  = Parrot_binary_charset_ptr;
-    }
-    else
-        res = Parrot_str_new_init(interp, NULL, maxlen,
-                Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
+    res = Parrot_str_new_init(interp, NULL, maxlen,
+            Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
 
     if (!maxlen) {
         res->bufused = 0;
@@ -1891,15 +1587,10 @@
         Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
 #endif
 
-    make_writable(interp, &res, maxlen, enum_stringrep_one);
-
     BITWISE_OR_STRINGS(Parrot_UInt1, Parrot_UInt1, Parrot_UInt1,
             s1, s2, res, maxlen);
     res->bufused = res->strlen = maxlen;
 
-    if (dest)
-        *dest = res;
-
     return res;
 }
 
@@ -1907,11 +1598,10 @@
 /*
 
 =item C<STRING * Parrot_str_bitwise_xor(PARROT_INTERP, const STRING *s1, const
-STRING *s2, STRING **dest)>
+STRING *s2)>
 
 Performs a bitwise C<XOR> on two Parrot strings, performing type and encoding
-conversions if necessary. If the third string is not C<NULL>, then it is
-reused.  Otherwise a new Parrot string is created.
+conversions if necessary.  Returns the result as a new string.
 
 =cut
 
@@ -1921,7 +1611,7 @@
 PARROT_CANNOT_RETURN_NULL
 STRING *
 Parrot_str_bitwise_xor(PARROT_INTERP, ARGIN_NULLOK(const STRING *s1),
-        ARGIN_NULLOK(const STRING *s2), ARGOUT_NULLOK(STRING **dest))
+        ARGIN_NULLOK(const STRING *s2))
 {
     ASSERT_ARGS(Parrot_str_bitwise_xor)
     STRING *res;
@@ -1929,7 +1619,8 @@
 
     if (!STRING_IS_NULL(s1)) {
         if (s1->encoding != Parrot_fixed_8_encoding_ptr)
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+            Parrot_ex_throw_from_c_args(interp, NULL,
+                EXCEPTION_INVALID_ENCODING,
                 "string bitwise_xor (%s/%s) unsupported",
                 s1->encoding->name, nonnull_encoding_name(s2));
 
@@ -1938,7 +1629,8 @@
 
     if (!STRING_IS_NULL(s2)) {
         if (s2->encoding != Parrot_fixed_8_encoding_ptr)
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+            Parrot_ex_throw_from_c_args(interp, NULL,
+                EXCEPTION_INVALID_ENCODING,
                 "string bitwise_xor (%s/%s) unsupported",
                 nonnull_encoding_name(s1), s2->encoding->name);
 
@@ -1946,14 +1638,8 @@
             maxlen = s2->bufused;
     }
 
-    if (dest && !STRING_IS_NULL(*dest)) {
-        res           = *dest;
-        res->encoding = Parrot_fixed_8_encoding_ptr;
-        res->charset  = Parrot_binary_charset_ptr;
-    }
-    else
-        res = Parrot_str_new_init(interp, NULL, maxlen,
-                Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
+    res = Parrot_str_new_init(interp, NULL, maxlen,
+            Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
 
     if (!maxlen) {
         res->bufused = 0;
@@ -1967,15 +1653,10 @@
         Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
 #endif
 
-    make_writable(interp, &res, maxlen, enum_stringrep_one);
-
     BITWISE_XOR_STRINGS(Parrot_UInt1, Parrot_UInt1, Parrot_UInt1,
             s1, s2, res, maxlen);
     res->bufused = res->strlen = maxlen;
 
-    if (dest)
-        *dest = res;
-
     return res;
 }
 
@@ -1992,13 +1673,13 @@
     } \
 } while (0)
 
+
 /*
 
-=item C<STRING * Parrot_str_bitwise_not(PARROT_INTERP, const STRING *s, STRING
-**dest)>
+=item C<STRING * Parrot_str_bitwise_not(PARROT_INTERP, const STRING *s)>
 
-Performs a bitwise C<NOT> on a Parrot string. If the second string is
-not C<NULL> then it is reused, otherwise a new Parrot string is created.
+Performs a bitwise C<NOT> on a Parrot string.  Returns the result as a new
+string.
 
 =cut
 
@@ -2007,8 +1688,7 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 STRING *
-Parrot_str_bitwise_not(PARROT_INTERP, ARGIN_NULLOK(const STRING *s),
-    ARGOUT_NULLOK(STRING **dest))
+Parrot_str_bitwise_not(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
 {
     ASSERT_ARGS(Parrot_str_bitwise_not)
     STRING *res;
@@ -2016,7 +1696,8 @@
 
     if (!STRING_IS_NULL(s)) {
         if (s->encoding != Parrot_fixed_8_encoding_ptr)
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+            Parrot_ex_throw_from_c_args(interp, NULL,
+                EXCEPTION_INVALID_ENCODING,
                 "string bitwise_not (%s/%s) unsupported",
                 s->encoding->name, s->encoding->name);
 
@@ -2025,14 +1706,8 @@
     else
         len = 0;
 
-    if (dest && !STRING_IS_NULL(*dest)) {
-        res           = *dest;
-        res->encoding = Parrot_fixed_8_encoding_ptr;
-        res->charset  = Parrot_binary_charset_ptr;
-    }
-    else
-        res = Parrot_str_new_init(interp, NULL, len,
-                Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
+    res = Parrot_str_new_init(interp, NULL, len,
+            Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
 
     if (!len) {
         res->bufused = 0;
@@ -2046,13 +1721,9 @@
         Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
 #endif
 
-    make_writable(interp, &res, len, enum_stringrep_one);
-
     res->strlen = res->bufused = len;
 
     BITWISE_NOT_STRING(Parrot_UInt1, s, res);
-    if (dest)
-        *dest = res;
 
     return res;
 }
@@ -2121,12 +1792,15 @@
     return output;
 }
 
+
 /*
+
 State of FSM during number value parsing.
 
 Integer uses only parse_start, parse_before_dot and parse_end.
 
 */
+
 typedef enum number_parse_state {
     parse_start,
     parse_before_dot,
@@ -2192,8 +1866,9 @@
                     if (i < max_safe || (i == max_safe && nextval <= last_dig))
                         i = i * 10 + nextval;
                     else
-                        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ERR_OVERFLOW,
-                                "Integer value of String '%S' too big", s);
+                        Parrot_ex_throw_from_c_args(interp, NULL,
+                            EXCEPTION_ERR_OVERFLOW,
+                            "Integer value of String '%S' too big", s);
                     state = parse_before_dot;
                 }
                 else if (c == '-') {
@@ -2215,8 +1890,9 @@
                     if (i < max_safe || (i == max_safe && nextval <= last_dig))
                         i = i * 10 + nextval;
                     else
-                        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ERR_OVERFLOW,
-                                "Integer value of String '%S' too big", s);
+                        Parrot_ex_throw_from_c_args(interp, NULL,
+                            EXCEPTION_ERR_OVERFLOW,
+                            "Integer value of String '%S' too big", s);
                 }
                 else
                     state = parse_end;
@@ -2234,6 +1910,7 @@
     }
 }
 
+
 /*
 
 =item C<FLOATVAL Parrot_str_to_num(PARROT_INTERP, const STRING *s)>
@@ -2379,16 +2056,16 @@
     }
 
     /* Support for non-canonical NaN and Inf */
-    /* charpos <=2 because for "-i" iter will be advanced to next char already */
+    /* charpos <= 2 because for "-i" iter already advanced to next char */
     if (check_nan && (iter.charpos <= 2)) {
         STRING *t = Parrot_str_upcase(interp, s);
         if (Parrot_str_equal(interp, t, CONST_STRING(interp, "NAN")))
             return PARROT_FLOATVAL_NAN_QUIET;
         else if (Parrot_str_equal(interp, t, CONST_STRING(interp, "INF"))
-                || Parrot_str_equal(interp, t, CONST_STRING(interp, "INFINITY")))
+             ||  Parrot_str_equal(interp, t, CONST_STRING(interp, "INFINITY")))
             return PARROT_FLOATVAL_INF_POSITIVE;
         else if (Parrot_str_equal(interp, t, CONST_STRING(interp, "-INF"))
-                || Parrot_str_equal(interp, t, CONST_STRING(interp, "-INFINITY")))
+             ||  Parrot_str_equal(interp, t, CONST_STRING(interp, "-INFINITY")))
             return PARROT_FLOATVAL_INF_NEGATIVE;
         else
             return 0.0;
@@ -2472,8 +2149,8 @@
 =item C<char * Parrot_str_to_cstring(PARROT_INTERP, const STRING *s)>
 
 Returns a C string for the specified Parrot string. Use
-C<Parrot_str_free_cstring()> to free the string. Failure to do this will result in
-a memory leak.
+C<Parrot_str_free_cstring()> to free the string. Failure to do this will result
+in a memory leak.
 
 =cut
 
@@ -2486,12 +2163,13 @@
 Parrot_str_to_cstring(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
 {
     ASSERT_ARGS(Parrot_str_to_cstring)
+
     if (STRING_IS_NULL(s)) {
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
             "Can't convert NULL string");
     }
-    else
-      return string_to_cstring_nullable(interp, s);
+
+    return string_to_cstring_nullable(interp, s);
 }
 
 
@@ -2500,8 +2178,9 @@
 =item C<char * string_to_cstring_nullable(PARROT_INTERP, const STRING *s)>
 
 Returns a C string for the specified Parrot string. Use
-C<Parrot_str_free_cstring()> to free the string. Failure to do this will result in
-a memory leak.
+C<Parrot_str_free_cstring()> to free the string, if it's not NULL. Failure to
+do this will result in a memory leak.  Failure to check if the return value is
+NULL will result in embarrassment for you.
 
 =cut
 
@@ -2559,24 +2238,15 @@
 
 PARROT_EXPORT
 void
-Parrot_str_pin(PARROT_INTERP, ARGMOD(STRING *s))
+Parrot_str_pin(SHIM_INTERP, ARGMOD(STRING *s))
 {
     ASSERT_ARGS(Parrot_str_pin)
-    char  *memory;
-    size_t size;
-
-    /* XXX -lt: COW strings have the external_FLAG set, so this will
-     *          not work for these
-     *          so probably only sysmem should be tested
-     */
-    Parrot_str_write_COW(interp, s);
-
-    size   = Buffer_buflen(s);
-    memory = (char *)mem_internal_allocate(size);
+    size_t size   = Buffer_buflen(s);
+    char  *memory = (char *)mem_internal_allocate(size);
 
     mem_sys_memcopy(memory, Buffer_bufstart(s), size);
     Buffer_bufstart(s) = memory;
-    s->strstart      = memory;
+    s->strstart        = memory;
 
     /* Mark the memory as both from the system and immobile */
     PObj_sysmem_SET(s);
@@ -2602,12 +2272,10 @@
     size_t size;
 
     /* If this string is not marked using system memory,
-     * we just don't do this
-     */
+     * we just don't do this */
     if (!PObj_sysmem_TEST(s))
         return;
 
-    Parrot_str_write_COW(interp, s);
     size = Buffer_buflen(s);
 
     /* We need a handle on the fixed memory so we can get rid of it later */
@@ -2660,7 +2328,7 @@
         hashval = ENCODING_HASH(interp, s, hashval);
     else {
         /* ZZZZZ workaround for something not setting up encodings right */
-        saneify_string(s);
+        ASSERT_STRING_SANITY(s);
 
         ENCODING_ITER_INIT(interp, s, &iter);
 
@@ -2812,7 +2480,7 @@
         else
             hex = Parrot_sprintf_c(interp, "\\u%04x", c);
 
-        result = Parrot_str_append(interp, result, hex);
+        result = Parrot_str_concat(interp, result, hex);
 
         /* adjust our insert idx */
         i += hex->strlen;
@@ -2934,7 +2602,7 @@
 
     /* Force validating the string */
     if (encoding != result->encoding)
-        (void)Parrot_str_length(interp, result);
+        result->strlen = CHARSET_CODEPOINTS(interp, result);
 
     if (!CHARSET_VALIDATE(interp, result))
         Parrot_ex_throw_from_c_args(interp, NULL,
@@ -2962,41 +2630,13 @@
 Parrot_str_upcase(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
 {
     ASSERT_ARGS(Parrot_str_upcase)
-    if (STRING_IS_NULL(s)) {
-        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
-            "Can't upcase NULL string");
-    }
-    else {
-        DECL_CONST_CAST;
-        STRING * const dest = Parrot_str_copy(interp, PARROT_const_cast(STRING *, s));
-        Parrot_str_upcase_inplace(interp, dest);
-        return dest;
-    }
-}
-
-
-/*
-
-=item C<void Parrot_str_upcase_inplace(PARROT_INTERP, STRING *s)>
-
-Converts the specified Parrot string to upper case.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_str_upcase_inplace(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
-{
-    ASSERT_ARGS(Parrot_str_upcase_inplace)
-    if (STRING_IS_NULL(s)) {
+    if (STRING_IS_NULL(s))
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
             "Can't upcase NULL string");
-    }
     else {
-        Parrot_str_write_COW(interp, s);
-        CHARSET_UPCASE(interp, s);
+        STRING * const res = CHARSET_UPCASE(interp, s);
+        res->hashval = 0;
+        return res;
     }
 }
 
@@ -3019,47 +2659,14 @@
 Parrot_str_downcase(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
 {
     ASSERT_ARGS(Parrot_str_downcase)
-    if (STRING_IS_NULL(s)) {
-        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
-            "Can't downcase NULL string");
-    }
-    else {
-        DECL_CONST_CAST;
-        STRING * const dest = Parrot_str_copy(interp, PARROT_const_cast(STRING *, s));
-        Parrot_str_downcase_inplace(interp, dest);
-        return dest;
-    }
-}
-
-
-/*
-
-=item C<void Parrot_str_downcase_inplace(PARROT_INTERP, STRING *s)>
-
-Converts the specified Parrot string to lower case.
-
-=cut
 
-*/
-
-PARROT_EXPORT
-void
-Parrot_str_downcase_inplace(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
-{
-    ASSERT_ARGS(Parrot_str_downcase_inplace)
-    if (STRING_IS_NULL(s)) {
+    if (STRING_IS_NULL(s))
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
             "Can't downcase NULL string");
-    }
     else {
-        /*
-         * TODO get rid of all the inplace variants. We have for utf8:
-         * * 1 Parrot_str_copy from the non-incase variant
-         * * conversion to utf16, with doubling the buffer
-         * * possibly one more reallocation in downcase
-         */
-        Parrot_str_write_COW(interp, s);
-        CHARSET_DOWNCASE(interp, s);
+        STRING * const res = CHARSET_DOWNCASE(interp, s);
+        res->hashval = 0;
+        return res;
     }
 }
 
@@ -3082,41 +2689,14 @@
 Parrot_str_titlecase(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
 {
     ASSERT_ARGS(Parrot_str_titlecase)
-    if (STRING_IS_NULL(s)) {
-        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
-            "Can't titlecase NULL string");
-    }
-    else {
-        DECL_CONST_CAST;
-        STRING * const dest = Parrot_str_copy(interp, PARROT_const_cast(STRING *, s));
-        Parrot_str_titlecase_inplace(interp, dest);
-        return dest;
-    }
-}
-
-
-/*
-
-=item C<void Parrot_str_titlecase_inplace(PARROT_INTERP, STRING *s)>
-
-Converts the specified Parrot string to title case.
 
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_str_titlecase_inplace(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
-{
-    ASSERT_ARGS(Parrot_str_titlecase_inplace)
-    if (STRING_IS_NULL(s)) {
+    if (STRING_IS_NULL(s))
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
             "Can't titlecase NULL string");
-    }
     else {
-        Parrot_str_write_COW(interp, s);
-        CHARSET_TITLECASE(interp, s);
+        STRING * const res = CHARSET_TITLECASE(interp, s);
+        res->hashval = 0;
+        return res;
     }
 }
 
@@ -3176,7 +2756,7 @@
 Parrot_string_cstring(SHIM_INTERP, ARGIN(const STRING *str))
 {
     ASSERT_ARGS(Parrot_string_cstring)
-    /* TODO handle NUL and friends */
+    /* TODO handle NULL and friends */
     return str->strstart;
 }
 
@@ -3201,6 +2781,7 @@
         ARGIN(const STRING *s), UINTVAL offset)
 {
     ASSERT_ARGS(Parrot_str_is_cclass)
+
     if (!Parrot_str_byte_length(interp, s))
         return 0;
 
@@ -3227,12 +2808,14 @@
                           UINTVAL offset, UINTVAL count)
 {
     ASSERT_ARGS(Parrot_str_find_cclass)
+
     if (STRING_IS_NULL(s))
         return -1;
 
     return CHARSET_FIND_CCLASS(interp, flags, s, offset, count);
 }
 
+
 /*
 
 =item C<INTVAL Parrot_str_find_not_cclass(PARROT_INTERP, INTVAL flags, STRING
@@ -3254,6 +2837,7 @@
     ARGIN_NULLOK(STRING *s), UINTVAL offset, UINTVAL count)
 {
     ASSERT_ARGS(Parrot_str_find_not_cclass)
+
     if (STRING_IS_NULL(s))
         return -1;
 
@@ -3264,10 +2848,10 @@
 /*
 
 =item C<STRING* Parrot_str_change_charset(PARROT_INTERP, STRING *src, INTVAL
-charset_nr, STRING *dest)>
+charset_nr)>
 
-If C<dest> == NULL, converts C<src> to the given charset or encoding inplace.
-Otherwise returns a copy of C<src> with the charset/encoding in C<dest>.
+Converts C<src> to the given charset or encoding and returns the result as a
+new string.
 
 =cut
 
@@ -3278,7 +2862,7 @@
 PARROT_CAN_RETURN_NULL
 STRING*
 Parrot_str_change_charset(PARROT_INTERP, ARGMOD_NULLOK(STRING *src),
-        INTVAL charset_nr, ARGOUT_NULLOK(STRING *dest))
+        INTVAL charset_nr)
 {
     ASSERT_ARGS(Parrot_str_change_charset)
     const CHARSET *new_charset;
@@ -3292,41 +2876,20 @@
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_CHARTYPE,
                 "charset #%d not found", (int) charset_nr);
 
-    /*
-     * dest is an empty string header or NULL, if an inplace
-     * operation is desired
-     */
-    if (!STRING_IS_NULL(dest)) {
-        if (new_charset == src->charset) {
-            dest          = Parrot_str_reuse_COW(interp, src, dest);
-            dest->charset = new_charset;
-            /* keep encoding */
-            return dest;
-        }
-
-        dest->charset  = new_charset;
-
-        /* get prefered encoding for charset */
-        dest->encoding = CHARSET_GET_PREFERRED_ENCODING(interp, dest);
-    }
-    else {
-        if (new_charset == src->charset)
-            return src;
-
-        Parrot_str_write_COW(interp, src);
-    }
+    if (new_charset == src->charset)
+        return src;
 
-    return new_charset->to_charset(interp, src, dest);
+    return new_charset->to_charset(interp, src);
 }
 
 
 /*
 
 =item C<STRING* Parrot_str_change_encoding(PARROT_INTERP, STRING *src, INTVAL
-encoding_nr, STRING *dest)>
+encoding_nr)>
 
-If C<dest> == NULL, converts C<src> to the given charset or encoding in place.
-Otherwise returns a copy of C<src> with the charset/encoding in C<dest>
+Converts C<src> to the given charset or encoding and returns the result as a
+new string.
 
 =cut
 
@@ -3337,7 +2900,7 @@
 PARROT_CAN_RETURN_NULL
 STRING*
 Parrot_str_change_encoding(PARROT_INTERP, ARGIN_NULLOK(STRING *src),
-        INTVAL encoding_nr, ARGOUT_NULLOK(STRING *dest))
+        INTVAL encoding_nr)
 {
     ASSERT_ARGS(Parrot_str_change_encoding)
     const ENCODING *new_encoding;
@@ -3351,25 +2914,10 @@
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_CHARTYPE,
             "encoding #%d not found", (int) encoding_nr);
 
-    /*
-     * dest is an empty string header or NULL, if an inplace
-     * operation is desired
-     */
-    if (!STRING_IS_NULL(dest)) {
-        dest->encoding = new_encoding;
-        if (new_encoding == src->encoding) {
-            dest = Parrot_str_reuse_COW(interp, src, dest);
-            return dest;
-        }
-    }
-    else {
-        if (new_encoding == src->encoding)
-            return src;
-
-        Parrot_str_write_COW(interp, src);
-    }
+    if (new_encoding == src->encoding)
+        return src;
 
-    return new_encoding->to_encoding(interp, src, dest);
+    return new_encoding->to_encoding(interp, src);
 }
 
 
@@ -3390,6 +2938,7 @@
 Parrot_str_compose(PARROT_INTERP, ARGIN_NULLOK(STRING *src))
 {
     ASSERT_ARGS(Parrot_str_compose)
+
     if (STRING_IS_NULL(src))
         return NULL;
 
@@ -3418,24 +2967,105 @@
 Parrot_str_join(PARROT_INTERP, ARGIN_NULLOK(STRING *j), ARGIN(PMC *ar))
 {
     ASSERT_ARGS(Parrot_str_join)
-    STRING *res;
-    STRING *s;
-    const int ar_len = VTABLE_elements(interp, ar);
-    int i;
+    STRING  **chunks;
+    STRING   *res;
+    STRING   *s;
+    char     *pos;
+    const int ar_len       = VTABLE_elements(interp, ar);
+    int       total_length = 0;
+    int       transcoded   = 0;
+    int       i;
 
     if (ar_len == 0)
         return Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
 
-    s   = VTABLE_get_string_keyed_int(interp, ar, 0);
-    res = !STRING_IS_NULL(s) ? Parrot_str_copy(interp, s) : NULL;
+    if (STRING_IS_NULL(j))
+        j = Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
+
+    chunks = (STRING **)Parrot_gc_allocate_fixed_size_storage(interp,
+        ar_len * sizeof (STRING *));
+
+    for (i = 0; i < ar_len; ++i) {
+        STRING *next = VTABLE_get_string_keyed_int(interp, ar, i);
+
+        if (STRING_IS_NULL(next)) {
+            chunks[i] = STRINGNULL;
+            continue;
+        }
+
+        if (next->encoding != j->encoding) {
+            const ENCODING *e = j->encoding;
+
+            string_rep_compatible(interp, next, j, &e);
+            if (e == Parrot_fixed_8_encoding_ptr)
+                e = Parrot_utf8_encoding_ptr;
+            j           = e->to_encoding(interp, j);
+            transcoded  = 1;
+        }
+
+        chunks[i]     = next;
+        total_length += next->bufused;
+    }
+
+    /* with the right charset, transcode any strings if necessary*/
+    if (transcoded) {
+        const CHARSET  *c = j->charset;
+        const ENCODING *e = j->encoding;
+
+        for (i = 0; i < ar_len; ++i) {
+            STRING *s = chunks[i];
+
+            if (STRING_IS_NULL(s))
+                continue;
+
+            if (s->encoding != e || s->charset != c) {
+                STRING *new_s = e->to_encoding(interp, s);
+                chunks[i]     = new_s;
+                total_length += s->bufused - new_s->bufused;
+            }
+        }
+    }
+
+    /* add the length of the separator, now that it's transcoded */
+    total_length += j->bufused * ar_len;
+
+    res = Parrot_gc_new_string_header(interp, 0);
+    Parrot_gc_allocate_string_storage(interp, res, total_length);
+
+    res->charset  = j->charset;
+    res->encoding = j->encoding;
+
+    /* Iterate over chunks and append it to res */
+    pos = res->strstart;
+
+    /* Copy first chunk */
+    s = chunks[0];
+    if (!STRING_IS_NULL(s)) {
+        mem_sys_memcopy(pos, s->strstart, s->bufused);
+        pos += s->bufused;
+    }
 
     for (i = 1; i < ar_len; ++i) {
-        STRING * const next = VTABLE_get_string_keyed_int(interp, ar, i);
+        STRING *next = chunks[i];
+
+        if (STRING_IS_NULL(next))
+            continue;
 
-        res  = Parrot_str_append(interp, res, j);
-        res  = Parrot_str_append(interp, res, next);
+        mem_sys_memcopy(pos, j->strstart, j->bufused);
+        pos += j->bufused;
+
+        mem_sys_memcopy(pos, next->strstart, next->bufused);
+        pos += next->bufused;
+
+        PARROT_ASSERT(pos <= res->strstart + Buffer_buflen(res));
     }
 
+    res->bufused  = pos - res->strstart;
+    res->strlen = CHARSET_CODEPOINTS(interp, res);
+
+    Parrot_gc_free_fixed_size_storage(interp, ar_len * sizeof (STRING *),
+        chunks);
+
     return res;
 }
 
@@ -3445,8 +3075,8 @@
 =item C<PMC* Parrot_str_split(PARROT_INTERP, STRING *delim, STRING *str)>
 
 Splits the string C<str> at the delimiter C<delim>, returning a
-C<ResizableStringArray>, or his mapped type in the current HLL,
-of results. Returns PMCNULL if the string or the delimiter is NULL.
+C<ResizableStringArray>, or his mapped type in the current HLL, of results.
+Returns PMCNULL if the string or the delimiter is NULL.
 
 =cut
 
@@ -3466,7 +3096,8 @@
     if (STRING_IS_NULL(delim) || STRING_IS_NULL(str))
         return PMCNULL;
 
-    res  = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_ResizableStringArray));
+    res  = Parrot_pmc_new(interp,
+            Parrot_get_ctx_HLL_type(interp, enum_class_ResizableStringArray));
     slen = Parrot_str_byte_length(interp, str);
 
     if (!slen)
@@ -3479,7 +3110,7 @@
         VTABLE_set_integer_native(interp, res, slen);
 
         for (i = 0; i < slen; ++i) {
-            STRING * const p = Parrot_str_substr(interp, str, i, 1, NULL, 0);
+            STRING * const p = Parrot_str_substr(interp, str, i, 1);
             VTABLE_set_string_keyed_int(interp, res, i, p);
         }
 
@@ -3497,7 +3128,7 @@
 
     while (ps <= slen) {
         const int      pl   = pe - ps;
-        STRING * const tstr = Parrot_str_substr(interp, str, ps, pl, NULL, 0);
+        STRING * const tstr = Parrot_str_substr(interp, str, ps, pl);
 
         VTABLE_push_string(interp, res, tstr);
         ps = pe + Parrot_str_byte_length(interp, delim);
@@ -3539,6 +3170,7 @@
     unsigned int base, int minus)
 {
     ASSERT_ARGS(Parrot_str_from_uint)
+
     /* the buffer must be at least as long as this */
     char               *p    = tc + sizeof (UHUGEINTVAL)*8 + 1;
     const char * const  tail = p;
@@ -3547,12 +3179,12 @@
 
     do {
         const char cur = (char)(num % base);
-        if (cur < 10) {
+
+        if (cur < 10)
             *--p = (char)('0' + cur);
-        }
-        else {
+        else
             *--p = (char)('a' + cur - 10);
-        }
+
     } while (num /= base);
 
     if (minus)
@@ -3591,6 +3223,7 @@
     return Parrot_str_from_uint(interp, tc, (UHUGEINTVAL)num, base, is_neg);
 }
 
+
 /*
 
 =back

Modified: branches/runcore_purge/src/string/charset.c
==============================================================================
--- branches/runcore_purge/src/string/charset.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/charset.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -29,16 +29,16 @@
 #include "charset/iso-8859-1.h"
 #include "charset/unicode.h"
 
-CHARSET *Parrot_iso_8859_1_charset_ptr;
-CHARSET *Parrot_binary_charset_ptr;
-CHARSET *Parrot_default_charset_ptr;
-CHARSET *Parrot_unicode_charset_ptr;
-CHARSET *Parrot_ascii_charset_ptr;
+const CHARSET *Parrot_iso_8859_1_charset_ptr;
+const CHARSET *Parrot_binary_charset_ptr;
+const CHARSET *Parrot_default_charset_ptr;
+const CHARSET *Parrot_unicode_charset_ptr;
+const CHARSET *Parrot_ascii_charset_ptr;
 
 /* all registered charsets are collected in one global structure */
 
 typedef struct To_converter {
-    NOTNULL(CHARSET *to);
+    NOTNULL(const CHARSET *to);
     NOTNULL(charset_converter_t func);
 } To_converter;
 
@@ -97,7 +97,7 @@
 */
 
 PARROT_EXPORT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
 PARROT_MALLOC
 CHARSET *
 Parrot_new_charset(PARROT_INTERP)
@@ -168,7 +168,8 @@
 
 /*
 
-=item C<CHARSET * Parrot_load_charset(PARROT_INTERP, const char *charsetname)>
+=item C<const CHARSET * Parrot_load_charset(PARROT_INTERP, const char
+*charsetname)>
 
 Throws an exception (Can't load charsets dynamically yet. https://trac.parrot.org/parrot/wiki/StringsTasklist).
 
@@ -179,7 +180,7 @@
 PARROT_EXPORT
 PARROT_CAN_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
-CHARSET *
+const CHARSET *
 Parrot_load_charset(PARROT_INTERP, ARGIN(const char *charsetname))
 {
     ASSERT_ARGS(Parrot_load_charset)
@@ -243,7 +244,7 @@
 
 /*
 
-=item C<STRING* Parrot_charset_name(PARROT_INTERP, INTVAL number_of_charset)>
+=item C<STRING * Parrot_charset_name(PARROT_INTERP, INTVAL number_of_charset)>
 
 Returns the name of the charset given by the INTVAL index
 C<number_of_charset>.
@@ -255,12 +256,12 @@
 PARROT_EXPORT
 PARROT_CAN_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
-STRING*
+STRING *
 Parrot_charset_name(SHIM_INTERP, INTVAL number_of_charset)
 {
     ASSERT_ARGS(Parrot_charset_name)
     if (number_of_charset < 0 || number_of_charset >= all_charsets->n_charsets)
-        return NULL;
+        return STRINGNULL;
     return all_charsets->set[number_of_charset].name;
 }
 
@@ -509,7 +510,7 @@
 /*
 
 =item C<INTVAL Parrot_make_default_charset(PARROT_INTERP, const char
-*charsetname, CHARSET *charset)>
+*charsetname, const CHARSET *charset)>
 
 Sets the current default charset to C<charset> with name C<charsetname>.
 
@@ -520,7 +521,7 @@
 PARROT_EXPORT
 INTVAL
 Parrot_make_default_charset(SHIM_INTERP, SHIM(const char *charsetname),
-        ARGIN(CHARSET *charset))
+        ARGIN(const CHARSET *charset))
 {
     ASSERT_ARGS(Parrot_make_default_charset)
     Parrot_default_charset_ptr = charset;
@@ -587,7 +588,7 @@
 /*
 
 =item C<void Parrot_register_charset_converter(PARROT_INTERP, const CHARSET
-*lhs, CHARSET *rhs, charset_converter_t func)>
+*lhs, const CHARSET *rhs, charset_converter_t func)>
 
 Registers a converter C<func> from charset C<lhs> to C<rhs>.
 
@@ -598,7 +599,7 @@
 PARROT_EXPORT
 void
 Parrot_register_charset_converter(PARROT_INTERP,
-        ARGIN(const CHARSET *lhs), ARGIN(CHARSET *rhs),
+        ARGIN(const CHARSET *lhs), ARGIN(const CHARSET *rhs),
         ARGIN(charset_converter_t func))
 {
     ASSERT_ARGS(Parrot_register_charset_converter)

Modified: branches/runcore_purge/src/string/charset/ascii.c
==============================================================================
--- branches/runcore_purge/src/string/charset/ascii.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/charset/ascii.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2004-2009, Parrot Foundation.
+Copyright (C) 2004-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -42,10 +42,15 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*src);
 
-static void downcase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase(PARROT_INTERP, ARGIN(const STRING *source_string))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void downcase_first(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase_first(PARROT_INTERP,
+    ARGIN(const STRING *source_string))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
@@ -73,56 +78,41 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(3);
 
-static void set_graphemes(PARROT_INTERP,
-    ARGIN(STRING *source_string),
-    UINTVAL offset,
-    UINTVAL replace_count,
-    ARGMOD(STRING *insert_string))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*insert_string);
-
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 static STRING * string_from_codepoint(PARROT_INTERP, UINTVAL codepoint)
         __attribute__nonnull__(1);
 
-static void titlecase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase(PARROT_INTERP, ARGIN(const STRING *source_string))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void titlecase_first(SHIM_INTERP, ARGMOD(STRING *source_string))
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*source_string);
-
 PARROT_CANNOT_RETURN_NULL
-static STRING * to_ascii(PARROT_INTERP,
-    ARGIN(STRING *src),
-    ARGMOD_NULLOK(STRING *dest))
+static STRING* titlecase_first(PARROT_INTERP,
+    ARGIN(const STRING *source_string))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*dest);
+        __attribute__nonnull__(2);
 
 PARROT_CANNOT_RETURN_NULL
-static STRING * to_charset(PARROT_INTERP,
-    ARGIN(STRING *src),
-    ARGIN_NULLOK(STRING *dest))
+static STRING * to_ascii(PARROT_INTERP, ARGIN(STRING *src))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_CANNOT_RETURN_NULL
-static STRING * to_unicode(PARROT_INTERP,
-    ARGMOD(STRING *src),
-    ARGMOD_NULLOK(STRING *dest))
+static STRING * to_charset(PARROT_INTERP, ARGIN(STRING *src))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*src)
-        FUNC_MODIFIES(*dest);
+        __attribute__nonnull__(2);
 
-static void upcase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase(PARROT_INTERP, ARGIN(const STRING *source_string))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void upcase_first(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase_first(PARROT_INTERP,
+    ARGIN(const STRING *source_string))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
@@ -137,9 +127,11 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_downcase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(source_string))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(source_string))
 #define ASSERT_ARGS_downcase_first __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(source_string))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(source_string))
 #define ASSERT_ARGS_find_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(source_string))
@@ -149,29 +141,26 @@
 #define ASSERT_ARGS_is_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_set_graphemes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(source_string) \
-    , PARROT_ASSERT_ARG(insert_string))
 #define ASSERT_ARGS_string_from_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_titlecase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(source_string))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(source_string))
 #define ASSERT_ARGS_titlecase_first __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(source_string))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(source_string))
 #define ASSERT_ARGS_to_ascii __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_to_charset __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_to_unicode __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_upcase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(source_string))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(source_string))
 #define ASSERT_ARGS_upcase_first __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(source_string))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(source_string))
 #define ASSERT_ARGS_validate __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
@@ -202,53 +191,7 @@
 
 /*
 
-=item C<static void set_graphemes(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL replace_count, STRING *insert_string)>
-
-Sets the graphemes for C<source_string>, starting at C<offset>. Replace
-C<replace_count> graphemes with those from STRING C<insert_string>.
-
-=cut
-
-*/
-
-static void
-set_graphemes(PARROT_INTERP, ARGIN(STRING *source_string),
-        UINTVAL offset, UINTVAL replace_count, ARGMOD(STRING *insert_string))
-{
-    ASSERT_ARGS(set_graphemes)
-    ENCODING_SET_BYTES(interp, source_string, offset,
-            replace_count, insert_string);
-
-}
-
-/*
-
-=item C<STRING * ascii_get_graphemes_inplace(PARROT_INTERP, STRING
-*source_string, UINTVAL offset, UINTVAL count, STRING *dest_string)>
-
-Retrieves the graphemes in place for ascii STRING C<source_string>,
-starting at C<offset>. Retrieves C<count> graphemes and puts them
-into C<dest_string>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-STRING *
-ascii_get_graphemes_inplace(PARROT_INTERP, ARGIN(STRING *source_string),
-        UINTVAL offset, UINTVAL count, ARGMOD(STRING *dest_string))
-{
-    ASSERT_ARGS(ascii_get_graphemes_inplace)
-    return ENCODING_GET_BYTES_INPLACE(interp, source_string,
-            offset, count, dest_string);
-}
-
-/*
-
-=item C<static STRING * to_ascii(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_ascii(PARROT_INTERP, STRING *src)>
 
 Attempts to convert STRING C<src> to ASCII in STRING C<dest>. Throws
 an exception if unconvertable UNICODE characters are involved.
@@ -259,7 +202,7 @@
 
 PARROT_CANNOT_RETURN_NULL
 static STRING *
-to_ascii(PARROT_INTERP, ARGIN(STRING *src), ARGMOD_NULLOK(STRING *dest))
+to_ascii(PARROT_INTERP, ARGIN(STRING *src))
 {
     ASSERT_ARGS(to_ascii)
     String_iter iter;
@@ -267,13 +210,9 @@
     unsigned char *p;
     const UINTVAL len = src->strlen;
 
-    if (dest) {
-        Parrot_gc_reallocate_string_storage(interp, dest, len);
-    }
-    else {
-        /* the string can't grow - replace inplace */
-        dest = src;
-    }
+    /* the string can't grow. Just clone it */
+    STRING * dest = Parrot_str_clone(interp, src);
+
     p = (unsigned char *)dest->strstart;
     ENCODING_ITER_INIT(interp, src, &iter);
     for (offs = 0; offs < len; ++offs) {
@@ -292,35 +231,7 @@
 
 /*
 
-=item C<static STRING * to_unicode(PARROT_INTERP, STRING *src, STRING *dest)>
-
-Converts the ASCII STRING C<src> to UNICODE STRING C<dest>.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-to_unicode(PARROT_INTERP, ARGMOD(STRING *src), ARGMOD_NULLOK(STRING *dest))
-{
-    ASSERT_ARGS(to_unicode)
-    if (dest) {
-        dest->charset = Parrot_unicode_charset_ptr;
-        dest->encoding = CHARSET_GET_PREFERRED_ENCODING(interp, dest);
-        Parrot_gc_reallocate_string_storage(interp, dest, src->strlen);
-        return dest;
-    }
-    else {
-        src->charset = Parrot_unicode_charset_ptr;
-        src->encoding = CHARSET_GET_PREFERRED_ENCODING(interp, src);
-        return src;
-    }
-}
-
-/*
-
-=item C<static STRING * to_charset(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_charset(PARROT_INTERP, STRING *src)>
 
 Converts STRING C<src> to ASCII charset STRING C<dest>.
 
@@ -330,17 +241,17 @@
 
 PARROT_CANNOT_RETURN_NULL
 static STRING *
-to_charset(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_charset(PARROT_INTERP, ARGIN(STRING *src))
 {
     ASSERT_ARGS(to_charset)
     const charset_converter_t conversion_func =
         Parrot_find_charset_converter(interp, src->charset, Parrot_ascii_charset_ptr);
 
     if (conversion_func) {
-         return conversion_func(interp, src, dest);
+         return conversion_func(interp, src);
     }
     else {
-        return to_ascii(interp, src, dest);
+        return to_ascii(interp, src);
     }
 }
 
@@ -361,7 +272,7 @@
 compose(PARROT_INTERP, ARGIN(STRING *src))
 {
     ASSERT_ARGS(compose)
-    return Parrot_str_copy(interp, src);
+    return src;
 }
 
 /* A noop. can't decompose ascii */
@@ -381,12 +292,12 @@
 decompose(PARROT_INTERP, ARGMOD(STRING *src))
 {
     ASSERT_ARGS(decompose)
-    return Parrot_str_copy(interp, src);
+    return src;
 }
 
 /*
 
-=item C<static void upcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase(PARROT_INTERP, const STRING *source_string)>
 
 Converts the STRING C<source_string> to all uppercase.
 
@@ -394,25 +305,29 @@
 
 */
 
-static void
-upcase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(upcase)
+    STRING * const result = Parrot_str_clone(interp, source_string);
     const UINTVAL n = source_string->strlen;
 
     if (n) {
-        char * const buffer = source_string->strstart;
+        char * const buffer = result->strstart;
         UINTVAL offset;
 
         for (offset = 0; offset < n; offset++) {
             buffer[offset] = (char)toupper((unsigned char)buffer[offset]);
         }
     }
+
+    return result;
 }
 
 /*
 
-=item C<static void downcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase(PARROT_INTERP, const STRING *source_string)>
 
 Converts the STRING C<source_string> to all lower-case.
 
@@ -420,25 +335,29 @@
 
 */
 
-static void
-downcase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(downcase)
-    const UINTVAL n = source_string->strlen;
+    STRING       *result = Parrot_str_clone(interp, source_string);
+    const UINTVAL n      = source_string->strlen;
 
     if (n) {
-        char * const buffer = source_string->strstart;
+        char * const buffer = result->strstart;
         UINTVAL offset;
 
         for (offset = 0; offset < n; offset++) {
             buffer[offset] = (char)tolower((unsigned char)buffer[offset]);
         }
     }
+
+    return result;
 }
 
 /*
 
-=item C<static void titlecase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase(PARROT_INTERP, const STRING *source_string)>
 
 Converts the STRING given by C<source_string> to title case, where
 the first character is upper case and all the rest of the characters
@@ -448,14 +367,16 @@
 
 */
 
-static void
-titlecase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(titlecase)
-    const UINTVAL n = source_string->strlen;
+    STRING       *result = Parrot_str_clone(interp, source_string);
+    const UINTVAL n      = source_string->strlen;
 
     if (n) {
-        char * const buffer = source_string->strstart;
+        char * const buffer = result->strstart;
         UINTVAL offset;
 
         buffer[0] = (char)toupper((unsigned char)buffer[0]);
@@ -463,11 +384,13 @@
             buffer[offset] = (char)tolower((unsigned char)buffer[offset]);
         }
     }
+
+    return result;
 }
 
 /*
 
-=item C<static void upcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase_first(PARROT_INTERP, const STRING *source_string)>
 
 Sets the first character in the STRING C<source_string> to upper case,
 but doesn't modify the rest of the string.
@@ -476,19 +399,25 @@
 
 */
 
-static void
-upcase_first(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase_first(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(upcase_first)
-    if (source_string->strlen) {
-        char * const buffer = source_string->strstart;
+    STRING *result = Parrot_str_clone(interp, source_string);
+
+    if (result->strlen) {
+        char * const buffer = result->strstart;
         buffer[0] = (char)toupper((unsigned char)buffer[0]);
     }
+
+    return result;
 }
 
 /*
 
-=item C<static void downcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase_first(PARROT_INTERP, const STRING
+*source_string)>
 
 Sets the first character of the STRING C<source_string> to lowercase,
 but doesn't modify the rest of the characters.
@@ -497,19 +426,25 @@
 
 */
 
-static void
-downcase_first(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase_first(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(downcase_first)
-    if (source_string->strlen) {
-        char * const buffer = source_string->strstart;
+    STRING *result = Parrot_str_clone(interp, source_string);
+
+    if (result->strlen) {
+        char * const buffer = result->strstart;
         buffer[0] = (char)tolower((unsigned char)buffer[0]);
     }
+
+    return result;
 }
 
 /*
 
-=item C<static void titlecase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase_first(PARROT_INTERP, const STRING
+*source_string)>
 
 Converts the first letter of STRING C<source_string> to upper case,
 but doesn't modify the rest of the string.
@@ -518,14 +453,19 @@
 
 */
 
-static void
-titlecase_first(SHIM_INTERP, ARGMOD(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase_first(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(titlecase_first)
-    if (source_string->strlen) {
-        char * const buffer = source_string->strstart;
+    STRING *result = Parrot_str_clone(interp, source_string);
+
+    if (result->strlen) {
+        char * const buffer = result->strstart;
         buffer[0] = (char)toupper((unsigned char)buffer[0]);
     }
+
+    return result;
 }
 
 /*
@@ -550,8 +490,7 @@
     const UINTVAL min_len = l_len > r_len ? r_len : l_len;
     String_iter iter;
 
-    if (lhs->encoding == Parrot_fixed_8_encoding_ptr &&
-            rhs->encoding == Parrot_fixed_8_encoding_ptr) {
+    if (lhs->encoding == rhs->encoding) {
         const int ret_val = memcmp(lhs->strstart, rhs->strstart, min_len);
         if (ret_val)
             return ret_val < 0 ? -1 : 1;
@@ -856,7 +795,7 @@
 
 /*
 
-=item C<const CHARSET * Parrot_charset_ascii_init(PARROT_INTERP)>
+=item C<void Parrot_charset_ascii_init(PARROT_INTERP)>
 
 Initialize the ASCII charset but registering all the necessary
 function pointers and settings.
@@ -865,8 +804,7 @@
 
 */
 
-PARROT_CANNOT_RETURN_NULL
-const CHARSET *
+void
 Parrot_charset_ascii_init(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_charset_ascii_init)
@@ -874,8 +812,6 @@
     static const CHARSET base_set = {
         "ascii",
         ascii_get_graphemes,
-        ascii_get_graphemes_inplace,
-        set_graphemes,
         to_charset,
         compose,
         decompose,
@@ -900,13 +836,13 @@
     STRUCT_COPY_FROM_STRUCT(return_set, base_set);
     return_set->preferred_encoding = Parrot_fixed_8_encoding_ptr;
     Parrot_register_charset(interp, "ascii", return_set);
-    return return_set;
+
+    return;
 }
 
 /*
 
-=item C<STRING * charset_cvt_ascii_to_binary(PARROT_INTERP, STRING *src, STRING
-*dest)>
+=item C<STRING * charset_cvt_ascii_to_binary(PARROT_INTERP, STRING *src)>
 
 Converts an ASCII STRING C<src> to a binary STRING C<dest>.
 
@@ -916,29 +852,24 @@
 
 PARROT_CANNOT_RETURN_NULL
 STRING *
-charset_cvt_ascii_to_binary(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+charset_cvt_ascii_to_binary(PARROT_INTERP, ARGIN(STRING *src))
 {
     ASSERT_ARGS(charset_cvt_ascii_to_binary)
-    if (dest) {
-        UINTVAL offs;
+    STRING *dest = Parrot_str_clone(interp, src);
+    UINTVAL offs;
 
-        Parrot_gc_reallocate_string_storage(interp, dest, src->strlen);
-        dest->bufused = src->bufused;
-        dest->strlen  = src->strlen;
-        for (offs = 0; offs < src->strlen; ++offs) {
-            const UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
-            ENCODING_SET_BYTE(interp, dest, offs, c);
-        }
-        return dest;
+    for (offs = 0; offs < src->strlen; ++offs) {
+        const UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
+        ENCODING_SET_BYTE(interp, dest, offs, c);
     }
-    src->charset = Parrot_binary_charset_ptr;
-    return src;
+
+    dest->charset = Parrot_binary_charset_ptr;
+    return dest;
 }
 
 /*
 
-=item C<STRING * charset_cvt_ascii_to_iso_8859_1(PARROT_INTERP, STRING *src,
-STRING *dest)>
+=item C<STRING * charset_cvt_ascii_to_iso_8859_1(PARROT_INTERP, STRING *src)>
 
 Converts ASCII STRING C<src> to ISO8859-1 STRING C<dest>.
 
@@ -948,24 +879,19 @@
 
 PARROT_CANNOT_RETURN_NULL
 STRING *
-charset_cvt_ascii_to_iso_8859_1(PARROT_INTERP, ARGIN(STRING *src),
-    ARGIN_NULLOK(STRING *dest))
+charset_cvt_ascii_to_iso_8859_1(PARROT_INTERP, ARGIN(STRING *src))
 {
     ASSERT_ARGS(charset_cvt_ascii_to_iso_8859_1)
-    if (dest) {
-        UINTVAL offs;
+    STRING * dest = Parrot_str_clone(interp, src);
+    UINTVAL offs;
 
-        Parrot_gc_reallocate_string_storage(interp, dest, src->strlen);
-        dest->bufused = src->bufused;
-        dest->strlen  = src->strlen;
-        for (offs = 0; offs < src->strlen; ++offs) {
-            const UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
-            ENCODING_SET_BYTE(interp, dest, offs, c);
-        }
-        return dest;
+    for (offs = 0; offs < src->strlen; ++offs) {
+        const UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
+        ENCODING_SET_BYTE(interp, dest, offs, c);
     }
-    src->charset = Parrot_iso_8859_1_charset_ptr;
-    return src;
+
+    dest->charset = Parrot_iso_8859_1_charset_ptr;
+    return dest;
 }
 
 /*

Modified: branches/runcore_purge/src/string/charset/ascii.h
==============================================================================
--- branches/runcore_purge/src/string/charset/ascii.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/charset/ascii.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -61,29 +61,13 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-STRING * ascii_get_graphemes_inplace(PARROT_INTERP,
-    ARGIN(STRING *source_string),
-    UINTVAL offset,
-    UINTVAL count,
-    ARGMOD(STRING *dest_string))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*dest_string);
-
 PARROT_CANNOT_RETURN_NULL
-STRING * charset_cvt_ascii_to_binary(PARROT_INTERP,
-    ARGIN(STRING *src),
-    ARGIN_NULLOK(STRING *dest))
+STRING * charset_cvt_ascii_to_binary(PARROT_INTERP, ARGIN(STRING *src))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_CANNOT_RETURN_NULL
-STRING * charset_cvt_ascii_to_iso_8859_1(PARROT_INTERP,
-    ARGIN(STRING *src),
-    ARGIN_NULLOK(STRING *dest))
+STRING * charset_cvt_ascii_to_iso_8859_1(PARROT_INTERP, ARGIN(STRING *src))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
@@ -96,8 +80,7 @@
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
-PARROT_CANNOT_RETURN_NULL
-const CHARSET * Parrot_charset_ascii_init(PARROT_INTERP)
+void Parrot_charset_ascii_init(PARROT_INTERP)
         __attribute__nonnull__(1);
 
 #define ASSERT_ARGS_ascii_compare __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -117,10 +100,6 @@
 #define ASSERT_ARGS_ascii_get_graphemes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_ascii_get_graphemes_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(source_string) \
-    , PARROT_ASSERT_ARG(dest_string))
 #define ASSERT_ARGS_charset_cvt_ascii_to_binary __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))

Modified: branches/runcore_purge/src/string/charset/binary.c
==============================================================================
--- branches/runcore_purge/src/string/charset/binary.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/charset/binary.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -51,10 +51,13 @@
 static STRING* decompose(PARROT_INTERP, SHIM(STRING *source_string))
         __attribute__nonnull__(1);
 
-static void downcase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase(PARROT_INTERP, SHIM(const STRING *source_string))
         __attribute__nonnull__(1);
 
-static void downcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase_first(PARROT_INTERP,
+    SHIM(const STRING *source_string))
         __attribute__nonnull__(1);
 
 static INTVAL find_cclass(SHIM_INTERP,
@@ -74,37 +77,31 @@
     SHIM(const STRING *source_string),
     SHIM(UINTVAL offset));
 
-static void set_graphemes(PARROT_INTERP,
-    ARGIN(STRING *source_string),
-    UINTVAL offset,
-    UINTVAL replace_count,
-    ARGMOD(STRING *insert_string))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*insert_string);
-
 PARROT_CANNOT_RETURN_NULL
 static STRING * string_from_codepoint(PARROT_INTERP, UINTVAL codepoint)
         __attribute__nonnull__(1);
 
-static void titlecase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase(PARROT_INTERP, SHIM(const STRING *source_string))
         __attribute__nonnull__(1);
 
-static void titlecase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase_first(PARROT_INTERP,
+    SHIM(const STRING *source_string))
         __attribute__nonnull__(1);
 
 PARROT_CANNOT_RETURN_NULL
-static STRING* to_charset(PARROT_INTERP,
-    ARGIN(STRING *src),
-    ARGIN_NULLOK(STRING *dest))
+static STRING* to_charset(PARROT_INTERP, ARGIN(STRING *src))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void upcase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase(PARROT_INTERP, SHIM(const STRING *source_string))
         __attribute__nonnull__(1);
 
-static void upcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase_first(PARROT_INTERP,
+    SHIM(const STRING *source_string))
         __attribute__nonnull__(1);
 
 static UINTVAL validate(SHIM_INTERP, SHIM(STRING *source_string));
@@ -124,10 +121,6 @@
 #define ASSERT_ARGS_find_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_find_not_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_is_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_set_graphemes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(source_string) \
-    , PARROT_ASSERT_ARG(insert_string))
 #define ASSERT_ARGS_string_from_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_titlecase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -152,31 +145,10 @@
 #define EXCEPTION(err, str) \
     Parrot_ex_throw_from_c_args(interp, NULL, (err), (str))
 
-/*
-
-=item C<static void set_graphemes(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL replace_count, STRING *insert_string)>
-
-Sets the graphemes for STRING C<source_string>, starting at offset
-C<offset>. Replaces C<replace_count> graphemes from STRING
-C<insert_string>.
-
-=cut
-
-*/
-
-static void
-set_graphemes(PARROT_INTERP, ARGIN(STRING *source_string),
-        UINTVAL offset, UINTVAL replace_count, ARGMOD(STRING *insert_string))
-{
-    ASSERT_ARGS(set_graphemes)
-    ENCODING_SET_BYTES(interp, source_string, offset,
-            replace_count, insert_string);
-}
 
 /*
 
-=item C<static STRING* to_charset(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING* to_charset(PARROT_INTERP, STRING *src)>
 
 Converts the STRING C<src> to STRING C<dest> in binary mode. Throws
 an exception if a suitable conversion function is not found.
@@ -187,14 +159,14 @@
 
 PARROT_CANNOT_RETURN_NULL
 static STRING*
-to_charset(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_charset(PARROT_INTERP, ARGIN(STRING *src))
 {
     ASSERT_ARGS(to_charset)
     charset_converter_t conversion_func =
         Parrot_find_charset_converter(interp, src->charset, Parrot_binary_charset_ptr);
 
     if (conversion_func)
-         return conversion_func(interp, src, dest);
+         return conversion_func(interp, src);
 
     Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
         "to_charset for binary not implemented");
@@ -240,7 +212,7 @@
 
 /*
 
-=item C<static void upcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase(PARROT_INTERP, const STRING *source_string)>
 
 Throws an exception because we cannot convert a binary string to
 upper case.
@@ -249,8 +221,9 @@
 
 */
 
-static void
-upcase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase(PARROT_INTERP, SHIM(const STRING *source_string))
 {
     ASSERT_ARGS(upcase)
     EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't upcase binary data");
@@ -258,7 +231,7 @@
 
 /*
 
-=item C<static void downcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase(PARROT_INTERP, const STRING *source_string)>
 
 Throws an exception because we cannot convert a binary string to
 lower-case.
@@ -267,8 +240,9 @@
 
 */
 
-static void
-downcase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase(PARROT_INTERP, SHIM(const STRING *source_string))
 {
     ASSERT_ARGS(downcase)
     EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't downcase binary data");
@@ -276,7 +250,7 @@
 
 /*
 
-=item C<static void titlecase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase(PARROT_INTERP, const STRING *source_string)>
 
 Throws an exception because we cannot convert a binary string to
 title case.
@@ -285,8 +259,9 @@
 
 */
 
-static void
-titlecase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase(PARROT_INTERP, SHIM(const STRING *source_string))
 {
     ASSERT_ARGS(titlecase)
     EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't titlecase binary data");
@@ -294,7 +269,7 @@
 
 /*
 
-=item C<static void upcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase_first(PARROT_INTERP, const STRING *source_string)>
 
 Throws an exception because we cannot set the first "character" of the
 binary string to uppercase.
@@ -303,8 +278,9 @@
 
 */
 
-static void
-upcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase_first(PARROT_INTERP, SHIM(const STRING *source_string))
 {
     ASSERT_ARGS(upcase_first)
     EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't upcase binary data");
@@ -312,7 +288,8 @@
 
 /*
 
-=item C<static void downcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase_first(PARROT_INTERP, const STRING
+*source_string)>
 
 Throws an exception because we cannot set the first "character"
 of the binary string to lowercase.
@@ -321,8 +298,9 @@
 
 */
 
-static void
-downcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase_first(PARROT_INTERP, SHIM(const STRING *source_string))
 {
     ASSERT_ARGS(downcase_first)
     EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't downcase binary data");
@@ -330,7 +308,8 @@
 
 /*
 
-=item C<static void titlecase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase_first(PARROT_INTERP, const STRING
+*source_string)>
 
 Throws an exception because we can't convert the first "character"
 of binary data to title case.
@@ -339,8 +318,9 @@
 
 */
 
-static void
-titlecase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase_first(PARROT_INTERP, SHIM(const STRING *source_string))
 {
     ASSERT_ARGS(titlecase_first)
     EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't titlecase binary data");
@@ -500,7 +480,7 @@
 
 /*
 
-=item C<const CHARSET * Parrot_charset_binary_init(PARROT_INTERP)>
+=item C<void Parrot_charset_binary_init(PARROT_INTERP)>
 
 Initialize the binary charset, including function pointers and
 settings.
@@ -509,8 +489,7 @@
 
 */
 
-PARROT_CANNOT_RETURN_NULL
-const CHARSET *
+void
 Parrot_charset_binary_init(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_charset_binary_init)
@@ -518,8 +497,6 @@
     static const CHARSET base_set = {
         "binary",
         ascii_get_graphemes,
-        ascii_get_graphemes_inplace,
-        set_graphemes,
         to_charset,
         compose,
         decompose,
@@ -544,7 +521,8 @@
     STRUCT_COPY_FROM_STRUCT(return_set, base_set);
     return_set->preferred_encoding = Parrot_fixed_8_encoding_ptr;
     Parrot_register_charset(interp, "binary", return_set);
-    return return_set;
+
+    return;
 
 }
 

Modified: branches/runcore_purge/src/string/charset/binary.h
==============================================================================
--- branches/runcore_purge/src/string/charset/binary.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/charset/binary.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -16,8 +16,7 @@
 /* HEADERIZER BEGIN: src/string/charset/binary.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-PARROT_CANNOT_RETURN_NULL
-const CHARSET * Parrot_charset_binary_init(PARROT_INTERP)
+void Parrot_charset_binary_init(PARROT_INTERP)
         __attribute__nonnull__(1);
 
 #define ASSERT_ARGS_Parrot_charset_binary_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\

Modified: branches/runcore_purge/src/string/charset/iso-8859-1.c
==============================================================================
--- branches/runcore_purge/src/string/charset/iso-8859-1.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/charset/iso-8859-1.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -35,11 +35,14 @@
 static STRING* decompose(PARROT_INTERP, SHIM(STRING *src))
         __attribute__nonnull__(1);
 
-static void downcase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase(PARROT_INTERP, ARGIN(const STRING *source_string))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void downcase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase_first(PARROT_INTERP,
+    ARGIN(const STRING *source_string))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
@@ -66,57 +69,45 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(3);
 
-static void set_graphemes(PARROT_INTERP,
-    ARGIN(STRING *source_string),
-    UINTVAL offset,
-    UINTVAL replace_count,
-    ARGMOD(STRING *insert_string))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*insert_string);
-
 PARROT_CANNOT_RETURN_NULL
 static STRING * string_from_codepoint(PARROT_INTERP, UINTVAL codepoint)
         __attribute__nonnull__(1);
 
-static void titlecase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase(PARROT_INTERP, ARGIN(const STRING *source_string))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void titlecase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase_first(PARROT_INTERP,
+    ARGIN(const STRING *source_string))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
-static STRING * to_charset(PARROT_INTERP,
-    ARGIN(STRING *src),
-    ARGIN_NULLOK(STRING *dest))
+static STRING * to_charset(PARROT_INTERP, ARGIN(STRING *src))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_CANNOT_RETURN_NULL
-static STRING * to_iso_8859_1(PARROT_INTERP,
-    ARGIN(STRING *src),
-    ARGMOD_NULLOK(STRING *dest))
+static STRING * to_iso_8859_1(PARROT_INTERP, ARGIN(STRING *src))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*dest);
+        __attribute__nonnull__(2);
 
 PARROT_CANNOT_RETURN_NULL
-static STRING * to_unicode(PARROT_INTERP,
-    ARGIN(STRING *src),
-    ARGMOD_NULLOK(STRING *dest))
+static STRING * to_unicode(PARROT_INTERP, ARGIN(STRING *src))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*dest);
+        __attribute__nonnull__(2);
 
-static void upcase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase(PARROT_INTERP, ARGIN(const STRING *source_string))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void upcase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase_first(PARROT_INTERP,
+    ARGIN(const STRING *source_string))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
@@ -144,10 +135,6 @@
 #define ASSERT_ARGS_is_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_set_graphemes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(source_string) \
-    , PARROT_ASSERT_ARG(insert_string))
 #define ASSERT_ARGS_string_from_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_titlecase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -181,28 +168,7 @@
 
 /*
 
-=item C<static void set_graphemes(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL replace_count, STRING *insert_string)>
-
-Sets C<replace_count> graphemes in STRING C<source_string> starting at offset C<offset>.
-Gets the replacement graphemes from STRING C<insert_string>.
-
-=cut
-
-*/
-
-static void
-set_graphemes(PARROT_INTERP, ARGIN(STRING *source_string),
-        UINTVAL offset, UINTVAL replace_count, ARGMOD(STRING *insert_string))
-{
-    ASSERT_ARGS(set_graphemes)
-    ENCODING_SET_BYTES(interp, source_string, offset,
-            replace_count, insert_string);
-}
-
-/*
-
-=item C<static STRING * to_iso_8859_1(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_iso_8859_1(PARROT_INTERP, STRING *src)>
 
 Converts STRING C<src> to iso-8859-1 in STRING C<dest>.
 
@@ -212,22 +178,16 @@
 
 PARROT_CANNOT_RETURN_NULL
 static STRING *
-to_iso_8859_1(PARROT_INTERP, ARGIN(STRING *src), ARGMOD_NULLOK(STRING *dest))
+to_iso_8859_1(PARROT_INTERP, ARGIN(STRING *src))
 {
     ASSERT_ARGS(to_iso_8859_1)
     UINTVAL offs, src_len;
     String_iter iter;
+    /* iso-8859-1 is never bigger then source */
+    STRING * dest = Parrot_str_clone(interp, src);
 
     ENCODING_ITER_INIT(interp, src, &iter);
     src_len = src->strlen;
-    if (dest) {
-        Parrot_gc_reallocate_string_storage(interp, dest, src_len);
-        dest->strlen  = src_len;
-    }
-    else {
-        /* iso-8859-1 is never bigger then source */
-        dest = src;
-    }
     dest->bufused = src_len;
     dest->charset = Parrot_iso_8859_1_charset_ptr;
     dest->encoding = Parrot_fixed_8_encoding_ptr;
@@ -244,7 +204,7 @@
 
 /*
 
-=item C<static STRING * to_unicode(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_unicode(PARROT_INTERP, STRING *src)>
 
 Converts STRING C<src> to unicode STRING C<dest>.
 
@@ -254,40 +214,37 @@
 
 PARROT_CANNOT_RETURN_NULL
 static STRING *
-to_unicode(PARROT_INTERP, ARGIN(STRING *src), ARGMOD_NULLOK(STRING *dest))
+to_unicode(PARROT_INTERP, ARGIN(STRING *src))
 {
     ASSERT_ARGS(to_unicode)
-    if (dest) {
-        UINTVAL offs;
-        String_iter iter;
-
-        dest->charset = Parrot_unicode_charset_ptr;
-        dest->encoding = CHARSET_GET_PREFERRED_ENCODING(interp, dest);
-        Parrot_gc_reallocate_string_storage(interp, dest, src->strlen);
-        ENCODING_ITER_INIT(interp, dest, &iter);
-        for (offs = 0; offs < src->strlen; ++offs) {
-            const UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
-
-            if (iter.bytepos >= Buffer_buflen(dest) - 4) {
-                UINTVAL need = (UINTVAL)((src->strlen - offs) * 1.5);
-                if (need < 16)
-                    need = 16;
-                Parrot_gc_reallocate_string_storage(interp, dest,
-                        Buffer_buflen(dest) + need);
-            }
-            iter.set_and_advance(interp, &iter, c);
+    STRING * dest = Parrot_str_clone(interp, src);
+    UINTVAL offs;
+    String_iter iter;
+
+    dest->charset = Parrot_unicode_charset_ptr;
+    dest->encoding = CHARSET_GET_PREFERRED_ENCODING(interp, dest);
+    Parrot_gc_reallocate_string_storage(interp, dest, src->strlen);
+    ENCODING_ITER_INIT(interp, dest, &iter);
+    for (offs = 0; offs < src->strlen; ++offs) {
+        const UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
+
+        if (iter.bytepos >= Buffer_buflen(dest) - 4) {
+            UINTVAL need = (UINTVAL)((src->strlen - offs) * 1.5);
+            if (need < 16)
+                need = 16;
+            Parrot_gc_reallocate_string_storage(interp, dest,
+                    Buffer_buflen(dest) + need);
         }
-        dest->bufused = iter.bytepos;
-        dest->strlen  = iter.charpos;
-        return dest;
+        iter.set_and_advance(interp, &iter, c);
     }
-    Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
-            "to_unicode inplace for iso-8859-1 not implemented");
+    dest->bufused = iter.bytepos;
+    dest->strlen  = iter.charpos;
+    return dest;
 }
 
 /*
 
-=item C<static STRING * to_charset(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_charset(PARROT_INTERP, STRING *src)>
 
 Converts the STRING C<src> to an ISO-8859-1 STRING C<dest>.
 
@@ -298,16 +255,16 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 static STRING *
-to_charset(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_charset(PARROT_INTERP, ARGIN(STRING *src))
 {
     ASSERT_ARGS(to_charset)
     const charset_converter_t conversion_func =
         Parrot_find_charset_converter(interp, src->charset, Parrot_iso_8859_1_charset_ptr);
 
     if (conversion_func)
-        return conversion_func(interp, src, dest);
+        return conversion_func(interp, src);
     else
-        return to_iso_8859_1(interp, src, dest);
+        return to_iso_8859_1(interp, src);
 }
 
 
@@ -329,7 +286,7 @@
 compose(PARROT_INTERP, ARGIN(STRING *src))
 {
     ASSERT_ARGS(compose)
-    return Parrot_str_copy(interp, src);
+    return src;
 }
 
 /*
@@ -353,7 +310,7 @@
 
 /*
 
-=item C<static void upcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase(PARROT_INTERP, const STRING *source_string)>
 
 Convert all graphemes in the STRING C<source_string> to upper case, for those
 graphemes that support cases.
@@ -362,19 +319,20 @@
 
 */
 
-static void
-upcase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(upcase)
     unsigned char *buffer;
-    UINTVAL offset = 0;
+    UINTVAL        offset = 0;
+    STRING        *result = Parrot_str_clone(interp, source_string);
 
-    if (!source_string->strlen)
-        return;
+    if (!result->strlen)
+        return result;
 
-    Parrot_str_write_COW(interp, source_string);
-    buffer = (unsigned char *)source_string->strstart;
-    for (offset = 0; offset < source_string->strlen; offset++) {
+    buffer = (unsigned char *)result->strstart;
+    for (offset = 0; offset < result->strlen; offset++) {
         unsigned int c = buffer[offset]; /* XXX use encoding ? */
         if (c >= 0xe0 && c != 0xf7)
             c &= ~0x20;
@@ -382,11 +340,13 @@
             c = toupper((unsigned char)c);
         buffer[offset] = (unsigned char)c;
     }
+
+    return result;
 }
 
 /*
 
-=item C<static void downcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase(PARROT_INTERP, const STRING *source_string)>
 
 Converts all graphemes in STRING C<source_string> to lower-case, for those graphemes
 that support cases.
@@ -395,30 +355,34 @@
 
 */
 
-static void
-downcase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(downcase)
-    if (source_string->strlen) {
-        UINTVAL offset;
-        unsigned char *buffer;
-
-        Parrot_str_write_COW(interp, source_string);
-        buffer = (unsigned char *)source_string->strstart;
-        for (offset = 0; offset < source_string->strlen; offset++) {
-            unsigned int c = buffer[offset];
-            if (c >= 0xc0 && c != 0xd7 && c <= 0xde)
-                c |= 0x20;
-            else
-                c = tolower((unsigned char)c);
-            buffer[offset] = (unsigned char)c;
-        }
+    unsigned char *buffer;
+    UINTVAL        offset = 0;
+    STRING        *result = Parrot_str_clone(interp, source_string);
+
+    if (!result->strlen)
+        return result;
+
+    buffer = (unsigned char *)result->strstart;
+    for (offset = 0; offset < result->strlen; offset++) {
+        unsigned int c = buffer[offset];
+        if (c >= 0xc0 && c != 0xd7 && c <= 0xde)
+            c |= 0x20;
+        else
+            c = tolower((unsigned char)c);
+        buffer[offset] = (unsigned char)c;
     }
+
+    return result;
 }
 
 /*
 
-=item C<static void titlecase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase(PARROT_INTERP, const STRING *source_string)>
 
 Converts the graphemes in STRING C<source_string> to title case, for those graphemes
 that support cases.
@@ -427,19 +391,20 @@
 
 */
 
-static void
-titlecase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(titlecase)
     unsigned char *buffer;
-    unsigned int c;
-    UINTVAL offset;
+    unsigned int   c;
+    UINTVAL        offset;
+    STRING        *result = Parrot_str_clone(interp, source_string);
 
-    if (!source_string->strlen)
-        return;
+    if (!result->strlen)
+        return result;
 
-    Parrot_str_write_COW(interp, source_string);
-    buffer = (unsigned char *)source_string->strstart;
+    buffer = (unsigned char *)result->strstart;
     c = buffer[0];
     if (c >= 0xe0 && c != 0xf7)
         c &= ~0x20;
@@ -447,7 +412,7 @@
         c = toupper((unsigned char)c);
     buffer[0] = (unsigned char)c;
 
-    for (offset = 1; offset < source_string->strlen; offset++) {
+    for (offset = 1; offset < result->strlen; offset++) {
         c = buffer[offset];
         if (c >= 0xc0 && c != 0xd7 && c <= 0xde)
             c |= 0x20;
@@ -455,11 +420,13 @@
             c = tolower((unsigned char)c);
         buffer[offset] = (unsigned char)c;
     }
+
+    return result;
 }
 
 /*
 
-=item C<static void upcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase_first(PARROT_INTERP, const STRING *source_string)>
 
 Converts the first grapheme in STRING C<source_string> to upper case, if it
 supports cases.
@@ -468,28 +435,33 @@
 
 */
 
-static void
-upcase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase_first(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(upcase_first)
-    if (source_string->strlen) {
-        unsigned char *buffer;
-        unsigned int c;
-
-        Parrot_str_write_COW(interp, source_string);
-        buffer = (unsigned char *)source_string->strstart;
-        c = buffer[0];
-        if (c >= 0xe0 && c != 0xf7)
-            c &= ~0x20;
-        else
-            c = toupper((unsigned char)c);
-        buffer[0] = (unsigned char)c;
-    }
+    unsigned char *buffer;
+    unsigned int   c;
+    STRING        *result = Parrot_str_clone(interp, source_string);
+
+    if (!result->strlen)
+        return result;
+
+    buffer = (unsigned char *)result->strstart;
+    c = buffer[0];
+    if (c >= 0xe0 && c != 0xf7)
+        c &= ~0x20;
+    else
+        c = toupper((unsigned char)c);
+    buffer[0] = (unsigned char)c;
+
+    return result;
 }
 
 /*
 
-=item C<static void downcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase_first(PARROT_INTERP, const STRING
+*source_string)>
 
 Converts the first character of the STRING C<source_string> to lower case, if the
 grapheme supports lower case.
@@ -498,28 +470,33 @@
 
 */
 
-static void
-downcase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase_first(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(downcase_first)
-    if (source_string->strlen) {
-        unsigned char *buffer;
-        unsigned int c;
-
-        Parrot_str_write_COW(interp, source_string);
-        buffer = (unsigned char *)source_string->strstart;
-        c = buffer[0];
-        if (c >= 0xc0 && c != 0xd7 && c <= 0xde)
-            c &= ~0x20;
-        else
-            c = tolower((unsigned char)c);
-        buffer[0] = (unsigned char)c;
-    }
+    unsigned char *buffer;
+    unsigned int   c;
+    STRING        *result = Parrot_str_clone(interp, source_string);
+
+    if (!result->strlen)
+        return result;
+
+    buffer = (unsigned char *)result->strstart;
+    c = buffer[0];
+    if (c >= 0xc0 && c != 0xd7 && c <= 0xde)
+        c &= ~0x20;
+    else
+        c = tolower((unsigned char)c);
+    buffer[0] = (unsigned char)c;
+
+    return result;
 }
 
 /*
 
-=item C<static void titlecase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase_first(PARROT_INTERP, const STRING
+*source_string)>
 
 Converts the first grapheme in STRING C<source_string> to title case, if the grapheme
 supports case.
@@ -528,11 +505,12 @@
 
 */
 
-static void
-titlecase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase_first(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(titlecase_first)
-    upcase_first(interp, source_string);
+    return upcase_first(interp, source_string);
 }
 
 
@@ -662,7 +640,7 @@
 
 /*
 
-=item C<const CHARSET * Parrot_charset_iso_8859_1_init(PARROT_INTERP)>
+=item C<void Parrot_charset_iso_8859_1_init(PARROT_INTERP)>
 
 Initializes the ISO-8859-1 charset by installing all the necessary function pointers.
 
@@ -670,8 +648,7 @@
 
 */
 
-PARROT_CANNOT_RETURN_NULL
-const CHARSET *
+void
 Parrot_charset_iso_8859_1_init(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_charset_iso_8859_1_init)
@@ -679,8 +656,6 @@
     static const CHARSET base_set = {
         "iso-8859-1",
         ascii_get_graphemes,
-        ascii_get_graphemes_inplace,
-        set_graphemes,
         to_charset,
         compose,
         decompose,
@@ -705,13 +680,13 @@
     STRUCT_COPY_FROM_STRUCT(return_set, base_set);
     return_set->preferred_encoding = Parrot_fixed_8_encoding_ptr;
     Parrot_register_charset(interp, "iso-8859-1", return_set);
-    return return_set;
+
+    return;
 }
 
 /*
 
-=item C<STRING * charset_cvt_iso_8859_1_to_ascii(PARROT_INTERP, STRING *src,
-STRING *dest)>
+=item C<STRING * charset_cvt_iso_8859_1_to_ascii(PARROT_INTERP, STRING *src)>
 
 Converts STRING C<src> in ISO-8859-1 to ASCII STRING C<dest>.
 
@@ -722,29 +697,21 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 STRING *
-charset_cvt_iso_8859_1_to_ascii(PARROT_INTERP, ARGIN(STRING *src),
-        ARGMOD_NULLOK(STRING *dest))
+charset_cvt_iso_8859_1_to_ascii(PARROT_INTERP, ARGIN(STRING *src))
 {
     ASSERT_ARGS(charset_cvt_iso_8859_1_to_ascii)
     UINTVAL offs;
-    if (dest) {
-        Parrot_gc_reallocate_string_storage(interp, dest, src->strlen);
-        dest->bufused = src->bufused;
-        dest->strlen  = src->strlen;
-    }
+    STRING *dest = Parrot_str_clone(interp, src);
+
     for (offs = 0; offs < src->strlen; ++offs) {
         UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
         if (c >= 0x80)
             Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LOSSY_CONVERSION,
                 "lossy conversion to ascii");
 
-        if (dest)
-            ENCODING_SET_BYTE(interp, dest, offs, c);
+        ENCODING_SET_BYTE(interp, dest, offs, c);
     }
-    if (dest)
-        return dest;
-    src->charset = Parrot_ascii_charset_ptr;
-    return src;
+    return dest;
 }
 
 /*

Modified: branches/runcore_purge/src/string/charset/iso-8859-1.h
==============================================================================
--- branches/runcore_purge/src/string/charset/iso-8859-1.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/charset/iso-8859-1.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -18,15 +18,11 @@
 
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
-STRING * charset_cvt_iso_8859_1_to_ascii(PARROT_INTERP,
-    ARGIN(STRING *src),
-    ARGMOD_NULLOK(STRING *dest))
+STRING * charset_cvt_iso_8859_1_to_ascii(PARROT_INTERP, ARGIN(STRING *src))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*dest);
+        __attribute__nonnull__(2);
 
-PARROT_CANNOT_RETURN_NULL
-const CHARSET * Parrot_charset_iso_8859_1_init(PARROT_INTERP)
+void Parrot_charset_iso_8859_1_init(PARROT_INTERP)
         __attribute__nonnull__(1);
 
 #define ASSERT_ARGS_charset_cvt_iso_8859_1_to_ascii \

Modified: branches/runcore_purge/src/string/charset/unicode.c
==============================================================================
--- branches/runcore_purge/src/string/charset/unicode.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/charset/unicode.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -54,11 +54,14 @@
 static STRING* decompose(PARROT_INTERP, SHIM(STRING *src))
         __attribute__nonnull__(1);
 
-static void downcase(PARROT_INTERP, ARGIN(STRING *src))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase(PARROT_INTERP, ARGIN(const STRING *src))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void downcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase_first(PARROT_INTERP,
+    SHIM(const STRING *source_string))
         __attribute__nonnull__(1);
 
 static INTVAL find_cclass(PARROT_INTERP,
@@ -85,17 +88,6 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_graphemes_inplace(PARROT_INTERP,
-    ARGIN(STRING *source_string),
-    UINTVAL offset,
-    UINTVAL count,
-    ARGMOD(STRING *dest_string))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*dest_string);
-
 static INTVAL is_cclass(PARROT_INTERP,
     INTVAL flags,
     ARGIN(const STRING *source_string),
@@ -103,42 +95,36 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(3);
 
-static void set_graphemes(PARROT_INTERP,
-    ARGIN(STRING *source_string),
-    UINTVAL offset,
-    UINTVAL replace_count,
-    ARGMOD(STRING *insert_string))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*insert_string);
-
 PARROT_CANNOT_RETURN_NULL
 static STRING * string_from_codepoint(PARROT_INTERP, UINTVAL codepoint)
         __attribute__nonnull__(1);
 
-static void titlecase(PARROT_INTERP, ARGIN(STRING *src))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase(PARROT_INTERP, ARGIN(const STRING *src))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void titlecase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase_first(PARROT_INTERP,
+    SHIM(const STRING *source_string))
         __attribute__nonnull__(1);
 
 PARROT_CANNOT_RETURN_NULL
-static STRING* to_charset(PARROT_INTERP,
-    ARGIN(STRING *src),
-    ARGIN_NULLOK(STRING *dest))
+static STRING* to_charset(PARROT_INTERP, ARGIN(STRING *src))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 static int u_iscclass(PARROT_INTERP, UINTVAL codepoint, INTVAL flags)
         __attribute__nonnull__(1);
 
-static void upcase(PARROT_INTERP, ARGIN(STRING *src))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase(PARROT_INTERP, ARGIN(const STRING *src))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void upcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase_first(PARROT_INTERP,
+    SHIM(const STRING *source_string))
         __attribute__nonnull__(1);
 
 static UINTVAL validate(PARROT_INTERP, ARGIN(STRING *src))
@@ -173,17 +159,9 @@
 #define ASSERT_ARGS_get_graphemes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_get_graphemes_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(source_string) \
-    , PARROT_ASSERT_ARG(dest_string))
 #define ASSERT_ARGS_is_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_set_graphemes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(source_string) \
-    , PARROT_ASSERT_ARG(insert_string))
 #define ASSERT_ARGS_string_from_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_titlecase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -223,27 +201,6 @@
 
 #define UNIMPL EXCEPTION(EXCEPTION_UNIMPLEMENTED, "unimplemented unicode")
 
-/*
-
-=item C<static void set_graphemes(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL replace_count, STRING *insert_string)>
-
-Sets C<replace_count> graphemes in STRING C<source_string> starting at offset
-C<offset>.  Gets the graphemes to be replaced from STRING C<insert_string>.
-
-=cut
-
-*/
-
-static void
-set_graphemes(PARROT_INTERP, ARGIN(STRING *source_string),
-        UINTVAL offset, UINTVAL replace_count, ARGMOD(STRING *insert_string))
-{
-    ASSERT_ARGS(set_graphemes)
-    ENCODING_SET_CODEPOINTS(interp, source_string, offset,
-            replace_count, insert_string);
-}
-
 
 /*
 
@@ -269,30 +226,7 @@
 
 /*
 
-=item C<static STRING * get_graphemes_inplace(PARROT_INTERP, STRING
-*source_string, UINTVAL offset, UINTVAL count, STRING *dest_string)>
-
-Gets C<count> graphemes in place from STRING C<source_string> starting at
-offset C<offset>. Puts them into STRING C<dest_string>.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_graphemes_inplace(PARROT_INTERP, ARGIN(STRING *source_string),
-        UINTVAL offset, UINTVAL count, ARGMOD(STRING *dest_string))
-{
-    ASSERT_ARGS(get_graphemes_inplace)
-    return ENCODING_GET_CODEPOINTS_INPLACE(interp, source_string,
-            offset, count, dest_string);
-}
-
-
-/*
-
-=item C<static STRING* to_charset(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING* to_charset(PARROT_INTERP, STRING *src)>
 
 Converts input STRING C<src> to unicode STRING C<dest>.
 
@@ -302,7 +236,7 @@
 
 PARROT_CANNOT_RETURN_NULL
 static STRING*
-to_charset(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_charset(PARROT_INTERP, ARGIN(STRING *src))
 {
     ASSERT_ARGS(to_charset)
     const charset_converter_t conversion_func =
@@ -310,9 +244,9 @@
                     Parrot_unicode_charset_ptr);
 
     if (conversion_func)
-         return conversion_func(interp, src, dest);
+         return conversion_func(interp, src);
 
-    return Parrot_utf8_encoding_ptr->to_encoding(interp, src, dest);
+    return Parrot_utf8_encoding_ptr->to_encoding(interp, src);
 }
 
 
@@ -401,7 +335,7 @@
 
 /*
 
-=item C<static void upcase(PARROT_INTERP, STRING *src)>
+=item C<static STRING* upcase(PARROT_INTERP, const STRING *src)>
 
 Converts the STRING C<src> to all upper-case graphemes, for those characters
 which support upper-case versions.
@@ -412,23 +346,25 @@
 
 */
 
-static void
-upcase(PARROT_INTERP, ARGIN(STRING *src))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase(PARROT_INTERP, ARGIN(const STRING *src))
 {
     ASSERT_ARGS(upcase)
 #if PARROT_HAS_ICU
     UErrorCode err;
     int dest_len, src_len, needed;
+    STRING *res;
 #endif
 
     if (src->bufused  == src->strlen
             && src->encoding == Parrot_utf8_encoding_ptr) {
-        Parrot_ascii_charset_ptr->upcase(interp, src);
-        return;
+        return Parrot_ascii_charset_ptr->upcase(interp, src);
     }
 
 #if PARROT_HAS_ICU
-    src = Parrot_utf16_encoding_ptr->to_encoding(interp, src, NULL);
+    /* to_encoding will allocate new string */
+    res = Parrot_utf16_encoding_ptr->to_encoding(interp, src);
     /*
        U_CAPI int32_t U_EXPORT2
        u_strToUpper(UChar *dest, int32_t destCapacity,
@@ -440,8 +376,8 @@
 
     /* use all available space - see below XXX */
     /* TODO downcase, titlecase too */
-    dest_len = Buffer_buflen(src) / sizeof (UChar);
-    src_len  = src->bufused     / sizeof (UChar);
+    dest_len = Buffer_buflen(res) / sizeof (UChar);
+    src_len  = res->bufused       / sizeof (UChar);
 
     /*
      * XXX troubles:
@@ -460,33 +396,35 @@
      *  TODO downcase, titlecase
      */
     needed = u_strToUpper(NULL, 0,
-            (UChar *)src->strstart, src_len,
+            (UChar *)res->strstart, src_len,
             NULL,       /* locale = default */
             &err);
 
     if (needed > dest_len) {
-        Parrot_gc_reallocate_string_storage(interp, src, needed * sizeof (UChar));
+        Parrot_gc_reallocate_string_storage(interp, res, needed * sizeof (UChar));
         dest_len = needed;
     }
 
     err      = U_ZERO_ERROR;
-    dest_len = u_strToUpper((UChar *)src->strstart, dest_len,
-            (UChar *)src->strstart, src_len,
+    dest_len = u_strToUpper((UChar *)res->strstart, dest_len,
+            (UChar *)res->strstart, src_len,
             NULL,       /* locale = default */
             &err);
     PARROT_ASSERT(U_SUCCESS(err));
-    src->bufused = dest_len * sizeof (UChar);
+    res->bufused = dest_len * sizeof (UChar);
 
     /* downgrade if possible */
     if (dest_len == (int)src->strlen)
-        src->encoding = Parrot_ucs2_encoding_ptr;
+        res->encoding = Parrot_ucs2_encoding_ptr;
     else {
         /* string is likely still ucs2 if it was earlier
          * but strlen changed due to combining char
          */
-        src->strlen = dest_len;
+        res->strlen = dest_len;
     }
 
+    return res;
+
 #else
     UNUSED(src);
     Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
@@ -497,7 +435,7 @@
 
 /*
 
-=item C<static void downcase(PARROT_INTERP, STRING *src)>
+=item C<static STRING* downcase(PARROT_INTERP, const STRING *src)>
 
 Converts all graphemes to lower-case, for those graphemes which have cases.
 
@@ -507,23 +445,25 @@
 
 */
 
-static void
-downcase(PARROT_INTERP, ARGIN(STRING *src))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase(PARROT_INTERP, ARGIN(const STRING *src))
 {
     ASSERT_ARGS(downcase)
 #if PARROT_HAS_ICU
     UErrorCode err;
     int dest_len, src_len;
+    STRING *res;
 #endif
 
     if (src->bufused  == src->strlen
             && src->encoding == Parrot_utf8_encoding_ptr) {
-        Parrot_ascii_charset_ptr->downcase(interp, src);
-        return;
+        return Parrot_ascii_charset_ptr->downcase(interp, src);
     }
 
 #if PARROT_HAS_ICU
-    src = Parrot_utf16_encoding_ptr->to_encoding(interp, src, NULL);
+    /* to_encoding will allocate new string */
+    res = Parrot_utf16_encoding_ptr->to_encoding(interp, src);
     /*
 U_CAPI int32_t U_EXPORT2
 u_strToLower(UChar *dest, int32_t destCapacity,
@@ -532,26 +472,29 @@
              UErrorCode *pErrorCode);
      */
     err      = U_ZERO_ERROR;
-    src_len  = src->bufused / sizeof (UChar);
-    dest_len = u_strToLower((UChar *)src->strstart, src_len,
-            (UChar *)src->strstart, src_len,
+    src_len  = res->bufused / sizeof (UChar);
+    dest_len = u_strToLower((UChar *)res->strstart, src_len,
+            (UChar *)res->strstart, src_len,
             NULL,       /* locale = default */
             &err);
-    src->bufused = dest_len * sizeof (UChar);
+    res->bufused = dest_len * sizeof (UChar);
 
     if (!U_SUCCESS(err)) {
         err = U_ZERO_ERROR;
-        Parrot_gc_reallocate_string_storage(interp, src, src->bufused);
-        dest_len = u_strToLower((UChar *)src->strstart, dest_len,
-                (UChar *)src->strstart, src_len,
+        Parrot_gc_reallocate_string_storage(interp, res, res->bufused);
+        dest_len = u_strToLower((UChar *)res->strstart, dest_len,
+                (UChar *)res->strstart, src_len,
                 NULL,       /* locale = default */
                 &err);
         PARROT_ASSERT(U_SUCCESS(err));
     }
 
     /* downgrade if possible */
-    if (dest_len == (int)src->strlen)
-        src->encoding = Parrot_ucs2_encoding_ptr;
+    if (dest_len == (int)res->strlen)
+        res->encoding = Parrot_ucs2_encoding_ptr;
+
+    return res;
+
 #else
     Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
         "no ICU lib loaded");
@@ -561,7 +504,7 @@
 
 /*
 
-=item C<static void titlecase(PARROT_INTERP, STRING *src)>
+=item C<static STRING* titlecase(PARROT_INTERP, const STRING *src)>
 
 Converts the string to title case, for those characters which support cases.
 
@@ -571,22 +514,24 @@
 
 */
 
-static void
-titlecase(PARROT_INTERP, ARGIN(STRING *src))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase(PARROT_INTERP, ARGIN(const STRING *src))
 {
     ASSERT_ARGS(titlecase)
 #if PARROT_HAS_ICU
 
     UErrorCode err;
     int dest_len, src_len;
+    STRING *res;
 
     if (src->bufused  == src->strlen
     &&  src->encoding == Parrot_utf8_encoding_ptr) {
-        Parrot_ascii_charset_ptr->titlecase(interp, src);
-        return;
+        return Parrot_ascii_charset_ptr->titlecase(interp, src);
     }
 
-    src = Parrot_utf16_encoding_ptr->to_encoding(interp, src, NULL);
+    /* to_encoding will allocate new string */
+    res = Parrot_utf16_encoding_ptr->to_encoding(interp, src);
 
     /*
 U_CAPI int32_t U_EXPORT2
@@ -598,27 +543,30 @@
      */
 
     err      = U_ZERO_ERROR;
-    src_len  = src->bufused / sizeof (UChar);
-    dest_len = u_strToTitle((UChar *)src->strstart, src_len,
-            (UChar *)src->strstart, src_len,
+    src_len  = res->bufused / sizeof (UChar);
+    dest_len = u_strToTitle((UChar *)res->strstart, src_len,
+            (UChar *)res->strstart, src_len,
             NULL,       /* default titleiter */
             NULL,       /* locale = default */
             &err);
-    src->bufused = dest_len * sizeof (UChar);
+    res->bufused = dest_len * sizeof (UChar);
 
     if (!U_SUCCESS(err)) {
         err = U_ZERO_ERROR;
-        Parrot_gc_reallocate_string_storage(interp, src, src->bufused);
-        dest_len = u_strToTitle((UChar *)src->strstart, dest_len,
-                (UChar *)src->strstart, src_len,
+        Parrot_gc_reallocate_string_storage(interp, res, res->bufused);
+        dest_len = u_strToTitle((UChar *)res->strstart, dest_len,
+                (UChar *)res->strstart, src_len,
                 NULL, NULL,
                 &err);
         PARROT_ASSERT(U_SUCCESS(err));
     }
 
     /* downgrade if possible */
-    if (dest_len == (int)src->strlen)
-        src->encoding = Parrot_ucs2_encoding_ptr;
+    if (dest_len == (int)res->strlen)
+        res->encoding = Parrot_ucs2_encoding_ptr;
+
+    return res;
+
 #else
     UNUSED(src);
     Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
@@ -629,7 +577,7 @@
 
 /*
 
-=item C<static void upcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase_first(PARROT_INTERP, const STRING *source_string)>
 
 Converts the first grapheme in the STRING C<source_string> to uppercase, if the
 grapheme supports it. Not implemented.
@@ -638,8 +586,9 @@
 
 */
 
-static void
-upcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase_first(PARROT_INTERP, SHIM(const STRING *source_string))
 {
     ASSERT_ARGS(upcase_first)
     /* TODO: https://trac.parrot.org/parrot/wiki/StringsTasklist Implement this. */
@@ -649,7 +598,8 @@
 
 /*
 
-=item C<static void downcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase_first(PARROT_INTERP, const STRING
+*source_string)>
 
 Converts the first grapheme in the STRING C<source_string> to lower-case, if
 the grapheme supports it. Not implemented
@@ -658,8 +608,9 @@
 
 */
 
-static void
-downcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase_first(PARROT_INTERP, SHIM(const STRING *source_string))
 {
     ASSERT_ARGS(downcase_first)
     /* TODO: https://trac.parrot.org/parrot/wiki/StringsTasklist Implement this. */
@@ -669,7 +620,8 @@
 
 /*
 
-=item C<static void titlecase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase_first(PARROT_INTERP, const STRING
+*source_string)>
 
 Converts the first grapheme in STRING C<source_string> to title case, if the
 string supports it. Not implemented.
@@ -678,8 +630,9 @@
 
 */
 
-static void
-titlecase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase_first(PARROT_INTERP, SHIM(const STRING *source_string))
 {
     ASSERT_ARGS(titlecase_first)
     /* TODO: https://trac.parrot.org/parrot/wiki/StringsTasklist Implement this. */
@@ -1064,7 +1017,7 @@
 
 /*
 
-=item C<const CHARSET * Parrot_charset_unicode_init(PARROT_INTERP)>
+=item C<void Parrot_charset_unicode_init(PARROT_INTERP)>
 
 Initializes the Unicode charset by installing all the necessary function
 pointers.
@@ -1073,8 +1026,7 @@
 
 */
 
-PARROT_CANNOT_RETURN_NULL
-const CHARSET *
+void
 Parrot_charset_unicode_init(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_charset_unicode_init)
@@ -1082,8 +1034,6 @@
     static const CHARSET base_set   = {
         "unicode",
         get_graphemes,
-        get_graphemes_inplace,
-        set_graphemes,
         to_charset,
         compose,
         decompose,
@@ -1115,7 +1065,8 @@
      */
     return_set->preferred_encoding = Parrot_utf8_encoding_ptr;
     Parrot_register_charset(interp, "unicode", return_set);
-    return return_set;
+
+    return;
 }
 
 

Modified: branches/runcore_purge/src/string/charset/unicode.h
==============================================================================
--- branches/runcore_purge/src/string/charset/unicode.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/charset/unicode.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -21,8 +21,7 @@
 /* HEADERIZER BEGIN: src/string/charset/unicode.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-PARROT_CANNOT_RETURN_NULL
-const CHARSET * Parrot_charset_unicode_init(PARROT_INTERP)
+void Parrot_charset_unicode_init(PARROT_INTERP)
         __attribute__nonnull__(1);
 
 #define ASSERT_ARGS_Parrot_charset_unicode_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\

Modified: branches/runcore_purge/src/string/encoding/fixed_8.c
==============================================================================
--- branches/runcore_purge/src/string/encoding/fixed_8.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/encoding/fixed_8.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -24,13 +24,10 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-static void become_encoding(PARROT_INTERP, SHIM(STRING *source_string))
-        __attribute__nonnull__(1);
-
-static UINTVAL bytes(SHIM_INTERP, ARGIN(STRING *source_string))
+static UINTVAL bytes(SHIM_INTERP, ARGIN(const STRING *source_string))
         __attribute__nonnull__(2);
 
-static UINTVAL codepoints(PARROT_INTERP, ARGIN(STRING *source_string))
+static UINTVAL codepoints(PARROT_INTERP, ARGIN(const STRING *source_string))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
@@ -83,18 +80,6 @@
         __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_bytes_inplace(PARROT_INTERP,
-    ARGIN(STRING *source_string),
-    UINTVAL offset,
-    UINTVAL count,
-    ARGMOD(STRING *return_string))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*return_string);
-
-PARROT_WARN_UNUSED_RESULT
 static UINTVAL get_codepoint(PARROT_INTERP,
     ARGIN(const STRING *source_string),
     UINTVAL offset)
@@ -110,18 +95,6 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_codepoints_inplace(PARROT_INTERP,
-    ARGIN(STRING *source_string),
-    UINTVAL offset,
-    UINTVAL count,
-    ARGMOD(STRING *dest_string))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*dest_string);
-
 static void iter_init(SHIM_INTERP,
     ARGIN(const STRING *src),
     ARGOUT(String_iter *iter))
@@ -136,42 +109,11 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void set_bytes(PARROT_INTERP,
-    ARGIN(STRING *source_string),
-    UINTVAL offset,
-    UINTVAL count,
-    ARGMOD(STRING *new_bytes))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*new_bytes);
-
-static void set_codepoint(PARROT_INTERP,
-    ARGIN(STRING *source_string),
-    UINTVAL offset,
-    UINTVAL codepoint)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-static void set_codepoints(PARROT_INTERP,
-    ARGIN(STRING *source_string),
-    UINTVAL offset,
-    UINTVAL count,
-    ARGMOD(STRING *new_codepoints))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*new_codepoints);
-
 PARROT_DOES_NOT_RETURN
 PARROT_CANNOT_RETURN_NULL
-static STRING * to_encoding(PARROT_INTERP,
-    SHIM(STRING *src),
-    SHIM(STRING *dest))
+static STRING * to_encoding(PARROT_INTERP, SHIM(const STRING *src))
         __attribute__nonnull__(1);
 
-#define ASSERT_ARGS_become_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(source_string))
 #define ASSERT_ARGS_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -195,37 +137,18 @@
 #define ASSERT_ARGS_get_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_get_bytes_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(source_string) \
-    , PARROT_ASSERT_ARG(return_string))
 #define ASSERT_ARGS_get_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(source_string))
 #define ASSERT_ARGS_get_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_get_codepoints_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(source_string) \
-    , PARROT_ASSERT_ARG(dest_string))
 #define ASSERT_ARGS_iter_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(src) \
     , PARROT_ASSERT_ARG(iter))
 #define ASSERT_ARGS_set_byte __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_set_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(source_string) \
-    , PARROT_ASSERT_ARG(new_bytes))
-#define ASSERT_ARGS_set_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_set_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(source_string) \
-    , PARROT_ASSERT_ARG(new_codepoints))
 #define ASSERT_ARGS_to_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
@@ -236,7 +159,7 @@
 
 /*
 
-=item C<static STRING * to_encoding(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_encoding(PARROT_INTERP, const STRING *src)>
 
 Converts the string C<src> to this particular encoding.  If C<dest> is
 provided, it will contain the result.  Otherwise this function operates in
@@ -250,7 +173,7 @@
 PARROT_DOES_NOT_RETURN
 PARROT_CANNOT_RETURN_NULL
 static STRING *
-to_encoding(PARROT_INTERP, SHIM(STRING *src), SHIM(STRING *dest))
+to_encoding(PARROT_INTERP, SHIM(const STRING *src))
 {
     ASSERT_ARGS(to_encoding)
     UNIMPL;
@@ -277,25 +200,6 @@
     return get_byte(interp, source_string, offset);
 }
 
-/*
-
-=item C<static void set_codepoint(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL codepoint)>
-
-This is the same as set byte
-
-=cut
-
-*/
-
-static void
-set_codepoint(PARROT_INTERP, ARGIN(STRING *source_string),
-        UINTVAL offset, UINTVAL codepoint)
-{
-    ASSERT_ARGS(set_codepoint)
-    set_byte(interp, source_string, offset, codepoint);
-}
-
 
 /*
 
@@ -419,8 +323,8 @@
 get_bytes(PARROT_INTERP, ARGIN(STRING *source_string), UINTVAL offset, UINTVAL count)
 {
     ASSERT_ARGS(get_bytes)
-    STRING * const return_string = Parrot_str_new_COW(interp,
-            source_string);
+    STRING * const return_string = Parrot_str_copy(interp, source_string);
+
     return_string->encoding = source_string->encoding;
     return_string->charset = source_string->charset;
 
@@ -436,117 +340,7 @@
 
 /*
 
-=item C<static STRING * get_codepoints_inplace(PARROT_INTERP, STRING
-*source_string, UINTVAL offset, UINTVAL count, STRING *dest_string)>
-
-Gets from string C<src> at position C<offset> C<count> codepoints and returns
-them in C<return_string>.  (Delegates to C<get_bytes>.)
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_codepoints_inplace(PARROT_INTERP, ARGIN(STRING *source_string),
-        UINTVAL offset, UINTVAL count, ARGMOD(STRING *dest_string))
-{
-    ASSERT_ARGS(get_codepoints_inplace)
-    return get_bytes_inplace(interp, source_string, offset,
-            count, dest_string);
-}
-
-/*
-
-=item C<static STRING * get_bytes_inplace(PARROT_INTERP, STRING *source_string,
-UINTVAL offset, UINTVAL count, STRING *return_string)>
-
-Gets from string C<src> at position C<offset> C<count> bytes and returns them
-in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_bytes_inplace(PARROT_INTERP, ARGIN(STRING *source_string),
-        UINTVAL offset, UINTVAL count, ARGMOD(STRING *return_string))
-{
-    ASSERT_ARGS(get_bytes_inplace)
-    Parrot_str_reuse_COW(interp, source_string, return_string);
-
-    return_string->strstart = (char *)return_string->strstart + offset ;
-    return_string->bufused = count;
-
-    return_string->strlen = count;
-    return_string->hashval = 0;
-
-    return return_string;
-}
-
-/*
-
-=item C<static void set_codepoints(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL count, STRING *new_codepoints)>
-
-Delegate to set_bytes
-
-=cut
-
-*/
-
-static void
-set_codepoints(PARROT_INTERP, ARGIN(STRING *source_string),
-        UINTVAL offset, UINTVAL count, ARGMOD(STRING *new_codepoints))
-{
-    ASSERT_ARGS(set_codepoints)
-    set_bytes(interp, source_string, offset, count, new_codepoints);
-}
-
-/*
-
-=item C<static void set_bytes(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL count, STRING *new_bytes)>
-
-Replaces in string C<src> at position C<offset> for C<count> bytes with the
-contents of string C<new_bytes>.
-
-=cut
-
-*/
-
-static void
-set_bytes(PARROT_INTERP, ARGIN(STRING *source_string),
-        UINTVAL offset, UINTVAL count, ARGMOD(STRING *new_bytes))
-{
-    ASSERT_ARGS(set_bytes)
-    Parrot_str_replace(interp, source_string, offset, count, new_bytes, NULL);
-}
-
-/*
-
-=item C<static void become_encoding(PARROT_INTERP, STRING *source_string)>
-
-Unconditionally makes the string be in this encoding, if that's valid
-
-=cut
-
-*/
-
-static void
-become_encoding(PARROT_INTERP, SHIM(STRING *source_string))
-{
-    ASSERT_ARGS(become_encoding)
-    UNIMPL;
-}
-
-
-/*
-
-=item C<static UINTVAL codepoints(PARROT_INTERP, STRING *source_string)>
+=item C<static UINTVAL codepoints(PARROT_INTERP, const STRING *source_string)>
 
 Returns the number of codepoints in string C<src>.
 
@@ -555,7 +349,7 @@
 */
 
 static UINTVAL
-codepoints(PARROT_INTERP, ARGIN(STRING *source_string))
+codepoints(PARROT_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(codepoints)
     return bytes(interp, source_string);
@@ -563,7 +357,7 @@
 
 /*
 
-=item C<static UINTVAL bytes(PARROT_INTERP, STRING *source_string)>
+=item C<static UINTVAL bytes(PARROT_INTERP, const STRING *source_string)>
 
 Returns the number of bytes in string C<src>.
 
@@ -572,7 +366,7 @@
 */
 
 static UINTVAL
-bytes(SHIM_INTERP, ARGIN(STRING *source_string))
+bytes(SHIM_INTERP, ARGIN(const STRING *source_string))
 {
     ASSERT_ARGS(bytes)
     return source_string->bufused;
@@ -693,7 +487,7 @@
 
 /*
 
-=item C<ENCODING * Parrot_encoding_fixed_8_init(PARROT_INTERP)>
+=item C<void Parrot_encoding_fixed_8_init(PARROT_INTERP)>
 
 Initializes the fixed-8 encoding.
 
@@ -701,8 +495,7 @@
 
 */
 
-PARROT_CANNOT_RETURN_NULL
-ENCODING *
+void
 Parrot_encoding_fixed_8_init(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_encoding_fixed_8_init)
@@ -713,26 +506,21 @@
         1, /* Max bytes per codepoint */
         to_encoding,
         get_codepoint,
-        set_codepoint,
         get_byte,
         set_byte,
         get_codepoints,
-        get_codepoints_inplace,
         get_bytes,
-        get_bytes_inplace,
-        set_codepoints,
-        set_bytes,
-        become_encoding,
         codepoints,
         bytes,
         iter_init,
         find_cclass,
         fixed_8_hash
-
     };
+
     STRUCT_COPY_FROM_STRUCT(return_encoding, base_encoding);
     Parrot_register_encoding(interp, "fixed_8", return_encoding);
-    return return_encoding;
+
+    return;
 }
 
 

Modified: branches/runcore_purge/src/string/encoding/fixed_8.h
==============================================================================
--- branches/runcore_purge/src/string/encoding/fixed_8.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/encoding/fixed_8.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -16,8 +16,7 @@
 /* HEADERIZER BEGIN: src/string/encoding/fixed_8.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-PARROT_CANNOT_RETURN_NULL
-ENCODING * Parrot_encoding_fixed_8_init(PARROT_INTERP)
+void Parrot_encoding_fixed_8_init(PARROT_INTERP)
         __attribute__nonnull__(1);
 
 #define ASSERT_ARGS_Parrot_encoding_fixed_8_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\

Modified: branches/runcore_purge/src/string/encoding/ucs2.c
==============================================================================
--- branches/runcore_purge/src/string/encoding/ucs2.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/encoding/ucs2.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -36,15 +36,12 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-static void become_encoding(PARROT_INTERP, SHIM(STRING *src))
-        __attribute__nonnull__(1);
-
 PARROT_WARN_UNUSED_RESULT
-static UINTVAL bytes(SHIM_INTERP, ARGIN(STRING *src))
+static UINTVAL bytes(SHIM_INTERP, ARGIN(const STRING *src))
         __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
-static UINTVAL codepoints(PARROT_INTERP, ARGIN(STRING *src))
+static UINTVAL codepoints(PARROT_INTERP, ARGIN(const STRING *src))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
@@ -72,15 +69,6 @@
     SHIM(UINTVAL count))
         __attribute__nonnull__(1);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_bytes_inplace(PARROT_INTERP,
-    SHIM(STRING *src),
-    SHIM(UINTVAL offset),
-    SHIM(UINTVAL count),
-    SHIM(STRING *return_string))
-        __attribute__nonnull__(1);
-
 static UINTVAL get_codepoint(PARROT_INTERP,
     ARGIN(const STRING *src),
     UINTVAL offset)
@@ -96,15 +84,6 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_codepoints_inplace(PARROT_INTERP,
-    SHIM(STRING *src),
-    SHIM(UINTVAL offset),
-    SHIM(UINTVAL count),
-    SHIM(STRING *dest_string))
-        __attribute__nonnull__(1);
-
 static void iter_init(PARROT_INTERP,
     ARGIN(const STRING *src),
     ARGOUT(String_iter *iter))
@@ -119,36 +98,11 @@
     SHIM(UINTVAL byte))
         __attribute__nonnull__(1);
 
-static void set_bytes(PARROT_INTERP,
-    SHIM(STRING *src),
-    SHIM(UINTVAL offset),
-    SHIM(UINTVAL count),
-    SHIM(STRING *new_bytes))
-        __attribute__nonnull__(1);
-
-static void set_codepoint(PARROT_INTERP,
-    ARGIN(STRING *src),
-    UINTVAL offset,
-    UINTVAL codepoint)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-static void set_codepoints(PARROT_INTERP,
-    SHIM(STRING *src),
-    SHIM(UINTVAL offset),
-    SHIM(UINTVAL count),
-    SHIM(STRING *new_codepoints))
-        __attribute__nonnull__(1);
-
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-static STRING * to_encoding(PARROT_INTERP,
-    ARGIN(STRING *src),
-    ARGMOD(STRING *dest))
+static STRING * to_encoding(PARROT_INTERP, ARGIN(const STRING *src))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*dest);
+        __attribute__nonnull__(2);
 
 static UINTVAL ucs2_decode_and_advance(SHIM_INTERP, ARGMOD(String_iter *i))
         __attribute__nonnull__(2)
@@ -172,8 +126,6 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*i);
 
-#define ASSERT_ARGS_become_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -187,33 +139,21 @@
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_get_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_get_bytes_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_get_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_get_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_get_codepoints_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_iter_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src) \
     , PARROT_ASSERT_ARG(iter))
 #define ASSERT_ARGS_set_byte __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_set_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_set_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_set_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_to_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(src) \
-    , PARROT_ASSERT_ARG(dest))
+    , PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_ucs2_decode_and_advance __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(i))
 #define ASSERT_ARGS_ucs2_encode_and_advance __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -237,7 +177,7 @@
 
 /*
 
-=item C<static STRING * to_encoding(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_encoding(PARROT_INTERP, const STRING *src)>
 
 Converts the string C<src> to this particular encoding.  If C<dest> is
 provided, it will contain the result.  Otherwise this function operates in
@@ -250,11 +190,11 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static STRING *
-to_encoding(PARROT_INTERP, ARGIN(STRING *src), ARGMOD(STRING *dest))
+to_encoding(PARROT_INTERP, ARGIN(const STRING *src))
 {
     ASSERT_ARGS(to_encoding)
     STRING * const result =
-        Parrot_utf16_encoding_ptr->to_encoding(interp, src, dest);
+        Parrot_utf16_encoding_ptr->to_encoding(interp, src);
 
     /* conversion to utf16 downgrads to ucs-2 if possible - check result */
     if (result->encoding == Parrot_utf16_encoding_ptr)
@@ -281,39 +221,15 @@
     ASSERT_ARGS(get_codepoint)
 #if PARROT_HAS_ICU
     const UChar * const s = (const UChar*) src->strstart;
+    UNUSED(interp);
     return s[offset];
 #else
+    UNUSED(offset);
     UNUSED(src);
-    UNUSED(offset)
     no_ICU_lib(interp);
 #endif
 }
 
-/*
-
-=item C<static void set_codepoint(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL codepoint)>
-
-Sets, in string C<src> at position C<offset>, the codepoint C<codepoint>.
-
-=cut
-
-*/
-
-static void
-set_codepoint(PARROT_INTERP, ARGIN(STRING *src), UINTVAL offset, UINTVAL codepoint)
-{
-    ASSERT_ARGS(set_codepoint)
-#if PARROT_HAS_ICU
-    UChar * const s = (UChar*) src->strstart;
-    s[offset] = codepoint;
-#else
-    UNUSED(src)
-    UNUSED(offset)
-    UNUSED(codepoint)
-    no_ICU_lib(interp);
-#endif
-}
 
 /*
 
@@ -397,7 +313,8 @@
 get_codepoints(PARROT_INTERP, ARGIN(STRING *src), UINTVAL offset, UINTVAL count)
 {
     ASSERT_ARGS(get_codepoints)
-    STRING * const return_string = Parrot_str_new_COW(interp, src);
+    STRING * const return_string = Parrot_str_copy(interp, src);
+
 #if PARROT_HAS_ICU
     return_string->strstart = (char*)src->strstart + offset * sizeof (UChar);
     return_string->bufused = count * sizeof (UChar);
@@ -443,109 +360,7 @@
 
 /*
 
-=item C<static STRING * get_codepoints_inplace(PARROT_INTERP, STRING *src,
-UINTVAL offset, UINTVAL count, STRING *dest_string)>
-
-Gets from string C<src> at position C<offset> C<count> codepoints and returns
-them in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_codepoints_inplace(PARROT_INTERP, SHIM(STRING *src),
-        SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *dest_string))
-{
-    ASSERT_ARGS(get_codepoints_inplace)
-    UNIMPL;
-}
-
-/*
-
-=item C<static STRING * get_bytes_inplace(PARROT_INTERP, STRING *src, UINTVAL
-offset, UINTVAL count, STRING *return_string)>
-
-Gets from string C<src> at position C<offset> C<count> bytes and returns them
-in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_bytes_inplace(PARROT_INTERP, SHIM(STRING *src),
-        SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *return_string))
-{
-    ASSERT_ARGS(get_bytes_inplace)
-    UNIMPL;
-}
-
-/*
-
-=item C<static void set_codepoints(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count, STRING *new_codepoints)>
-
-Replaces in string C<src> at position C<offset> for C<count> codepoints with
-the contents of string C<new_codepoints>.
-
-=cut
-
-*/
-
-static void
-set_codepoints(PARROT_INTERP, SHIM(STRING *src),
-        SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *new_codepoints))
-{
-    ASSERT_ARGS(set_codepoints)
-    UNIMPL;
-}
-
-/*
-
-=item C<static void set_bytes(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count, STRING *new_bytes)>
-
-Replaces in string C<src> at position C<offset> for C<count> bytes with the
-contents of string C<new_bytes>.
-
-=cut
-
-*/
-
-static void
-set_bytes(PARROT_INTERP, SHIM(STRING *src),
-        SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *new_bytes))
-{
-    ASSERT_ARGS(set_bytes)
-    UNIMPL;
-}
-
-/*
-
-=item C<static void become_encoding(PARROT_INTERP, STRING *src)>
-
-Unconditionally makes the string be in this encoding, if that's valid
-
-=cut
-
-*/
-
-static void
-become_encoding(PARROT_INTERP, SHIM(STRING *src))
-{
-    ASSERT_ARGS(become_encoding)
-    UNIMPL;
-}
-
-
-/*
-
-=item C<static UINTVAL codepoints(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL codepoints(PARROT_INTERP, const STRING *src)>
 
 Returns the number of codepoints in string C<src>.
 
@@ -555,10 +370,11 @@
 
 PARROT_WARN_UNUSED_RESULT
 static UINTVAL
-codepoints(PARROT_INTERP, ARGIN(STRING *src))
+codepoints(PARROT_INTERP, ARGIN(const STRING *src))
 {
     ASSERT_ARGS(codepoints)
 #if PARROT_HAS_ICU
+    UNUSED(interp);
     return src->bufused / sizeof (UChar);
 #else
     UNUSED(src);
@@ -568,7 +384,7 @@
 
 /*
 
-=item C<static UINTVAL bytes(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL bytes(PARROT_INTERP, const STRING *src)>
 
 Returns the number of bytes in string C<src>.
 
@@ -578,7 +394,7 @@
 
 PARROT_WARN_UNUSED_RESULT
 static UINTVAL
-bytes(SHIM_INTERP, ARGIN(STRING *src))
+bytes(SHIM_INTERP, ARGIN(const STRING *src))
 {
     ASSERT_ARGS(bytes)
     return src->bufused;
@@ -638,9 +454,9 @@
     ASSERT_ARGS(ucs2_encode_and_advance)
 
 #if PARROT_HAS_ICU
-    UChar * const s = (UChar*) i->str->strstart;
+    UChar    *s = (UChar*) i->str->strstart;
     UINTVAL pos = i->bytepos / sizeof (UChar);
-    s[pos++] = (UChar)c;
+    s[pos++]    = (UChar)c;
     i->charpos++;
     i->bytepos = pos * sizeof (UChar);
 #else
@@ -668,8 +484,9 @@
 {
     ASSERT_ARGS(ucs2_hash)
 #if PARROT_HAS_ICU
-    UChar  *pos = (UChar*) s->strstart;
+    const UChar *pos = (const UChar*) s->strstart;
     UINTVAL len = s->strlen;
+    UNUSED(interp);
 
     while (len--) {
         hashval += hashval << 5;
@@ -748,7 +565,7 @@
 
 /*
 
-=item C<ENCODING * Parrot_encoding_ucs2_init(PARROT_INTERP)>
+=item C<void Parrot_encoding_ucs2_init(PARROT_INTERP)>
 
 Initializes the UCS-2 encoding.
 
@@ -756,8 +573,7 @@
 
 */
 
-PARROT_CANNOT_RETURN_NULL
-ENCODING *
+void
 Parrot_encoding_ucs2_init(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_encoding_ucs2_init)
@@ -768,16 +584,10 @@
         2, /* Max bytes per codepoint 0 .. 0x10ffff */
         to_encoding,
         get_codepoint,
-        set_codepoint,
         get_byte,
         set_byte,
         get_codepoints,
-        get_codepoints_inplace,
         get_bytes,
-        get_bytes_inplace,
-        set_codepoints,
-        set_bytes,
-        become_encoding,
         codepoints,
         bytes,
         iter_init,
@@ -786,7 +596,8 @@
     };
     STRUCT_COPY_FROM_STRUCT(return_encoding, base_encoding);
     Parrot_register_encoding(interp, "ucs2", return_encoding);
-    return return_encoding;
+
+    return;
 }
 
 /*

Modified: branches/runcore_purge/src/string/encoding/ucs2.h
==============================================================================
--- branches/runcore_purge/src/string/encoding/ucs2.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/encoding/ucs2.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -16,8 +16,7 @@
 /* HEADERIZER BEGIN: src/string/encoding/ucs2.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-PARROT_CANNOT_RETURN_NULL
-ENCODING * Parrot_encoding_ucs2_init(PARROT_INTERP)
+void Parrot_encoding_ucs2_init(PARROT_INTERP)
         __attribute__nonnull__(1);
 
 #define ASSERT_ARGS_Parrot_encoding_ucs2_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\

Modified: branches/runcore_purge/src/string/encoding/utf16.c
==============================================================================
--- branches/runcore_purge/src/string/encoding/utf16.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/encoding/utf16.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -26,15 +26,12 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-static void become_encoding(PARROT_INTERP, SHIM(STRING *src))
-        __attribute__nonnull__(1);
-
 PARROT_WARN_UNUSED_RESULT
-static UINTVAL bytes(SHIM_INTERP, ARGIN(STRING *src))
+static UINTVAL bytes(SHIM_INTERP, ARGIN(const STRING *src))
         __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
-static UINTVAL codepoints(PARROT_INTERP, ARGIN(STRING *src))
+static UINTVAL codepoints(PARROT_INTERP, ARGIN(const STRING *src))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
@@ -63,17 +60,6 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_bytes_inplace(PARROT_INTERP,
-    ARGIN(STRING *src),
-    UINTVAL offset,
-    UINTVAL count,
-    ARGIN(STRING *return_string))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5);
-
 static UINTVAL get_codepoint(PARROT_INTERP,
     ARGIN(const STRING *src),
     UINTVAL offset)
@@ -89,18 +75,6 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_codepoints_inplace(PARROT_INTERP,
-    ARGIN(STRING *src),
-    UINTVAL offset,
-    UINTVAL count,
-    ARGMOD(STRING *return_string))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*return_string);
-
 static void iter_init(PARROT_INTERP,
     ARGIN(const STRING *src),
     ARGOUT(String_iter *iter))
@@ -116,60 +90,29 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void set_bytes(PARROT_INTERP,
-    SHIM(STRING *src),
-    UINTVAL offset,
-    UINTVAL count,
-    SHIM(STRING *new_bytes))
-        __attribute__nonnull__(1);
-
-static void set_codepoint(PARROT_INTERP,
-    ARGIN(STRING *src),
-    UINTVAL offset,
-    UINTVAL codepoint)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-static void set_codepoints(PARROT_INTERP,
-    ARGIN(STRING *src),
-    UINTVAL offset,
-    UINTVAL count,
-    ARGIN(STRING *new_codepoints))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5);
-
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-static STRING * to_encoding(PARROT_INTERP,
-    ARGIN(STRING *src),
-    ARGIN_NULLOK(STRING *dest))
+static STRING * to_encoding(PARROT_INTERP, ARGIN(const STRING *src))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
-static UINTVAL utf16_decode_and_advance(PARROT_INTERP,
-    ARGMOD(String_iter *i))
-        __attribute__nonnull__(1)
+static UINTVAL utf16_decode_and_advance(SHIM_INTERP, ARGMOD(String_iter *i))
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*i);
 
-static void utf16_encode_and_advance(PARROT_INTERP,
+static void utf16_encode_and_advance(SHIM_INTERP,
     ARGMOD(String_iter *i),
     UINTVAL c)
-        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*i);
 
-static void utf16_set_position(PARROT_INTERP,
+static void utf16_set_position(SHIM_INTERP,
     ARGMOD(String_iter *i),
     UINTVAL n)
-        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*i);
 
-#define ASSERT_ARGS_become_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -184,20 +127,12 @@
 #define ASSERT_ARGS_get_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_get_bytes_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(src) \
-    , PARROT_ASSERT_ARG(return_string))
 #define ASSERT_ARGS_get_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_get_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_get_codepoints_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(src) \
-    , PARROT_ASSERT_ARG(return_string))
 #define ASSERT_ARGS_iter_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src) \
@@ -205,27 +140,15 @@
 #define ASSERT_ARGS_set_byte __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_set_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_set_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_set_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(src) \
-    , PARROT_ASSERT_ARG(new_codepoints))
 #define ASSERT_ARGS_to_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_utf16_decode_and_advance __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(i))
+       PARROT_ASSERT_ARG(i))
 #define ASSERT_ARGS_utf16_encode_and_advance __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(i))
+       PARROT_ASSERT_ARG(i))
 #define ASSERT_ARGS_utf16_set_position __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(i))
+       PARROT_ASSERT_ARG(i))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
@@ -242,7 +165,7 @@
 
 /*
 
-=item C<static STRING * to_encoding(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_encoding(PARROT_INTERP, const STRING *src)>
 
 Converts the string C<src> to this particular encoding.  If C<dest> is
 provided, it will contain the result.  Otherwise this function operates in
@@ -256,7 +179,7 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static STRING *
-to_encoding(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_encoding(PARROT_INTERP, ARGIN(const STRING *src))
 {
     ASSERT_ARGS(to_encoding)
 #if PARROT_HAS_ICU
@@ -265,45 +188,28 @@
     UChar *p;
 #endif
     int src_len;
-    int in_place = dest == NULL;
     STRING *result;
 
     if (src->encoding == Parrot_utf16_encoding_ptr ||
             src->encoding == Parrot_ucs2_encoding_ptr)
-        return in_place ? src : Parrot_str_copy(interp, src);
+        return Parrot_str_clone(interp, src);
+
+    result = Parrot_gc_new_string_header(interp, 0);
+
     /*
      * TODO adapt string creation functions
      */
     src_len = src->strlen;
-    if (in_place) {
-        result = src;
-    }
-    else {
-        result = dest;
-    }
     if (!src_len) {
         result->charset  = Parrot_unicode_charset_ptr;
         result->encoding = Parrot_ucs2_encoding_ptr;
         result->strlen = result->bufused = 0;
         return result;
     }
-    /*
-       u_strFromUTF8(UChar *dest,
-       int32_t destCapacity,
-       int32_t *pDestLength,
-       const char *src,
-       int32_t srcLength,
-       UErrorCode *pErrorCode);
-       */
 #if PARROT_HAS_ICU
-    if (in_place) {
-        /* need intermediate memory */
-        p = mem_gc_allocate_n_typed(interp, src_len, UChar);
-    }
-    else {
-        Parrot_gc_reallocate_string_storage(interp, dest, sizeof (UChar) * src_len);
-        p = (UChar *)dest->strstart;
-    }
+    Parrot_gc_allocate_string_storage(interp, result, sizeof (UChar) * src_len);
+    p = (UChar *)result->strstart;
+
     if (src->charset == Parrot_iso_8859_1_charset_ptr ||
             src->charset == Parrot_ascii_charset_ptr) {
         for (dest_len = 0; dest_len < (int)src->strlen; ++dest_len) {
@@ -318,25 +224,16 @@
             /*
              * have to resize - required len in UChars is in dest_len
              */
-            if (in_place)
-                p = mem_gc_realloc_n_typed(interp, p, dest_len, UChar);
-            else {
-                result->bufused = dest_len * sizeof (UChar);
-                Parrot_gc_reallocate_string_storage(interp, dest,
-                                         sizeof (UChar) * dest_len);
-                p = (UChar *)dest->strstart;
-            }
+            result->bufused = dest_len * sizeof (UChar);
+            Parrot_gc_reallocate_string_storage(interp, result,
+                                     sizeof (UChar) * dest_len);
+            p = (UChar *)result->strstart;
             u_strFromUTF8(p, dest_len,
                     &dest_len, src->strstart, src->bufused, &err);
             PARROT_ASSERT(U_SUCCESS(err));
         }
     }
     result->bufused = dest_len * sizeof (UChar);
-    if (in_place) {
-        Parrot_gc_reallocate_string_storage(interp, src, src->bufused);
-        memcpy(src->strstart, p, src->bufused);
-        mem_gc_free(interp, p);
-    }
     result->charset  = Parrot_unicode_charset_ptr;
     result->encoding = Parrot_utf16_encoding_ptr;
     result->strlen = src_len;
@@ -367,8 +264,9 @@
 {
     ASSERT_ARGS(get_codepoint)
 #if PARROT_HAS_ICU
-    UChar * const s = (UChar*) src->strstart;
+    const UChar * const s = (UChar*) src->strstart;
     UINTVAL c, pos;
+    UNUSED(interp);
 
     pos = 0;
     U16_FWD_N_UNSAFE(s, pos, offset);
@@ -383,27 +281,6 @@
 #endif
 }
 
-/*
-
-=item C<static void set_codepoint(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL codepoint)>
-
-Sets, in string C<src> at position C<offset>, the codepoint C<codepoint>.
-
-=cut
-
-*/
-
-static void
-set_codepoint(PARROT_INTERP, ARGIN(STRING *src), UINTVAL offset, UINTVAL codepoint)
-{
-    ASSERT_ARGS(set_codepoint)
-    UNUSED(interp);
-    UNUSED(src);
-    UNUSED(offset);
-    UNUSED(codepoint);
-    UNIMPL;
-}
 
 /*
 
@@ -502,7 +379,7 @@
     ASSERT_ARGS(get_codepoints)
     String_iter iter;
     UINTVAL start;
-    STRING * const return_string = Parrot_str_new_COW(interp, src);
+    STRING * const return_string = Parrot_str_copy(interp, src);
 
     iter_init(interp, src, &iter);
     iter.set_position(interp, &iter, offset);
@@ -518,39 +395,6 @@
 
 /*
 
-=item C<static STRING * get_codepoints_inplace(PARROT_INTERP, STRING *src,
-UINTVAL offset, UINTVAL count, STRING *return_string)>
-
-Gets from string C<src> at position C<offset> C<count> codepoints and returns
-them in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_codepoints_inplace(PARROT_INTERP, ARGIN(STRING *src),
-        UINTVAL offset, UINTVAL count, ARGMOD(STRING *return_string))
-{
-    ASSERT_ARGS(get_codepoints_inplace)
-    String_iter iter;
-    UINTVAL start;
-    Parrot_str_reuse_COW(interp, src, return_string);
-    iter_init(interp, src, &iter);
-    iter.set_position(interp, &iter, offset);
-    start = iter.bytepos;
-    return_string->strstart = (char *)return_string->strstart + start ;
-    iter.set_position(interp, &iter, offset + count);
-    return_string->bufused = iter.bytepos - start;
-    return_string->strlen = count;
-    return_string->hashval = 0;
-    return return_string;
-}
-
-/*
-
 =item C<static STRING * get_bytes(PARROT_INTERP, STRING *src, UINTVAL offset,
 UINTVAL count)>
 
@@ -575,100 +419,7 @@
 
 /*
 
-=item C<static STRING * get_bytes_inplace(PARROT_INTERP, STRING *src, UINTVAL
-offset, UINTVAL count, STRING *return_string)>
-
-Gets from string C<src> at position C<offset> C<count> bytes and returns them
-in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_bytes_inplace(PARROT_INTERP, ARGIN(STRING *src),
-        UINTVAL offset, UINTVAL count, ARGIN(STRING *return_string))
-{
-    ASSERT_ARGS(get_bytes_inplace)
-    UNUSED(interp);
-    UNUSED(src);
-    UNUSED(offset)
-    UNUSED(count);
-    UNUSED(return_string);
-    UNIMPL;
-}
-
-/*
-
-=item C<static void set_codepoints(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count, STRING *new_codepoints)>
-
-Replaces in string C<src> at position C<offset> for C<count> codepoints with
-the contents of string C<new_codepoints>.
-
-=cut
-
-*/
-
-static void
-set_codepoints(PARROT_INTERP, ARGIN(STRING *src),
-        UINTVAL offset, UINTVAL count, ARGIN(STRING *new_codepoints))
-{
-    ASSERT_ARGS(set_codepoints)
-    UNUSED(interp);
-    UNUSED(src);
-    UNUSED(offset)
-    UNUSED(count);
-    UNUSED(new_codepoints);
-    UNIMPL;
-}
-
-/*
-
-=item C<static void set_bytes(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count, STRING *new_bytes)>
-
-Replaces in string C<src> at position C<offset> for C<count> bytes with the
-contents of string C<new_bytes>.
-
-=cut
-
-*/
-
-static void
-set_bytes(PARROT_INTERP, SHIM(STRING *src),
-        UINTVAL offset, UINTVAL count, SHIM(STRING *new_bytes))
-{
-    ASSERT_ARGS(set_bytes)
-    UNUSED(interp);
-    UNUSED(offset)
-    UNUSED(count);
-    UNIMPL;
-}
-
-/*
-
-=item C<static void become_encoding(PARROT_INTERP, STRING *src)>
-
-Unconditionally makes the string be in this encoding, if that's valid
-
-=cut
-
-*/
-
-static void
-become_encoding(PARROT_INTERP, SHIM(STRING *src))
-{
-    ASSERT_ARGS(become_encoding)
-    UNIMPL;
-}
-
-
-/*
-
-=item C<static UINTVAL codepoints(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL codepoints(PARROT_INTERP, const STRING *src)>
 
 Returns the number of codepoints in string C<src>.
 
@@ -678,7 +429,7 @@
 
 PARROT_WARN_UNUSED_RESULT
 static UINTVAL
-codepoints(PARROT_INTERP, ARGIN(STRING *src))
+codepoints(PARROT_INTERP, ARGIN(const STRING *src))
 {
     ASSERT_ARGS(codepoints)
     String_iter iter;
@@ -694,7 +445,7 @@
 
 /*
 
-=item C<static UINTVAL bytes(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL bytes(PARROT_INTERP, const STRING *src)>
 
 Returns the number of bytes in string C<src>.
 
@@ -704,7 +455,7 @@
 
 PARROT_WARN_UNUSED_RESULT
 static UINTVAL
-bytes(SHIM_INTERP, ARGIN(STRING *src))
+bytes(SHIM_INTERP, ARGIN(const STRING *src))
 {
     ASSERT_ARGS(bytes)
     return src->bufused;
@@ -723,12 +474,13 @@
 
 PARROT_WARN_UNUSED_RESULT
 static UINTVAL
-utf16_decode_and_advance(PARROT_INTERP, ARGMOD(String_iter *i))
+utf16_decode_and_advance(SHIM_INTERP, ARGMOD(String_iter *i))
 {
     ASSERT_ARGS(utf16_decode_and_advance)
-    UChar *s = (UChar*) i->str->strstart;
-    UINTVAL c, pos;
-    pos = i->bytepos / sizeof (UChar);
+    const UChar * const s = (const UChar*) i->str->strstart;
+    UINTVAL pos = i->bytepos / sizeof (UChar);
+    UINTVAL c;
+
     /* TODO either make sure that we don't go past end or use SAFE
      *      iter versions
      */
@@ -751,12 +503,11 @@
 */
 
 static void
-utf16_encode_and_advance(PARROT_INTERP, ARGMOD(String_iter *i), UINTVAL c)
+utf16_encode_and_advance(SHIM_INTERP, ARGMOD(String_iter *i), UINTVAL c)
 {
     ASSERT_ARGS(utf16_encode_and_advance)
-    UChar *s = (UChar*) i->str->strstart;
-    UINTVAL pos;
-    pos = i->bytepos / sizeof (UChar);
+    UChar * const s = (UChar*) i->str->strstart;
+    UINTVAL pos = i->bytepos / sizeof (UChar);
     U16_APPEND_UNSAFE(s, pos, c);
     i->charpos++;
     i->bytepos = pos * sizeof (UChar);
@@ -774,7 +525,7 @@
 */
 
 static void
-utf16_set_position(PARROT_INTERP, ARGMOD(String_iter *i), UINTVAL n)
+utf16_set_position(SHIM_INTERP, ARGMOD(String_iter *i), UINTVAL n)
 {
     ASSERT_ARGS(utf16_set_position)
     UChar * const s = (UChar*) i->str->strstart;
@@ -805,6 +556,7 @@
     iter->str = src;
     iter->bytepos = iter->charpos = 0;
 #if PARROT_HAS_ICU
+    UNUSED(interp);
     iter->get_and_advance = utf16_decode_and_advance;
     iter->set_and_advance = utf16_encode_and_advance;
     iter->set_position =    utf16_set_position;
@@ -816,7 +568,7 @@
 
 /*
 
-=item C<ENCODING * Parrot_encoding_utf16_init(PARROT_INTERP)>
+=item C<void Parrot_encoding_utf16_init(PARROT_INTERP)>
 
 Initializes the UTF-16 encoding.
 
@@ -824,8 +576,7 @@
 
 */
 
-PARROT_CANNOT_RETURN_NULL
-ENCODING *
+void
 Parrot_encoding_utf16_init(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_encoding_utf16_init)
@@ -836,16 +587,10 @@
         4, /* Max bytes per codepoint 0 .. 0x10ffff */
         to_encoding,
         get_codepoint,
-        set_codepoint,
         get_byte,
         set_byte,
         get_codepoints,
-        get_codepoints_inplace,
         get_bytes,
-        get_bytes_inplace,
-        set_codepoints,
-        set_bytes,
-        become_encoding,
         codepoints,
         bytes,
         iter_init,
@@ -854,7 +599,8 @@
     };
     STRUCT_COPY_FROM_STRUCT(return_encoding, base_encoding);
     Parrot_register_encoding(interp, "utf16", return_encoding);
-    return return_encoding;
+
+    return;
 }
 
 /*

Modified: branches/runcore_purge/src/string/encoding/utf16.h
==============================================================================
--- branches/runcore_purge/src/string/encoding/utf16.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/encoding/utf16.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -16,8 +16,7 @@
 /* HEADERIZER BEGIN: src/string/encoding/utf16.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-PARROT_CANNOT_RETURN_NULL
-ENCODING * Parrot_encoding_utf16_init(PARROT_INTERP)
+void Parrot_encoding_utf16_init(PARROT_INTERP)
         __attribute__nonnull__(1);
 
 #define ASSERT_ARGS_Parrot_encoding_utf16_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\

Modified: branches/runcore_purge/src/string/encoding/utf8.c
==============================================================================
--- branches/runcore_purge/src/string/encoding/utf8.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/encoding/utf8.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -27,17 +27,13 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-static void become_encoding(PARROT_INTERP, SHIM(STRING *src))
-        __attribute__nonnull__(1);
-
 PARROT_PURE_FUNCTION
-static UINTVAL bytes(SHIM_INTERP, ARGIN(STRING *src))
+static UINTVAL bytes(SHIM_INTERP, ARGIN(const STRING *src))
         __attribute__nonnull__(2);
 
-static UINTVAL codepoints(PARROT_INTERP, ARGMOD(STRING *src))
+static UINTVAL codepoints(PARROT_INTERP, ARGIN(const STRING *src))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*src);
+        __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
 static UINTVAL find_cclass(PARROT_INTERP,
@@ -62,14 +58,6 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*src);
 
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_bytes_inplace(PARROT_INTERP,
-    SHIM(STRING *src),
-    SHIM(UINTVAL offset),
-    SHIM(UINTVAL count),
-    SHIM(STRING *return_string))
-        __attribute__nonnull__(1);
-
 static UINTVAL get_codepoint(PARROT_INTERP,
     ARGIN(const STRING *src),
     UINTVAL offset)
@@ -84,18 +72,6 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_codepoints_inplace(PARROT_INTERP,
-    ARGMOD(STRING *src),
-    UINTVAL offset,
-    UINTVAL count,
-    ARGMOD(STRING *return_string))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*src)
-        FUNC_MODIFIES(*return_string);
-
 static void iter_init(SHIM_INTERP,
     ARGIN(const STRING *src),
     ARGOUT(String_iter *iter))
@@ -110,35 +86,10 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void set_bytes(PARROT_INTERP,
-    SHIM(STRING *src),
-    SHIM(UINTVAL offset),
-    SHIM(UINTVAL count),
-    SHIM(STRING *new_bytes))
-        __attribute__nonnull__(1);
-
-static void set_codepoint(PARROT_INTERP,
-    ARGIN(STRING *src),
-    UINTVAL offset,
-    UINTVAL codepoint)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-static void set_codepoints(PARROT_INTERP,
-    SHIM(STRING *src),
-    SHIM(UINTVAL offset),
-    SHIM(UINTVAL count),
-    SHIM(STRING *new_codepoints))
-        __attribute__nonnull__(1);
-
 PARROT_CAN_RETURN_NULL
-static STRING * to_encoding(PARROT_INTERP,
-    ARGMOD(STRING *src),
-    ARGMOD_NULLOK(STRING *dest))
+static STRING * to_encoding(PARROT_INTERP, ARGIN(const STRING *src))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*src)
-        FUNC_MODIFIES(*dest);
+        __attribute__nonnull__(2);
 
 static UINTVAL utf8_characters(PARROT_INTERP,
     ARGIN(const utf8_t *ptr),
@@ -183,8 +134,6 @@
 static const void * utf8_skip_forward(ARGIN(const void *ptr), UINTVAL n)
         __attribute__nonnull__(1);
 
-#define ASSERT_ARGS_become_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -197,31 +146,18 @@
 #define ASSERT_ARGS_get_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_get_bytes_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_get_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_get_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_get_codepoints_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(src) \
-    , PARROT_ASSERT_ARG(return_string))
 #define ASSERT_ARGS_iter_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(src) \
     , PARROT_ASSERT_ARG(iter))
 #define ASSERT_ARGS_set_byte __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_set_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_set_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_set_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_to_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(src))
@@ -271,10 +207,6 @@
     4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6      /* cjk etc. */
 };
 
-#if 0
-typedef unsigned char utf8_t;
-#endif
-
 /*
 
 =item C<static UINTVAL utf8_characters(PARROT_INTERP, const utf8_t *ptr, UINTVAL
@@ -566,7 +498,7 @@
 
 /*
 
-=item C<static STRING * to_encoding(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_encoding(PARROT_INTERP, const STRING *src)>
 
 Converts the string C<src> to this particular encoding.  If C<dest> is
 provided, it will contain the result.  Otherwise this function operates in
@@ -578,24 +510,19 @@
 
 PARROT_CAN_RETURN_NULL
 static STRING *
-to_encoding(PARROT_INTERP, ARGMOD(STRING *src), ARGMOD_NULLOK(STRING *dest))
+to_encoding(PARROT_INTERP, ARGIN(const STRING *src))
 {
     ASSERT_ARGS(to_encoding)
     STRING *result;
     String_iter src_iter;
     UINTVAL offs, dest_len, dest_pos, src_len;
-    const int in_place = (dest == NULL);
     unsigned char *p;
 
     if (src->encoding == Parrot_utf8_encoding_ptr)
-        return in_place ? src : Parrot_str_copy(interp, src);
+        return Parrot_str_clone(interp, src);
+
+    result = Parrot_gc_new_string_header(interp, 0);
     src_len = src->strlen;
-    if (in_place) {
-        result = src;
-    }
-    else {
-        result = dest;
-    }
 
     /* init iter before possilby changing encoding */
     ENCODING_ITER_INIT(interp, src, &src_iter);
@@ -604,16 +531,11 @@
     result->strlen   = src_len;
 
     if (!src->strlen)
-        return dest;
+        return result;
+
+    Parrot_gc_allocate_string_storage(interp, result, src_len);
+    p = (unsigned char *)result->strstart;
 
-    if (in_place) {
-        /* need intermediate memory */
-        p = mem_gc_allocate_n_typed(interp, src_len, unsigned char);
-    }
-    else {
-        Parrot_gc_reallocate_string_storage(interp, dest, src_len);
-        p = (unsigned char *)dest->strstart;
-    }
     if (src->charset == Parrot_ascii_charset_ptr) {
         for (dest_len = 0; dest_len < src_len; ++dest_len) {
             p[dest_len] = ((unsigned char*)src->strstart)[dest_len];
@@ -633,13 +555,9 @@
                 if (need < 16)
                     need = 16;
                 dest_len += need;
-                if (in_place)
-                    p = mem_gc_realloc_n_typed(interp, p, dest_len, unsigned char);
-                else {
-                    result->bufused = dest_pos;
-                    Parrot_gc_reallocate_string_storage(interp, dest, dest_len);
-                    p = (unsigned char *)dest->strstart;
-                }
+                result->bufused = dest_pos;
+                Parrot_gc_reallocate_string_storage(interp, result, dest_len);
+                p = (unsigned char *)result->strstart;
             }
 
             pos = p + dest_pos;
@@ -648,11 +566,7 @@
         }
         result->bufused = dest_pos;
     }
-    if (in_place) {
-        Parrot_gc_reallocate_string_storage(interp, src, src->bufused);
-        memcpy(src->strstart, p, src->bufused);
-        mem_gc_free(interp, p);
-    }
+
     return result;
 }
 
@@ -675,29 +589,6 @@
     return utf8_decode(interp, start);
 }
 
-/*
-
-=item C<static void set_codepoint(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL codepoint)>
-
-Sets, in string C<src> at position C<offset>, the codepoint C<codepoint>.
-
-=cut
-
-*/
-
-static void
-set_codepoint(PARROT_INTERP, ARGIN(STRING *src), UINTVAL offset, UINTVAL codepoint)
-{
-    ASSERT_ARGS(set_codepoint)
-    const void *start;
-    void *p;
-    DECL_CONST_CAST;
-
-    start = utf8_skip_forward(src->strstart, offset);
-    p = PARROT_const_cast(void *, start);
-    utf8_encode(interp, p, codepoint);
-}
 
 /*
 
@@ -789,7 +680,7 @@
 {
     ASSERT_ARGS(get_codepoints)
 
-    STRING * const return_string = Parrot_str_new_COW(interp, src);
+    STRING * const return_string = Parrot_str_copy(interp, src);
     String_iter    iter;
     UINTVAL        start;
 
@@ -827,10 +718,7 @@
 get_bytes(PARROT_INTERP, ARGMOD(STRING *src), UINTVAL offset, UINTVAL count)
 {
     ASSERT_ARGS(get_bytes)
-    STRING * const return_string = Parrot_str_new_COW(interp, src);
-
-    return_string->encoding = src->encoding;    /* XXX */
-    return_string->charset = src->charset;
+    STRING * const return_string = Parrot_str_copy(interp, src);
 
     return_string->strstart = (char *)return_string->strstart + offset ;
     return_string->bufused = count;
@@ -841,125 +729,11 @@
     return return_string;
 }
 
-/*
-
-=item C<static STRING * get_codepoints_inplace(PARROT_INTERP, STRING *src,
-UINTVAL offset, UINTVAL count, STRING *return_string)>
-
-Gets from string C<src> at position C<offset> C<count> codepoints and returns
-them in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_codepoints_inplace(PARROT_INTERP, ARGMOD(STRING *src),
-        UINTVAL offset, UINTVAL count, ARGMOD(STRING *return_string))
-{
-    ASSERT_ARGS(get_codepoints_inplace)
-    String_iter iter;
-    UINTVAL start;
-
-    Parrot_str_reuse_COW(interp, src, return_string);
-    iter_init(interp, src, &iter);
-    iter.set_position(interp, &iter, offset);
-
-    start = iter.bytepos;
-
-    return_string->strstart = (char *)return_string->strstart + start;
-    iter.set_position(interp, &iter, offset + count);
-
-    return_string->bufused = iter.bytepos - start;
-    return_string->strlen  = count;
-    return_string->hashval = 0;
-
-    return return_string;
-}
-
-/*
-
-=item C<static STRING * get_bytes_inplace(PARROT_INTERP, STRING *src, UINTVAL
-offset, UINTVAL count, STRING *return_string)>
-
-Gets from string C<src> at position C<offset> C<count> bytes and returns them
-in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_bytes_inplace(PARROT_INTERP, SHIM(STRING *src),
-        SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *return_string))
-{
-    ASSERT_ARGS(get_bytes_inplace)
-    UNIMPL;
-}
-
-/*
-
-=item C<static void set_codepoints(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count, STRING *new_codepoints)>
-
-Replaces in string C<src> at position C<offset> for C<count> codepoints with
-the contents of string C<new_codepoints>.
-
-=cut
-
-*/
-
-static void
-set_codepoints(PARROT_INTERP, SHIM(STRING *src),
-        SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *new_codepoints))
-{
-    ASSERT_ARGS(set_codepoints)
-    UNIMPL;
-}
-
-/*
-
-=item C<static void set_bytes(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count, STRING *new_bytes)>
-
-Replaces in string C<src> at position C<offset> for C<count> bytes with the
-contents of string C<new_bytes>.
-
-=cut
-
-*/
-
-static void
-set_bytes(PARROT_INTERP, SHIM(STRING *src),
-        SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *new_bytes))
-{
-    ASSERT_ARGS(set_bytes)
-    UNIMPL;
-}
-
-/*
-
-=item C<static void become_encoding(PARROT_INTERP, STRING *src)>
-
-Unconditionally makes the string be in this encoding, if that's valid
-
-=cut
-
-*/
-
-static void
-become_encoding(PARROT_INTERP, SHIM(STRING *src))
-{
-    ASSERT_ARGS(become_encoding)
-    UNIMPL;
-}
 
 
 /*
 
-=item C<static UINTVAL codepoints(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL codepoints(PARROT_INTERP, const STRING *src)>
 
 Returns the number of codepoints in string C<src>.
 
@@ -968,7 +742,7 @@
 */
 
 static UINTVAL
-codepoints(PARROT_INTERP, ARGMOD(STRING *src))
+codepoints(PARROT_INTERP, ARGIN(const STRING *src))
 {
     ASSERT_ARGS(codepoints)
     String_iter iter;
@@ -984,7 +758,7 @@
 
 /*
 
-=item C<static UINTVAL bytes(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL bytes(PARROT_INTERP, const STRING *src)>
 
 Returns the number of bytes in string C<src>.
 
@@ -994,7 +768,7 @@
 
 PARROT_PURE_FUNCTION
 static UINTVAL
-bytes(SHIM_INTERP, ARGIN(STRING *src))
+bytes(SHIM_INTERP, ARGIN(const STRING *src))
 {
     ASSERT_ARGS(bytes)
     return src->bufused;
@@ -1025,7 +799,7 @@
 
 /*
 
-=item C<ENCODING * Parrot_encoding_utf8_init(PARROT_INTERP)>
+=item C<void Parrot_encoding_utf8_init(PARROT_INTERP)>
 
 Initializes the UTF-8 encoding.
 
@@ -1033,8 +807,7 @@
 
 */
 
-PARROT_CANNOT_RETURN_NULL
-ENCODING *
+void
 Parrot_encoding_utf8_init(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_encoding_utf8_init)
@@ -1045,16 +818,10 @@
         4, /* Max bytes per codepoint 0 .. 0x10ffff */
         to_encoding,
         get_codepoint,
-        set_codepoint,
         get_byte,
         set_byte,
         get_codepoints,
-        get_codepoints_inplace,
         get_bytes,
-        get_bytes_inplace,
-        set_codepoints,
-        set_bytes,
-        become_encoding,
         codepoints,
         bytes,
         iter_init,
@@ -1063,7 +830,8 @@
     };
     STRUCT_COPY_FROM_STRUCT(return_encoding, base_encoding);
     Parrot_register_encoding(interp, "utf8", return_encoding);
-    return return_encoding;
+
+    return;
 }
 
 /*

Modified: branches/runcore_purge/src/string/encoding/utf8.h
==============================================================================
--- branches/runcore_purge/src/string/encoding/utf8.h	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/encoding/utf8.h	Sat Apr 24 00:51:33 2010	(r45948)
@@ -16,8 +16,7 @@
 /* HEADERIZER BEGIN: src/string/encoding/utf8.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-PARROT_CANNOT_RETURN_NULL
-ENCODING * Parrot_encoding_utf8_init(PARROT_INTERP)
+void Parrot_encoding_utf8_init(PARROT_INTERP)
         __attribute__nonnull__(1);
 
 #define ASSERT_ARGS_Parrot_encoding_utf8_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\

Modified: branches/runcore_purge/src/string/primitives.c
==============================================================================
--- branches/runcore_purge/src/string/primitives.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/string/primitives.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -70,8 +70,8 @@
 
 /*
 
-=item C<Parrot_UInt4 string_unescape_one(PARROT_INTERP, UINTVAL *offset, STRING
-*string)>
+=item C<Parrot_UInt4 string_unescape_one(PARROT_INTERP, UINTVAL *offset, const
+STRING *string)>
 
 Unescape a single character. We assume that we're at the start of a
 sequence, right after the \.
@@ -83,7 +83,7 @@
 PARROT_EXPORT
 Parrot_UInt4
 string_unescape_one(PARROT_INTERP, ARGMOD(UINTVAL *offset),
-        ARGMOD(STRING *string))
+        ARGIN(const STRING *string))
 {
     ASSERT_ARGS(string_unescape_one)
     UINTVAL workchar  = 0;

Modified: branches/runcore_purge/src/sub.c
==============================================================================
--- branches/runcore_purge/src/sub.c	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/src/sub.c	Sat Apr 24 00:51:33 2010	(r45948)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -49,60 +49,6 @@
 
 /*
 
-=item C<PMC * new_ret_continuation_pmc(PARROT_INTERP, opcode_t *address)>
-
-Returns a new C<RetContinuation> PMC, and sets address field to C<address>
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_MALLOC
-PARROT_CANNOT_RETURN_NULL
-PMC *
-new_ret_continuation_pmc(PARROT_INTERP, ARGIN_NULLOK(opcode_t *address))
-{
-    ASSERT_ARGS(new_ret_continuation_pmc)
-    PMC* const continuation = Parrot_pmc_new(interp, enum_class_RetContinuation);
-    VTABLE_set_pointer(interp, continuation, address);
-    return continuation;
-}
-
-/*
-
-=item C<void invalidate_retc_context(PARROT_INTERP, PMC *cont)>
-
-Make true Continuations from all RetContinuations up the call chain.
-
-=cut
-
-*/
-
-void
-invalidate_retc_context(PARROT_INTERP, ARGMOD(PMC *cont))
-{
-    ASSERT_ARGS(invalidate_retc_context)
-
-    PMC *ctx = PARROT_CONTINUATION(cont)->from_ctx;
-    cont = Parrot_pcc_get_continuation(interp, ctx);
-
-    while (1) {
-        /*
-         * We  stop if we encounter a true continuation, because
-         * if one were created, everything up the chain would have been
-         * invalidated earlier.
-         */
-        if (!cont || cont->vtable != interp->vtables[enum_class_RetContinuation])
-            break;
-        cont->vtable = interp->vtables[enum_class_Continuation];
-        ctx  = Parrot_pcc_get_caller_ctx(interp, ctx);
-        cont = Parrot_pcc_get_continuation(interp, ctx);
-    }
-}
-
-/*
-
 =item C<STRING* Parrot_full_sub_name(PARROT_INTERP, PMC* sub_pmc)>
 
 Return namespace, name, and location of subroutine.
@@ -395,7 +341,7 @@
         PMC * const lex_pad = Parrot_pcc_get_lex_pad(interp, ctx);
         PMC * outer         = Parrot_pcc_get_outer_ctx(interp, ctx);
 
-        if (!outer)
+        if (PMC_IS_NULL(outer))
             return lex_pad;
 
         if (!PMC_IS_NULL(lex_pad))
@@ -428,7 +374,7 @@
         PMC * const lex_pad = Parrot_pcc_get_lex_pad(interp, ctx);
         PMC * caller        = Parrot_pcc_get_caller_ctx(interp, ctx);
 
-        if (!caller)
+        if (PMC_IS_NULL(caller))
             return lex_pad;
 
         if (!PMC_IS_NULL(lex_pad))
@@ -633,10 +579,6 @@
 
 F<include/parrot/sub.h>.
 
-=head1 HISTORY
-
-Initial version by Melvin on 2002/06/6.
-
 =cut
 
 */

Modified: branches/runcore_purge/t/compilers/imcc/syn/regressions.t
==============================================================================
--- branches/runcore_purge/t/compilers/imcc/syn/regressions.t	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/t/compilers/imcc/syn/regressions.t	Sat Apr 24 00:51:33 2010	(r45948)
@@ -230,10 +230,10 @@
 
 pir_error_output_like( <<'CODE', <<'OUT', 'over long keys should not segfault (TT #641)');
 .sub main
- $P0 = new [0;0;0;0;0;0;0;0;0;0;0;0] # more than KEYLEN.
+ $P0 = new [0;0;0;0;0;0;0;0;0;0;0;0] # more than MAX_KEY_LEN.
 .end
 CODE
-/key too complex/
+/Key too long/
 OUT
 
 # This test probably belongs in subflags.t

Deleted: branches/runcore_purge/t/distro/meta_yml.t
==============================================================================
--- branches/runcore_purge/t/distro/meta_yml.t	Sat Apr 24 00:51:33 2010	(r45947)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,39 +0,0 @@
-#! perl
-# Copyright (C) 2008-2010, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/distro/meta_yml.t - check sanity of the META.yml file
-
-=head1 SYNOPSIS
-
-    % prove t/distro/meta_yml.t
-
-=head1 DESCRIPTION
-
-Checks the sanitiy of the file META.yml, which gives information
-on a CPAN distribution.
-
-=cut
-
-use strict;
-use warnings;
-use 5.008;
-
-use Test::More;
-
-# Test::CPAN::Meta complains about 'artistic2' license.
-# So let's wait for version 0.08
-# See http://rt.cpan.org/Public/Bug/Display.html?id=34130
-eval "use Test::CPAN::Meta 0.08";
-plan skip_all => "Test::CPAN::Meta 0.08 required for testing META.yml" if $@;
-
-meta_yaml_ok();
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Copied: branches/runcore_purge/t/dynpmc/gziphandle.t (from r45947, trunk/t/dynpmc/gziphandle.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/runcore_purge/t/dynpmc/gziphandle.t	Sat Apr 24 00:51:33 2010	(r45948, copy of r45947, trunk/t/dynpmc/gziphandle.t)
@@ -0,0 +1,66 @@
+#! parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/dynpmc/gziphandle.t - test the GzipHandle PMC
+
+=head1 SYNOPSIS
+
+        % parrot t/dynpmc/gziphandle.t
+
+=head1 DESCRIPTION
+
+Tests the C<GzipHandle> PMC, a zlib wrapper.
+
+=cut
+
+.sub 'main' :main
+    .include 'test_more.pir'
+    .include 'iglobals.pasm'
+    .local pmc config_hash, interp
+    .local int num_tests
+
+    num_tests = 3
+    plan(num_tests)
+    interp = getinterp
+    config_hash = interp[.IGLOBALS_CONFIG_HASH]
+    $S0 = config_hash['has_zlib']
+    unless $S0 goto no_zlib
+
+    $P0 = loadlib 'gziphandle'
+    test_handle()
+    test_version()
+    .return()
+
+  no_zlib:
+    skip(num_tests, 'No zlib library available')
+    .return()
+.end
+
+
+.sub 'test_handle'
+    $P0 = new 'GzipHandle'
+    $S0 = typeof $P0
+    is($S0, 'GzipHandle', 'GzipHandle typeof')
+    $I0 = does $P0, 'Handle'
+    ok($I0, 'does Handle')
+.end
+
+.sub 'test_version'
+    $P0 = new 'GzipHandle'
+    $S0 =$P0.'version'()
+    diag($S0)
+    $I0 = index $S0, '1.'
+    is($I0, 0, 'zlib version')
+.end
+
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+
+

Copied: branches/runcore_purge/t/harness.pir (from r45947, trunk/t/harness.pir)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/runcore_purge/t/harness.pir	Sat Apr 24 00:51:33 2010	(r45948, copy of r45947, trunk/t/harness.pir)
@@ -0,0 +1,390 @@
+#!parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+.sub 'main' :main
+    .param pmc argv
+    $S0  = shift argv
+    .local int argc
+    argc = elements argv
+    if argc > 0 goto L1
+    help()
+    end
+  L1:
+    .local pmc opts
+    opts = _parse_opts(argv)
+    $I0 = exists opts['help']
+    unless $I0 goto L2
+    help()
+    end
+  L2:
+    .tailcall do(opts, argv)
+.end
+
+.sub 'help' :anon
+    say <<"HELP"
+parrot t/harness.pir [options] [testfiles]
+    --core-tests
+    --runcore-tests
+    --code-tests
+    --archive  ... create a TAP archive of the test run
+    --send-to-smolder ... send the TAP archive to the Parrot Smolder server
+HELP
+.end
+
+.sub '_parse_opts' :anon
+    .param pmc argv
+    load_bytecode 'Getopt/Obj.pbc'
+    $P0 = new ['Getopt';'Obj']
+    $P0.'notOptStop'(1)
+    push $P0, 'gc-debug'
+    push $P0, 'core-tests'
+    push $P0, 'runcore-tests'
+    push $P0, 'code-tests'
+    push $P0, 'run-exec'
+    push $P0, 'archive'
+    push $P0, 'send-to-smolder'
+    push $P0, 'help|h'
+    $P1 = $P0.'get_options'(argv)
+    .return ($P1)
+.end
+
+.sub 'do' :anon
+    .param pmc opts
+    .param pmc files
+    set_test_prog_args(opts)
+    load_bytecode 'TAP/Harness.pbc'
+    .local pmc options, env, harness, aggregate
+    options = new 'Hash'
+    env = new 'Env'
+    $I0 = exists env['HARNESS_VERBOSE']
+    unless $I0 goto L1
+    $S0 = env['HARNESS_VERBOSE']
+    options['verbosity'] = $S0
+  L1:
+    $I0 = exists opts['archive']
+    if $I0 goto L2
+    harness = new ['TAP';'Harness']
+    options['directives'] = 1
+    goto L3
+  L2:
+    harness = new ['TAP';'Harness';'Archive']
+    harness.'archive'('parrot_test_run.tar.gz')
+    options['merge'] = 1
+    .local pmc env_data
+    env_data = collect_test_environment_data()
+    harness.'extra_props'(env_data)
+    $P0 = split ' ', 'myconfig config_lib.pir'
+    harness.'extra_files'($P0)
+  L3:
+    harness.'process_args'(options)
+    $P0 = _get_tests(opts, files)
+    aggregate = harness.'runtests'($P0)
+    $I0 = exists opts['send-to-smolder']
+    unless $I0 goto L4
+    .tailcall send_archive_to_smolder(env_data)
+  L4:
+    $I0 = aggregate.'all_passed'()
+    $I0 = not $I0
+    exit $I0
+.end
+
+.sub 'set_test_prog_args' :anon
+    .param pmc opts
+    $S0 = ''
+    $I0 = exists opts['gc-debug']
+    unless $I0 goto L1
+    $S0 .= ' --gc-debug'
+  L1:
+    $I0 = exists opts['run-exec']
+    unless $I0 goto L2
+    $S0 .= ' --run-exec'
+  L2:
+    $S0 = substr $S0, 1
+    $P0 = new 'Env'
+    $P0['TEST_PROG_ARGS'] = $S0
+.end
+
+.sub '_get_tests' :anon
+    .param pmc opts
+    .param pmc files
+    .local int nb
+    $I0 = opts['code-tests']
+    unless $I0 goto L1
+    .const string developing_tests = 't/distro/file_metadata.t t/codingstd/*.t'
+    files = glob(developing_tests)
+    goto L2
+  L1:
+    nb = elements files
+    unless nb == 0 goto L2
+    files = _get_common_tests(opts)
+  L2:
+    nb = elements files
+    # currently, FixedStringArray hasn't the method sort.
+    # see TT #1356
+    $P0 = new 'FixedPMCArray'
+    set $P0, nb
+    $I0 = 0
+    $P1 = iter files
+  L3:
+    unless $P1 goto L4
+    $S0 = shift $P1
+    $P2 = split "\\", $S0
+    $S0 = join "/", $P2
+    $P2 = box $S0
+    $P0[$I0] = $P2
+    inc $I0
+    goto L3
+  L4:
+    $P0.'sort'()
+    .return ($P0)
+.end
+
+.sub '_get_common_tests' :anon
+    .param pmc opts
+    .const string runcore_tests = <<'TEST'
+t/compilers/imcc/*/*.t
+t/op/*.t
+t/pmc/*.t
+t/oo/*.t
+t/native_pbc/*.t
+t/dynpmc/*.t
+t/dynoplibs/*.t
+TEST
+    .const string core_tests = <<'TEST'
+t/src/*.t
+t/run/*.t
+t/perl/*.t
+TEST
+    .const string library_tests = <<'TEST'
+t/compilers/pct/*.t
+t/compilers/pge/*.t
+t/compilers/pge/p5regex/*.t
+t/compilers/pge/perl6regex/*.t
+t/compilers/tge/*.t
+t/library/*.t
+t/tools/*.t
+t/profiling/*.t
+TEST
+    .const string configure_tests = <<'TEST'
+t/configure/*.t
+t/steps/*.t
+t/postconfigure/*.t
+TEST
+    $S0 = runcore_tests
+    $I0 = exists opts['runcore-tests']
+    if $I0 goto L1
+    $S0 .= core_tests
+    $I0 = exists opts['core-tests']
+    if $I0 goto L1
+    $S0 .= library_tests
+    $S0 .= configure_tests
+  L1:
+    $P0 = split "\n", $S0
+    $S0 = join ' ', $P0
+    $P0 = glob($S0)
+    .return ($P0)
+.end
+
+.include 'iglobals.pasm'
+
+.sub 'collect_test_environment_data' :anon
+    .local pmc config, env
+    $P0 = getinterp
+    config = $P0[.IGLOBALS_CONFIG_HASH]
+    env = new 'Env'
+    $P0 = new 'Hash'
+    .local string arch
+    arch = config['cpuarch']
+    $P0['Architecture'] = arch
+    $S0 = _get_compiler_version(config)
+    $P0['Compiler'] = $S0
+    .local string devel
+    devel = config['DEVEL']
+    $P0['DEVEL'] = devel
+    .local string optimize
+    optimize = 'none'
+    $I0 = exists config['optimize']
+    unless $I0 goto L1
+    optimize = config['optimize']
+  L1:
+    $P0['Optimize'] = optimize
+    .local string osname
+    osname = config['osname']
+    $P0['Platform'] = osname
+    .local string version
+    version = config['VERSION']
+    $P0['Version'] = version
+    .local string submitter
+    submitter = _get_submitter(config, env)
+    $P0['Submitter'] = submitter
+    _add_subversion_info($P0)
+    .return ($P0)
+.end
+
+.sub '_get_compiler_version' :anon
+    .param pmc config
+    $S0 = config['cc']
+    $I0 = index $S0, 'gcc'
+    unless $I0 >= 0 goto L1
+    $I0 = exists config['gccversion']
+    unless $I0 goto L1
+    $S0 .= ' '
+    $S1 = config['gccversion']
+    $S0 .= $S1
+    .return ($S0)
+  L1:
+    $I0 = index $S0, 'cl'
+    unless $I0 >= 0 goto L2
+    $I0 = exists config['msvcversion']
+    unless $I0 goto L2
+    $S0 .= ' '
+    $S1 = config['msvcversion']
+    $S0 .= $S1
+    .return ($S0)
+  L2:
+    $I0 = exists config['gccversion']
+    unless $I0 goto L3
+    $S0 .= ' (gcc '
+    $S1 = config['gccversion']
+    $S0 .= $S1
+    $S0 .= ')'
+    .return ($S0)
+  L3:
+    $I0 = exists config['msvcversion']
+    unless $I0 goto L4
+    $S0 .= ' (msvc '
+    $S1 = config['msvcversion']
+    $S0 .= $S1
+    $S0 .= ')'
+    .return ($S0)
+  L4:
+    .return ($S0)
+.end
+
+.sub '_get_submitter' :anon
+    .param pmc config
+    .param pmc env
+    $I0 = exists env['SMOLDER_SUBMITTER']
+    unless $I0 goto L1
+    $S0 = env['SMOLDER_SUBMITTER']
+    .return ($S0)
+  L1:
+    .local string me
+    $I0 = exists config['win32']
+    unless $I0 goto L2
+    me = env['USERNAME']
+    goto L3
+  L2:
+    me = env['LOGNAME']
+  L3:
+    $S0 = me . '@unknown'
+    .return ($S0)
+.end
+
+.include 'cclass.pasm'
+
+.sub '_add_subversion_info' :anon
+    .param pmc hash
+    $I0 = file_exists('.svn')
+    unless $I0 goto L1
+    $P0 = new 'FileHandle'
+    $P0.'open'('svn info', 'pr')
+    $S0 = $P0.'readall'()
+    $P0.'close'()
+    $I0 = length $S0
+    $S1 = 'trunk'
+    $I1 = index $S0, '/branches/'
+    unless $I1 >= 0 goto L2
+    $I1 += 10
+    $I2 = find_not_cclass .CCLASS_WHITESPACE, $S0, $I1, $I0
+    $I3 = $I2 - $I1
+    $S1 = substr $S0, $I1, $I3
+  L2:
+    hash['Branch'] = $S1
+    $P0.'open'('svn status', 'pr')
+    $P1 = new 'ResizableStringArray'
+  L3:
+    $S0 = readline $P0
+    if $S0 == '' goto L4
+    $I0 = index $S0, 'M'
+    unless $I0 == 0 goto L3
+    $S0 = chomp($S0)
+    $I0 = length $S0
+    $I0 = find_not_cclass .CCLASS_WHITESPACE, $S0, 2, $I0
+    $S0 = substr $S0, $I0
+    push $P1, $S0
+    goto L3
+  L4:
+    $P0.'close'()
+    $I0 = elements $P1
+    unless $I0 != 0 goto L1
+    $S0 = hash['DEVEL']
+    $S0 .= ' '
+    $S1 = $I0
+    $S0 .= $S1
+    $S0 .= ' mods'
+    hash['DEVEL'] = $S0
+    $S0 = join ' ', $P1
+    hash['Modifications'] = $S0
+  L1:
+    .return (hash)
+.end
+
+.sub 'send_archive_to_smolder' :anon
+    .param pmc env_data
+    load_bytecode 'osutils.pbc'
+    .const string archive = 'parrot_test_run.tar.gz'
+    .const string smolder_url = 'http://smolder.plusthree.com/app/projects/process_add_report/8'
+    .const string username = 'parrot-autobot'
+    .const string password = 'squ at wk'
+    .local pmc config
+    $P0 = getinterp
+    config = $P0[.IGLOBALS_CONFIG_HASH]
+    .local string cmd
+    cmd = "curl -F architecture="
+    $S0 = config['cpuarch']
+    cmd .= $S0
+    cmd .= " -F platform="
+    $S0 = config['osname']
+    cmd .= $S0
+    cmd .= " -F revision="
+    $S0 = config['revision']
+    cmd .= $S0
+    cmd .= " -F tags=\""
+    $S0 = _get_tags(env_data)
+    cmd .= $S0
+    cmd .= "\""
+    cmd .= " -F username="
+    cmd .= username
+    cmd .= " -F password="
+    cmd .= password
+    cmd .= " -F comments=\"EXPERIMENTAL t/harness.pir\""
+    cmd .= " -F report_file=@"
+    cmd .= archive
+    cmd .= " "
+    cmd .= smolder_url
+    .tailcall system(cmd, 1 :named('verbose'))
+.end
+
+.sub '_get_tags' :anon
+    .param pmc env_data
+    $P0 = split ' ', 'Architecture Compiler Platform Version'
+    $P1 = new 'ResizableStringArray'
+  L1:
+    unless $P0 goto L2
+    $S0 = shift $P0
+    $S1 = env_data[$S0]
+    push $P1, $S1
+    goto L1
+  L2:
+    $S0 = join ', ', $P1
+    .return ($S0)
+.end
+
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/runcore_purge/t/library/mime_base64.t
==============================================================================
--- branches/runcore_purge/t/library/mime_base64.t	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/t/library/mime_base64.t	Sat Apr 24 00:51:33 2010	(r45948)
@@ -23,7 +23,7 @@
     load_bytecode 'MIME/Base64.pbc'
     load_bytecode 'PGE.pbc'
     load_bytecode 'PGE/Util.pbc'
-    load_bytecode 'compilers/json/JSON.pbc'
+    load_language 'data_json'
 
     .local pmc plan, is, ok
     plan = get_hll_global [ 'Test'; 'More' ], 'plan'
@@ -32,11 +32,11 @@
 
     plan(550)
 
-    .local pmc JSON
-    JSON = compreg "JSON"
+    .local pmc json
+    json = compreg 'data_json'
 
     .local pmc encode_decode_tests, decode_tests
-    encode_decode_tests = JSON( <<'END_JSON' )
+    encode_decode_tests = json.'compile'( <<'END_JSON' )
 [ ["Hello, World!\n","SGVsbG8sIFdvcmxkIQo="],
   ["\u0000","AA=="],
   ["\u0001","AQ=="],
@@ -310,7 +310,7 @@
 ]
 END_JSON
 
-    decode_tests = JSON( <<'END_JSON' )
+    decode_tests = json.'compile'( <<'END_JSON' )
 [ ["YWE=","aa"],
   [" YWE=","aa"],
   ["Y WE=","aa"],
@@ -333,6 +333,7 @@
     .local pmc test_iterator, test_case
     .local string plain, base64, comment, comment_cnt
 
+    encode_decode_tests = encode_decode_tests()
     test_iterator = iter encode_decode_tests
     enc_dec_loop:
         unless test_iterator goto enc_dec_loop_end
@@ -351,6 +352,7 @@
     goto enc_dec_loop
     enc_dec_loop_end:
 
+    decode_tests = decode_tests()
     test_iterator = iter decode_tests
     dec_loop:
         unless test_iterator goto dec_loop_end

Modified: branches/runcore_purge/t/library/pcre.t
==============================================================================
--- branches/runcore_purge/t/library/pcre.t	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/t/library/pcre.t	Sat Apr 24 00:51:33 2010	(r45948)
@@ -26,7 +26,7 @@
 
 # if we keep pcre, we need a config test
 my $cmd = ( $^O =~ /MSWin32/ ) ? "pcregrep --version" : "pcre-config --version";
-my $has_pcre = !Parrot::Test::run_command( $cmd, STDERR => File::Spec->devnull, );
+my $has_pcre = !Parrot::Test::run_command( $cmd, STDOUT => File::Spec->devnull ,STDERR => File::Spec->devnull, );
 my $pcre_libpath = '';
 
 # It's possible that libpcre is installed in some non-standard path...

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

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

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

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

Modified: branches/runcore_purge/t/op/00ff-unix.t
==============================================================================
--- branches/runcore_purge/t/op/00ff-unix.t	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/t/op/00ff-unix.t	Sat Apr 24 00:51:33 2010	(r45948)
@@ -26,7 +26,7 @@
 .sub test_fileformat_unix
     lives_ok( <<'CODE', 'fileformat unix' )
 .sub main
-    print "testing\n"
+    print "# testing\n"
 .end
 CODE
 .end

Modified: branches/runcore_purge/t/op/fetch.t
==============================================================================
--- branches/runcore_purge/t/op/fetch.t	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/t/op/fetch.t	Sat Apr 24 00:51:33 2010	(r45948)
@@ -28,7 +28,6 @@
 .end
 
 .sub 'test_fetch_keyed_int'
-    diag( 'test_fetch_keyed_int' )
     $P0    = new [ 'Hash' ]
     $P1    = box 111
     $P0[1] = $P1
@@ -48,7 +47,6 @@
 .end
 
 .sub 'test_fetch_keyed_str'
-    diag( 'test_fetch_keyed_str' )
     $P0          = new [ 'Hash' ]
     $P1          = box 111
     $P0['one']   = $P1
@@ -68,7 +66,6 @@
 .end
 
 .sub 'test_fetch_keyed_pmc'
-    diag( 'test_fetch_keyed_pmc' )
     $P0          = new [ 'Hash' ]
     $P1          = box 111
 

Modified: branches/runcore_purge/t/op/gc-leaky.t
==============================================================================
--- branches/runcore_purge/t/op/gc-leaky.t	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/t/op/gc-leaky.t	Sat Apr 24 00:51:33 2010	(r45948)
@@ -48,7 +48,7 @@
         if counter > 1e6 goto done
         goto loop
     done:
-        say ""
+        diag("")
         $I1 = interpinfo.INTERPINFO_GC_COLLECT_RUNS
         $I2 = interpinfo.INTERPINFO_GC_MARK_RUNS
 

Modified: branches/runcore_purge/t/op/gc.t
==============================================================================
--- branches/runcore_purge/t/op/gc.t	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/t/op/gc.t	Sat Apr 24 00:51:33 2010	(r45948)
@@ -508,7 +508,6 @@
 
 # coro context and invalid return continuations
 # this is a stripped down version of imcc/t/syn/pcc_16
-# s. also src/pmc/retcontinuation.pmc
 
 .sub coro_context_ret_continuation
     .const 'Sub' $P0 = "co1"

Modified: branches/runcore_purge/t/op/string.t
==============================================================================
--- branches/runcore_purge/t/op/string.t	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/t/op/string.t	Sat Apr 24 00:51:33 2010	(r45948)
@@ -19,7 +19,7 @@
 .sub main :main
     .include 'test_more.pir'
 
-    plan(412)
+    plan(399)
 
     set_s_s_sc()
     test_clone()
@@ -27,7 +27,6 @@
     test_length_i_s()
     zero_length_substr()
     chopn_with_clone()
-    chopn_with_set()
     chopn_oob_values()
     three_argument_chopn()
     three_argument_chopn__oob_values()
@@ -40,6 +39,7 @@
     five_arg_substr_w_rep_eq_length()
     five_arg_substr_w_replacement_gt_length()
     five_arg_substr_w_replacement_lt_length()
+    five_arg_substr_vs_hash()
     five_arg_substr__offset_at_end_of_string()
     exception_five_arg_substr__offset_past_end_of_string()
     five_arg_substr_neg_offset_repl_eq_length()
@@ -122,10 +122,8 @@
     correct_precision_for_sprintf_x()
     test_exchange()
     test_find_encoding()
-    test_string_encoding()
     test_assign()
     assign_and_globber()
-    assign_and_globber_2()
     bands_null_string()
     bands_2()
     bands_3()
@@ -141,8 +139,6 @@
     bnots_null_string()
     bnots_2()
     bnots_cow()
-    transcode_to_utf8()
-    string_chartype()
     split_on_empty_string()
     split_on_non_empty_string()
     test_join()
@@ -237,20 +233,6 @@
     is( $S3, "JAPHxyzw", '' )
 .end
 
-.sub chopn_with_set
-    set $S4, "JAPHxyzw"
-    set $S5, "japhXYZW"
-    set     $S3, $S4
-    set $I1, 4
-    chopn   $S4, 3
-    chopn   $S4, 1
-    chopn   $S5, $I1
-
-    is( $S4, "JAPH", '' )
-    is( $S5, "japh", '' )
-    is( $S3, "JAPH", '' )
-.end
-
 .sub chopn_oob_values
     set $S1, "A string of length 21"
     chopn   $S1, 0
@@ -292,10 +274,6 @@
     set     $S3, $S1
     chopn   $S2, $S1, 3
     is( $S3, "Parrot", '' )
-
-    set     $S3, $S1
-    chopn   $S1, 3
-    is( $S3, "Par", '' )
 .end
 #
 .sub three_argument_chopn__oob_values
@@ -427,6 +405,18 @@
     is( $S2, "", '' )
 .end
 
+.sub five_arg_substr_vs_hash
+    # Check that string hashval properly updated.
+    .local pmc hash
+    hash = new ['Hash']
+    $S0 = "fooo"
+    hash[$S0]   = 1
+    hash["foo"] = 42
+    $S0 = replace $S0, 1, 1, ''
+    $S1 = hash[$S0]
+    is( $S1, '42', 'substr behave it self')
+.end
+
 .sub exception_five_arg_substr__offset_past_end_of_string
     set $S0, "abcdefghijk"
     set $S1, "xyz"
@@ -434,7 +424,7 @@
     substr $S2, $S0, 12, 3, $S1
     ok(0,"no exception")
 handler:
-    .exception_is( "Can only replace inside string or index after end of string" )
+    .exception_is( "Cannot take substr outside string" )
 .end
 
 .sub five_arg_substr_neg_offset_repl_eq_length
@@ -471,7 +461,7 @@
     substr $S2, $S0, -12, 4, $S1
     ok(0,"no exception")
 handler:
-    .exception_is( "Can only replace inside string or index after end of string" )
+    .exception_is( "Cannot take substr outside string" )
 .end
 
 .sub five_arg_substr_length_gt_strlen
@@ -495,9 +485,10 @@
 .sub four_arg_replacement_only_substr
     set $S0, "abcdefghijk"
     set $S1, "xyz"
-    substr $S0, 3, 3, $S1
-    is( $S0, "abcxyzghijk", '' )
+    $S2 = replace $S0, 3, 3, $S1
+    is( $S0, "abcdefghijk", '' )
     is( $S1, "xyz", '' )
+    is( $S2, "abcxyzghijk", '' )
 .end
 
 .sub three_arg_substr
@@ -1477,34 +1468,6 @@
     # is( $I0, "3", 'find_encoding' )
 .end
 
-.sub test_string_encoding
-    skip(4, "no more visible encoding" )
-    # set $I0, 0
-    # new $S0, 0, $I0
-    # string_encoding $I1, $S0
-    # eq $I0, $I1, OK1
-    # print "not "
-    # OK1:  print "ok 1\n"
-    # set $I0, 1
-    # new $S0, 0, $I0
-    # string_encoding $I1, $S0
-    # eq $I0, $I1, OK2
-    # print "not "
-    # OK2:  print "ok 2\n"
-    # set $I0, 2
-    # new $S0, 0, $I0
-    # string_encoding $I1, $S0
-    # eq $I0, $I1, OK3
-    # print "not "
-    # OK3:  print "ok 3\n"
-    # set $I0, 3
-    # new $S0, 0, $I0
-    # string_encoding $I1, $S0
-    # eq $I0, $I1, OK4
-    # print "not "
-    # OK4:  print "ok 4\n"
-.end
-
 .sub test_assign
     set $S4, "JAPH"
     assign  $S5, $S4
@@ -1520,14 +1483,6 @@
     is( $S5, "JAPH", 'assign & globber' )
 .end
 
-.sub assign_and_globber_2
-    set $S4, "JAPH"
-    set     $S5, $S4
-    assign  $S4, "Parrot"
-    is( $S4, "Parrot", 'assign & globber 2' )
-    is( $S5, "Parrot", 'assign & globber 2' )
-.end
-
 .sub bands_null_string
     null $S1
     set $S2, "abc"
@@ -1768,25 +1723,6 @@
     is( $S2, "foo", 'bnots COW' )
 .end
 
-.sub transcode_to_utf8
-    skip( 2, "no more transcode" )
-    # set $S1, "ASCII is the same as UTF8\n"
-    # find_encoding $I1, "utf8"
-    # transcode $S2, $S1, $I1
-    # is( $S1, "ASCII is the same as UTF8", 'transcode to utf8' )
-    # is( $S2, "ASCII is the same as UTF8", 'transcode to utf8' )
-.end
-
-.sub string_chartype
-    skip( 1, "no more chartype" )
-
-    # set $S0, "Test String"
-    # find_chartype $I0, "usascii"
-    # set_chartype $S0, $I0
-    # string_chartype $I1, $S0
-    # is( $I0, $I1, 'string_chartype' )
-.end
-
 .sub split_on_empty_string
     split $P1, "", ""
     set $I1, $P1
@@ -1865,19 +1801,6 @@
   OK1:
     ok($I99, 'eq_addr/ne_addr')
 
-    set $S1, "Test"
-    set $I99, 0
-    eq_addr $S1, $S0, BAD2
-      set $I99, 1
-  BAD2:
-    ok($I99, 'eq_addr/ne_addr')
-
-    set $I99, 1
-    ne_addr $S1, $S0, OK3
-      set $I99, 0
-  OK3:
-    ok($I99, 'eq_addr/ne_addr')
-
     set $S0, $S1
     set $I99, 0
     ne_addr $S1, $S0, BAD4

Modified: branches/runcore_purge/t/op/vivify.t
==============================================================================
--- branches/runcore_purge/t/op/vivify.t	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/t/op/vivify.t	Sat Apr 24 00:51:33 2010	(r45948)
@@ -28,7 +28,6 @@
 .end
 
 .sub 'test_vivify_keyed_int'
-    diag( 'test_vivify_keyed_int' )
     $P0    = new [ 'Hash' ]
     $P1    = box 111
     $P0[1] = $P1
@@ -56,7 +55,6 @@
 .end
 
 .sub 'test_vivify_keyed_str'
-    diag( 'test_vivify_keyed_str' )
     $P0          = new [ 'Hash' ]
     $P1          = box 111
     $P0['one']   = $P1
@@ -84,7 +82,6 @@
 .end
 
 .sub 'test_vivify_keyed_pmc'
-    diag( 'test_vivify_keyed_pmc' )
     $P0          = new [ 'Hash' ]
     $P1          = box 111
 

Modified: branches/runcore_purge/t/pmc/bigint.t
==============================================================================
--- branches/runcore_purge/t/pmc/bigint.t	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/t/pmc/bigint.t	Sat Apr 24 00:51:33 2010	(r45948)
@@ -51,7 +51,7 @@
     $P2 = $P1['gmp']
     $I1 = isnull $P2
     if $I1, NoLibGMP
-    say 'This Parrot uses GMP'
+    say '# This Parrot uses GMP'
 
     # check version is >= 4.1.4
     $P0 = new ['BigInt']
@@ -70,18 +70,18 @@
     lt $I2, 4, OldLibGMP
 
 Config2:
-    print 'Suitable GMP version ['
+    print '# Suitable GMP version ['
     print $S3
     say '] available'
     goto ret
 
 NoLibGMP:
-    say 'No BigInt Lib configured'
+    say '# No BigInt Lib configured'
     skip(34)
     exit 0
 
 OldLibGMP:
-    print 'Buggy GMP version ['
+    print '# Buggy GMP version ['
     print $S3
     say '] with huge digit multiply - please upgrade'
     skip(34)
@@ -567,7 +567,7 @@
     goto esz
 
 esz:
-    print 'Using '
+    print '# Using '
     $I0 = mul $I0, 8
     print $I0
     print '-bit Integers ['

Modified: branches/runcore_purge/t/pmc/namespace.t
==============================================================================
--- branches/runcore_purge/t/pmc/namespace.t	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/t/pmc/namespace.t	Sat Apr 24 00:51:33 2010	(r45948)
@@ -282,7 +282,7 @@
     $I0 = isnull $P0
     is($I0, 0, "Find Sub in an ISO-8859-1 NameSpace looked up by a Unicode name")
     $S0 = $P0()
-    say $S0
+    diag($S0)
     is($S0, iso-8859-1:"Fran\x{E7}ois", "ISO-8859 NameSpace with Unicode name")
     goto end_test8
   eh8:

Deleted: branches/runcore_purge/t/pmc/retcontinuation.t
==============================================================================
--- branches/runcore_purge/t/pmc/retcontinuation.t	Sat Apr 24 00:51:33 2010	(r45947)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,32 +0,0 @@
-#! parrot
-# Copyright (C) 2006-2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/pmc/retcontinuation.t - test the RetContinuation PMC
-
-=head1 SYNOPSIS
-
-    % prove t/pmc/retcontinuation.t
-
-=head1 DESCRIPTION
-
-Tests the RetContinuation PMC.
-
-=cut
-
-.sub main :main
-    .include 'test_more.pir'
-
-    plan(1)
-
-    new $P0, ['RetContinuation']
-    ok(1, 'Instantiated a RetContinuation PMC')
-.end
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/runcore_purge/t/pmc/string.t
==============================================================================
--- branches/runcore_purge/t/pmc/string.t	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/t/pmc/string.t	Sat Apr 24 00:51:33 2010	(r45948)
@@ -20,14 +20,13 @@
 .sub main :main
     .include 'test_more.pir'
 
-    plan(173)
+    plan(171)
 
     set_or_get_strings()
     setting_integers()
     setting_numbers()
     ensure_that_concat_ppp_copies_strings()
     ensure_that_concat_pps_copies_strings()
-    setting_string_references()
     assigning_string_copies()
     test_repeat()
     test_repeat_without_creating_dest_pmc()
@@ -203,16 +202,6 @@
     is( $P0, 'fnarghGrunties', 'concat success' )
 .end
 
-.sub setting_string_references
-    new $P0, ['String']
-    set $S0, "C2H5OH + 10H20"
-    set $P0, $S0
-    chopn $S0, 8
-
-    is( $S0, 'C2H5OH', 'removed last 8 from string' )
-    is( $P0, 'C2H5OH', '...and the PMC still reference $S0' )
-.end
-
 .sub assigning_string_copies
     new $P0, ['String']
     set $S0, "C2H5OH + 10H20"

Copied: branches/runcore_purge/t/steps/auto/zlib-01.t (from r45947, trunk/t/steps/auto/zlib-01.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/runcore_purge/t/steps/auto/zlib-01.t	Sat Apr 24 00:51:33 2010	(r45948, copy of r45947, trunk/t/steps/auto/zlib-01.t)
@@ -0,0 +1,176 @@
+#! perl
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
+use Test::More tests =>  24;
+use Carp;
+use lib qw( lib t/configure/testlib );
+use_ok('config::auto::zlib');
+use Parrot::Configure::Options qw( process_options );
+use Parrot::Configure::Step::Test;
+use Parrot::Configure::Test qw(
+    test_step_constructor_and_description
+);
+use IO::CaptureOutput qw( capture );
+
+########## --without-zlib ##########
+
+my ($args, $step_list_ref) = process_options(
+    {
+        argv => [ q{--without-zlib} ],
+        mode => q{configure},
+    }
+);
+
+my $conf = Parrot::Configure::Step::Test->new;
+$conf->include_config_results( $args );
+
+my $pkg = q{auto::zlib};
+
+$conf->add_steps($pkg);
+
+my $serialized = $conf->pcfreeze();
+
+$conf->options->set( %{$args} );
+my $step = test_step_constructor_and_description($conf);
+my $ret = $step->runstep($conf);
+ok( $ret, "runstep() returned true value" );
+is($conf->data->get('has_zlib'), 0,
+    "Got expected value for 'has_zlib'");
+is($step->result(), q{no}, "Expected result was set");
+
+$conf->replenish($serialized);
+
+########## _select_lib() ##########
+
+($args, $step_list_ref) = process_options( {
+    argv => [ ],
+    mode => q{configure},
+} );
+$conf->options->set( %{$args} );
+$step = test_step_constructor_and_description($conf);
+# Mock different OS/compiler combinations.
+my ($osname, $cc, $initial_libs);
+$initial_libs = $conf->data->get('libs');
+$osname = 'mswin32';
+$cc = 'gcc';
+is($step->_select_lib( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_nongcc    => 'zlib.lib',
+    default         => '-lz',
+} ),
+   '-lz',
+   "_select_lib() returned expected value");
+
+$osname = 'mswin32';
+$cc = 'cc';
+is($step->_select_lib( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_nongcc    => 'zlib.lib',
+    default         => '-lz',
+} ),
+   'zlib.lib',
+   "_select_lib() returned expected value");
+
+$osname = 'foobar';
+$cc = 'cc';
+is($step->_select_lib( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_nongcc    => 'zlib.lib',
+    default         => '-lz',
+} ),
+   '-lz',
+   "_select_lib() returned expected value");
+
+my $verbose = undef;
+
+$conf->replenish($serialized);
+
+########## --without-zlib; _evaluate_cc_run() ##########
+
+($args, $step_list_ref) = process_options( {
+    argv => [ q{--without-zlib} ],
+    mode => q{configure},
+} );
+$conf->options->set( %{$args} );
+$step = test_step_constructor_and_description($conf);
+my ($test, $has_zlib);
+$test = qq{1.2.3\n};
+$has_zlib = 0;
+$verbose = undef;
+$has_zlib = $step->_evaluate_cc_run($conf, $test, $has_zlib, $verbose);
+is($has_zlib, 1, "'has_zlib' set as expected");
+is($step->result(), 'yes, 1.2.3', "Expected result was set");
+# Prepare for next test
+$step->set_result(undef);
+
+$test = qq{foobar};
+$has_zlib = 0;
+$verbose = undef;
+$has_zlib = $step->_evaluate_cc_run($conf, $test, $has_zlib, $verbose);
+is($has_zlib, 0, "'has_zlib' set as expected");
+ok(! defined $step->result(), "Result is undefined, as expected");
+
+{
+    my $stdout;
+    $test = qq{1.2.3\n};
+    $has_zlib = 0;
+    $verbose = 1;
+    capture(
+        sub { $has_zlib =
+            $step->_evaluate_cc_run($conf, $test, $has_zlib, $verbose); },
+        \$stdout,
+    );
+    is($has_zlib, 1, "'has_zlib' set as expected");
+    is($step->result(), 'yes, 1.2.3', "Expected result was set");
+    like($stdout, qr/\(yes\)/, "Got expected verbose output");
+    # Prepare for next test
+    $step->set_result(undef);
+}
+
+pass("Completed all tests in $0");
+
+################### DOCUMENTATION ###################
+
+=head1 NAME
+
+auto/zlib-01.t - test auto::zlib
+
+=head1 SYNOPSIS
+
+    % prove t/steps/auto/zlib-01.t
+
+=head1 DESCRIPTION
+
+The files in this directory test functionality used by F<Configure.pl>.
+
+The tests in this file test auto::zlib.
+
+=head1 HISTORY
+
+Mostly taken from F<t/steps/auto/gdbm-01.t>.
+
+=head1 AUTHOR
+
+Francois Perrad
+
+=head1 SEE ALSO
+
+config::auto::zlib, F<Configure.pl>.
+
+=cut
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/runcore_purge/tools/dev/checkdepend.pl
==============================================================================
--- branches/runcore_purge/tools/dev/checkdepend.pl	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/tools/dev/checkdepend.pl	Sat Apr 24 00:51:33 2010	(r45948)
@@ -85,6 +85,11 @@
 
         diag "couldn't find $include, included from $file";
     }
+    # always require an explicit .o -> .c dep. This is lazy and not always
+    # needed. However, missing it when it is needed causes pain.
+    if ($file =~ /\.c$/) {
+        push @{$deps{$file}}, $file;
+    }
 }
 
 foreach my $file (sort grep /\.pir$/, @incfiles) {
@@ -267,7 +272,7 @@
         $rule_deps        = join "\n", sort split /\s+/, $rule_deps;
         my $expected_deps = join "\n", sort (get_deps($file));
 
-        eq_or_diff_text($rule_deps, $expected_deps, "$file has correct dependencies $extra_info.", {context => 0});
+        eq_or_diff_text($rule_deps, $expected_deps, "$file $extra_info.", {context => 0});
     }
 }
 

Modified: branches/runcore_purge/tools/dev/mk_manifest_and_skip.pl
==============================================================================
--- branches/runcore_purge/tools/dev/mk_manifest_and_skip.pl	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/tools/dev/mk_manifest_and_skip.pl	Sat Apr 24 00:51:33 2010	(r45948)
@@ -38,9 +38,12 @@
 
 =head1 DESCRIPTION
 
-Recreates MANIFEST and MANIFEST.SKIP from the subversion properties
-and the output of C<svn status>. .
-So far tested with svn 1.2.0 and svn 1.4.2.
+Recreates MANIFEST and MANIFEST.SKIP from the output of C<svn status> and the subversion properties. Run this script after SVN has been told about new or deleted files and before you commit to the repository. So far tested with svn 1.2.0, 1.4.2 and 1.6.6.
+
+    svn add PATH...
+    svn delete PATH...
+    perl tools/dev/mk_manifest_and_skip.pl
+    svn commit -m ... [PATH...]
 
 This won't work for git-svn.
 

Modified: branches/runcore_purge/tools/dev/nci_thunk_gen.pir
==============================================================================
--- branches/runcore_purge/tools/dev/nci_thunk_gen.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/tools/dev/nci_thunk_gen.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -918,7 +918,7 @@
 
     # decode table
     .local pmc compiler
-    load_bytecode 'data_json.pbc'
+    load_language 'data_json'
     compiler = compreg 'data_json'
 
     .local pmc table

Modified: branches/runcore_purge/tools/dev/pbc_to_exe.pir
==============================================================================
--- branches/runcore_purge/tools/dev/pbc_to_exe.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/tools/dev/pbc_to_exe.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -217,9 +217,12 @@
     .local pmc ifh
     ifh = open infile, 'r'
     unless ifh goto err_infile
-    .local string codestring
+
+    .local pmc codestring
     .local int size
-    codestring = "const Parrot_UInt1 program_code[] = {"
+
+    codestring = new [ 'ResizableStringArray' ]
+    push codestring, "const Parrot_UInt1 program_code[] = {"
     size = 0
 
   read_loop:
@@ -236,13 +239,13 @@
     unless pos < pbclength goto code_done
     $I0 = ord pbcstring, pos
     $S0 = $I0
-    codestring .= $S0
-    codestring .= ','
+    push codestring, $S0
+    push codestring, ','
     inc pos
     inc size
     $I0 = size % 32
     unless $I0 == 0 goto code_loop
-    codestring .= "\n"
+    push codestring, "\n"
     goto code_loop
   code_done:
     goto read_loop
@@ -250,19 +253,19 @@
   read_done:
     close ifh
 
-    codestring .= "\n};\n\n"
-    codestring .= "const int bytecode_size = "
+    push codestring, "\n};\n\nconst int bytecode_size = "
     $S0 = size
-    codestring .= $S0
-    codestring .= ";\n"
-    codestring .= <<'END_OF_FUNCTION'
+    push codestring, $S0
+    push codestring, ";\n"
+    push codestring, <<'END_OF_FUNCTION'
         const void * get_program_code(void)
         {
             return program_code;
         }
 END_OF_FUNCTION
 
-    .return (codestring)
+    $S0 = join '', codestring
+    .return ($S0)
 
   err_infile:
     die "cannot open infile"
@@ -307,10 +310,13 @@
     .local pmc encoding_table
     encoding_table = 'generate_encoding_table'()
 
-    .local string codestring
+    .local pmc codestring
     .local int size
-    codestring = "const char * program_code =\n"
-    codestring .= '"'
+
+    codestring = new ['ResizableStringArray']
+
+    push codestring, "const char * program_code =\n"
+    push codestring, '"'
     size = 0
 
   read_loop:
@@ -327,14 +333,14 @@
     unless pos < pbclength goto code_done
     $I0 = ord pbcstring, pos
     $S0 = encoding_table[$I0]
-    codestring .= $S0
+    push codestring, $S0
     inc pos
     inc size
     $I0 = size % 32
     unless $I0 == 0 goto code_loop
-    codestring .= '"'
-    codestring .= "\n"
-    codestring .= '"'
+    push codestring, '"'
+    push codestring, "\n"
+    push codestring, '"'
     goto code_loop
   code_done:
     goto read_loop
@@ -342,21 +348,22 @@
   read_done:
     close ifh
 
-    codestring .= '"'
-    codestring .= "\n;\n\n"
-    codestring .= "const int bytecode_size = "
+    push codestring, '"'
+    push codestring, "\n;\n\n"
+    push codestring, "const int bytecode_size = "
     $S0 = size
-    codestring .= $S0
-    codestring .= ";\n"
+    push codestring, $S0
+    push codestring, ";\n"
 
-    codestring .= <<'END_OF_FUNCTION'
+    push codestring, <<'END_OF_FUNCTION'
         const void * get_program_code(void)
         {
             return program_code;
         }
 END_OF_FUNCTION
 
-    .return (codestring)
+    $S0 = join '', codestring
+    .return ($S0)
 
   err_infile:
     die "cannot open infile"
@@ -437,17 +444,16 @@
     pbc_size = $P2[7]
 
 
-    .local string codestring
-    codestring  = ''
-    codestring .= '#include <windows.h>'
-    codestring .= "\n"
-    codestring .= rc_constant_defines
-    codestring .= "const unsigned int bytecode_size = "
+    .local pmc codestring
+    codestring  = new [ 'ResizableStringArray' ]
+    push codestring, "#include <windows.h>\n"
+    push codestring, rc_constant_defines
+    push codestring, "const unsigned int bytecode_size = "
     $S0 = pbc_size
-    codestring .= $S0
-    codestring .= ";\n"
+    push codestring, $S0
+    push codestring, ";\n"
 
-    codestring .= <<'END_OF_FUNCTION'
+    push codestring, <<'END_OF_FUNCTION'
         const void * get_program_code(void)
         {
             HRSRC   hResource;
@@ -489,9 +495,10 @@
     unless status goto rc_ok
 
     die "RC command failed"
-  rc_ok:
 
-    .return (codestring)
+  rc_ok:
+    $S0 = join '', codestring
+    .return ($S0)
 
   err_h_open:
     die "cannot open .h file"

Modified: branches/runcore_purge/tools/dev/tapir.pir
==============================================================================
--- branches/runcore_purge/tools/dev/tapir.pir	Fri Apr 23 23:15:12 2010	(r45947)
+++ branches/runcore_purge/tools/dev/tapir.pir	Sat Apr 24 00:51:33 2010	(r45948)
@@ -107,27 +107,26 @@
 
 .sub '_parse_opts' :anon
     .param pmc argv
-    .local pmc getopts, opts
     load_bytecode 'Getopt/Obj.pbc'
-    getopts = new ['Getopt';'Obj']
-    getopts.'notOptStop'(1)
-    push getopts, 'exec|e:s'
-    push getopts, 'archive|a:s'
-    push getopts, 'verbose|v'
-    push getopts, 'quiet|q'
-    push getopts, 'QUIET|Q'
-    push getopts, 'normalize'
-    push getopts, 'failures|f'
-    push getopts, 'comments|o'
-    push getopts, 'directives'
-    push getopts, 'ignore-exit'
-    push getopts, 'reverse'
-    push getopts, 'merge|m'
-    push getopts, 'shuffle|s'
-    push getopts, 'version|V'
-    push getopts, 'help|h'
-    opts = getopts.'get_options'(argv)
-    .return(opts)
+    $P0 = new ['Getopt';'Obj']
+    $P0.'notOptStop'(1)
+    push $P0, 'exec|e:s'
+    push $P0, 'archive|a:s'
+    push $P0, 'verbose|v'
+    push $P0, 'quiet|q'
+    push $P0, 'QUIET|Q'
+    push $P0, 'normalize'
+    push $P0, 'failures|f'
+    push $P0, 'comments|o'
+    push $P0, 'directives'
+    push $P0, 'ignore-exit'
+    push $P0, 'reverse'
+    push $P0, 'merge|m'
+    push $P0, 'shuffle|s'
+    push $P0, 'version|V'
+    push $P0, 'help|h'
+    $P1 = $P0.'get_options'(argv)
+    .return ($P1)
 .end
 
 .sub 'do' :anon


More information about the parrot-commits mailing list